图是一种较线性表和树更加复杂的数据结构。线性表只是简单的线性关系,前驱后继的。树形结构就层次关系,只能和上一层一个元素相关。简单的理解就是,线性表是一对一关系,树形结构是一对多关系,而图则是多对多,如人与人之间的关系。
图是一种数学模型,并非抽象的图像概念,只是把这种G(V,E)展示为图的样子。所以不能靠眼睛去看,要靠数学和逻辑工具去分析。

图的相关定义(术语)

图的定义

图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
在图中的数据元素,我们则称之为顶点
线性表中,相邻的数据元素之间具有线性关系;树形结构中,相邻两层的结点具有层次关系;图中,任意两个顶点之间都可能有关系,顶点之间的逻辑关系用边来表示,边集可以是空的

无向边:顶点vi到vj之间的边没有方向。
无向边用带括号的无序偶对(vi,vj)表示,也可以写成(vj,vi)。

无向图:图中的任意两个顶点之间的边都是无向边。

clipboard.png

上图的无向图G1,可以表示成:G1=(V1,{E1}),其中顶点集合V1={A,B,C,D};边集合E1={(A,B),(B,C)(C,D),(D,A),(A,C)}

有向边:顶点vi到vj的边有方向。 也称为弧(Arc)。在有向图,一般称为弧,不叫边,用于清楚地交流。
有向边用带尖括号的有序偶对<vi,vj>来表示。其中vi称为弧尾(Tail),vj称为弧头(Head)。注意不能写成<vj,vi>,这与<vi,vj>表示的边不同。
有向图:图中任意两个顶点之间都是有向边。

clipboard.png

上图的有向图G2,可以表示成:G2=(V2,{E2}),其中顶点集合V2={A,B,C,D};弧集合E2={(A,D),(B,A)(C,A),(B,C)}

简单图:在图中,如果不存在顶点到其自身的边,且同一条边不重复出现。
所以有向图存在弧<A,B>和弧<B,A>也是简单图

无向完全图:在无向图中,任意两个顶点之间都存在边。此时边的数量公式为:n(n-1)/2
有向完全图:在有向图中,任意两个顶点之间都存在方向互为相反的两条弧。此时弧的数量公式为:n(n-1)

具有n个顶点和e条边的图,存在这样的边界:
无向图:0<=e<=n(n-1)/2
有向图:0<=e<=n(n-1)

稀疏图:相对来说,并不量化的定义,有很少条边或弧的图。
稠密图:与稀疏图相对应。

子图(Subgraph):假设两个图G=(V,{E})和G'=(V',{E'}),如果集合V'⊆V,且集合E'⊆E,则称G'是G的子图。

带权图的定义

权(Weigh):与图的边或弧相关的数。
网(Network):带权的图。

边与顶点关系的定义

在无向图G=(V,{E})里顶点v、v'和边(v,v')∈E之间有以下关系:
从顶点v和v'角度来看边:

顶点v和v'互为邻接点(Adjacent),也可以说v和v'相邻接。

从边(v,v')角度看顶点:

边(v,v')依附于顶点v和v',也可以说(v,v')与顶点v和v'相关联。依附(incident)

顶点的度

顶点v的度(Degree):是和v相关联的边的数目,记作:TD(v)
有以下公式,图中边的个数时各个顶点度数之和的一半:
e=1/2∑TD(vi)

在有向图G=(V,{E})里顶点v、v'和边<v,v'>∈E之间有以下关系:
从顶点v和v'角度来看边:

顶点v邻接到顶点v',顶点v'邻接自顶点v。

从边<v,v'>角度看顶点:

边<v,v'>与顶点v和v'相关联。

顶点v的入度(InDegree):以顶点v为头的弧的数目,记作:ID(v)
顶点v的出度(OutDegree):以顶点v为尾的弧的数目,记作:OD(v)
顶点v的度(InDegree):TD(v)=ID(v)+OD(v)
有以下公式,图中边的个数时各个顶点度数之和的一半:
e=∑ID(vi)=∑OD(vi)

路径的定义

路径(Path):图中从顶点v到v'的顶点序列。

树中根结点到任意结点的路径是唯一的,但是图中顶点与顶点之间的路径却是不唯一的。

路径长度:路径上的边或弧的数目。

回路(Cycle):路径中第一个顶点到最后一个顶都是同一个顶点。
简单路径:路径中不存在重复出现顶点。
简单回路:除了第一个顶点和最后一个顶点,路径中不存在重复出现顶点,也称简单环

连通图的定义

v和v'是连通的:说明顶点v到顶点v'有路径。
连通图(connected graph):任意两个顶点vi、vj∈E,且vi和vj都是连通的。  

连通分量(Connected Component):无向图G的极大连通子图

任何连通图的连通分量只有一个,即是其自身,非连通的无向图有多个连通分量。

连通分量这个概念可以拆分为四个含义(这四个含义它们之间是且的关系):
1.要是子图
2.子图是连通图
3.子图含有极大顶点
4.incident于这些极大顶点的所有边    

注:极大并非最大,可以理解为数学中求函数的极大值和最大值  

强连通图在有向图G中,如果对于每一对vi、vj∈V且vi≠vj,从vi到vj和从vj到vi都存在路径的这种有向图。
强连通分量有向图中的极大强连通子图。

连通图生成树

连通图 G的一个子图是一棵包含G 的所有顶点的树,则该子图称为G的生成树(SpanningTree)。生成树是连通图的包含图中的所有顶点的极小连通子图。即生成树包含图中的全部的n个顶点,但只有足以构成一棵树的n-1条边。
图的生成树不惟一。从不同的顶点出发进行遍历,可以得到不同的生成树。
有向树:邮箱图中一顶点入度为0其余顶点入度为1.
森林:由若干棵有向树构成的有向图


电脑杂技集团
208 声望32 粉丝

这家伙好像很懂计算机~