前言
线性表
中,数据元素仅有线性关系,每个数据元素只有一个前驱,一个后继。树形结构
中,数据元素有着明显的层次关系,
上一层的数据元素可能和下一层多个元素(孩子结点)直接相关;
下一层的数据元素却只能和上一层中的一个元素(双亲结点)直接相关。图形结构
中,结点之间的关系是任意的,任意两个元素之间都可能相关。
常用 定义和术语
-
顶点:图中的每一个数据元素。(图又可以叫做顶点集)
-
弧:V 是
顶点的有穷非空集合
;VR 是两个顶点的关系集合
。若 < v, w > ∈ VR,则 < v, w > 表示从 v 到 w 的一条弧
。
弧尾:< v, w > 表示从 v 到 w 的一条弧v ----------> w
,v 称为弧尾 / 初始点
。
弧头:< v, w > 表示从 v 到 w 的一条弧v ----------> w
,w 称为弧头 / 终端点
。 -
有向图:图中的顶点关系都是有方向的关系,此时的图称为有向图。
有向图
由顶点集
和弧集
构成。 -
无向图:若 < v, w > ∈ VR,必然有 < w, v > ∈ VR,即 VR 是对称的,则以
无序对 (v, w)
代替这两个有序对
,此时的图称为无向图。无向图
由顶点集
和边集
构成。 -
边:无向图中,每一个无序对,构成一条边。
-
上图 G1 是
有向图
。
V1 = { v1 , v2 , v3 , v4 }
VR1 = { <v1 , v2 > , < v1 , v3 > , < v3 , v4 > , < v4 , v1 > }
G1 = ( V1 , { VR1 } ) -
上图 G2 是
无向图
V2 = { v1 , v2 , v3 , v4 , v5 }
VR2 = { <v1 , v2 > , < v1 , v4 > , < v2 , v3 > , < v2 , v5 > , < v3 , v4 > , < v3 , v5 > }
G2 = ( V2 , { VR2 } ) -
完全图 & 有向完全图(任意两个顶点之间都有边 / 弧)
一个图中,有 n 个顶点,e 条边 / 弧,在不考虑顶点到自身的弧 / 边时,即对任意的 vi ≠ vj , 必然存在 < vi , vj > ∈ VR。
对于无向图
来说,e 的取值范围是 0 到 n(n-1) / 2 。具有 n(n-1) / 2 条边的无向图
称为完全图。
对于有向图
来说,e 的取值范围是 0 到 n(n-1)。具有 n(n-1) 条弧的有向图
称为有向完全图。 -
稀疏图:边 / 弧 很少的图,边数 v< n * log n
稠密图:边 / 弧 很多的图 -
有向网:弧上带有权的图。
无向网:边上带有权的图。 -
子图
假设有两个图,
G = ( V , { VR } )
G ’ = ( V ’ , { VR ’ } )
若 V ‘ ⊆ V 且 VR ’ ⊆ VR,
则称 G ‘ 为 G 的子图
。
示例,如下
-
邻接点:对于无向图 G = ( V , { VR } ) 来说,若边 ( v , v ’ ) ∈ VR,则称顶点 v 和 v’ 互为邻接点。
-
依附:对于无向图 G = ( V , { VR } ) 来说,若边 ( v , v ’ ) ∈ VR,则称
边 ( v , v ' )
依附于顶点 v 和 v '
,或者说 边 ( v , v ’ ) 与 v ,v ’ 相关联 -
顶点的度:
对于无向图
:和某个顶点 v 相关联的边的数目,记作 TD( V )
对于有向图
:以顶点 v 为弧头
的弧的数目称为顶点 v 的入度
,记作 ID( v );以顶点 v 为弧尾
的弧的数目称为 v 的出度
,记作 OD( v ) ,此时 顶点 v 的度 TD( v ) = ID( v ) + OD( v ) -
若顶点 vi 的度记作 TD(Vi) ,那么一个有 n 个顶点,e 条边 / 弧的图,满足如下关系
e = Σ TD(Vi) / 2 -
路径:图中
一个顶点
到另一个顶点
的顶点序列。
有向图的路径是有向的,无向图的路径是无向的。
路径的长度:路径上的 边 / 弧 的数目。 -
回路 / 环:
第一个顶点
和最后一个顶点
相同的路径。 -
简单路径:序列中顶点不重复出现的路径。
-
简单回路 / 简单环:除了第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路。
-
连通:对于
无向图
G,从顶点 v 到 顶点 v ‘ 有路径,则称 v 和 v ’ 是连通的。 -
连通图:
无向图
中,任意两个顶点都是连通的。 -
连通分量:无向图中的极大连通子图。如下 G3 是非连通图,但它有 3 个连通分量。
-
非连通图都可以看作是若干个连通分量构成。
-
强连通图:对于
有向图
,任意两个顶点之间都存在双向路径
,则称 G 是强连通图。
强连通分量:对于有向图
,有向图中的极大强连通子图
称作有向图的强连通分量。 -
连通图的生成树 / 极小连通子图
是一个连通图的极小连通子图,包含图中全部的n
个顶点,但只有n-1
条边。
在生成树上添加一条边,必定构成一个环,因为这条边使得它依附的那两个顶点之间有了第二条路径.
一个有 n 个顶点的生成树有且仅有 n-1 条边。小于则一定是非连通图
,大于则一定有环
,等于也不一定就是生成树。 -
有向树:一个有向图只有一个顶点的入度为 0 ,其余顶点的入度均为 1 ,那么这个图就是棵有向树。
-
生成森林:一个有向图的生成森林由若干棵有向树组成,含有图中全部顶点,但只有足以构成若干棵不相交的有向树的弧。如下图
-
在图中,
顶点位置
和邻接点位置
是一个相对的概念。
图中的顶点不存在全序的关系
,即无法将全部顶点排成一个线性序列
,任何一个顶点都可以看成是第一个顶点。
顶点再图中的位置
指的是 该顶点在人为的随意排列
中的位置或者序号。