5.1 基本概念

1. 图

图(Graph)是由节点和边组成的,如图5.1和图5.2所示,图中的节点常称为顶点。


图5.2 无向图 <span class=

图中的顶点表示具有相同特征的数据元素,是对现实世界事物的一种抽象。所有的顶点组成了一个顶点的集合,记作 ​ V ,一般不为空。图中的边表示顶点(数据元素)之间的关系,如果两个顶点具有相邻关系,则在这两个顶点之间就存在一条边。所有的边组成了一个边的集合,记作 ​ E 。一个图 ​ G 可以定义为 ​ G = (V, E)

2. 有向图和弧

在图5.1中,​ G_1 是一个有向图,即图中的每条边都有方向。在有向图中,若从顶点 ​ v_i 到顶点 ​ v_j 有一条直接连线,则称顶点 ​ v_i 到顶点 ​ v_j 有一条弧,记作 ​ \langle v_i, v_j \rangle 。其中,弧的始点 ​ v_i 称为弧尾,在图中是不带箭头的一端;弧的终点 ​ v_j 称为弧头,在图中是带箭头的一端。有向图 ​ G_1 表示如下:

​ G_1 = (V, E)

其中 ​ V = \{ v_1, v_2, v_3, v_4, v_5 \}

​ E = \{ \langle v_1, v_2 \rangle, \langle v_1, v_5 \rangle, \langle v_2, v_3 \rangle, \langle v_3, v_4 \rangle, \langle v_3, v_5 \rangle, \langle v_4, v_1 \rangle, \langle v_4, v_2 \rangle \}

3. 有向完全图

对于一个有向图,如果图中任意两个顶点之间都有方向互为相反的两条弧相连接,那么称这样的有向图为有向完全图。在一个包含 ​ n 个顶点的有向完全图中,共有 ​ n(n-1) 条弧。

4. 无向图和边

在图5.2中,​ G_2 是一个无向图,即图中的每条边都没有方向。在无向图中,若从顶点 ​ v_i 到顶点 ​ v_j 有一条直接连线,则称这条连线为这两个顶点之间的一条边,记作 ​ (v_i, v_j) ,表示顶点 ​ v_i 和顶点 ​ v_j 互为邻接点。无向图 ​ G_2 表示如下:

​ G_2 = (V, E)

其中 ​ V = \{ v_1, v_2, v_3, v_4, v_5, v_6 \}

​ E = \{ (v_1, v_2), (v_1, v_3), (v_1, v_4), (v_2, v_4), (v_3, v_5), (v_3, v_6), (v_5, v_6) \}

5. 无向完全图

对于一个无向图,如果图中任意两个顶点都有一条直接边相连接,那么称这样的无向图为无向完全图。可以证明,在一个包含 ​ n 个顶点的无向完全图中,共有 ​ \frac{n(n-1)}{2} 条边。

6. 顶点的度

对无向图而言,顶点的度指的是依附于该顶点的边的个数,即与该顶点相邻接的顶点个数。

例如,在无向图 ​ G_2 中,顶点 ​ v_1 的度为 3,顶点 ​ v_5 的度为 2。对有向图而言,顶点的度为其出度和入度之和,其中出度定义为以该顶点为弧尾的弧的个数,入度定义为以该顶点为弧头的弧的个数。例如,在有向图 ​ G_1 中,顶点 ​ v_1 的度为 3,其中出度为 2,入度为 1;顶点 ​ v_5 的度为 2,其中出度为 0,入度为 2。

7. 权和网

在图中,与边有关联的数据信息称为权值。在实际应用中,权值都是有一定意义的数值。

例如,可以用图表示旅游交通信息,其中描述城市之间距离的数值就是图中边上的权值。边上带权的图称为网,根据图是无向图还是有向图,带权的图又可以分为无向网和有向网。

8. 路径和回路

在有向图中,如果存在顶点序列 ​ \{ v_0, v_1, \ldots, v_k \} ,从顶点 ​ v_0 到顶点 ​ v_k 之间都有弧存在,即 ​ \langle v_0, v_1 \rangle, \langle v_1, v_2 \rangle, \ldots, \langle v_{k-1}, v_k \rangle 分别是图中的弧,那么这个顶点序列 ​ \{ v_0, v_1, \ldots, v_k \} 为从顶点 ​ v_0 到顶点 ​ v_k 的一条有向路径,该序列路径中弧的数目称为路径长度。在无向图中,如果存在顶点序列 ​ \{ v_0, v_1, \ldots, v_k \} ,从顶点 ​ v_0 到顶点 ​ v_k 之间都有边存在,即 ​ (v_0, v_1), (v_1, v_2), \ldots, (v_{k-1}, v_k) 分别是图中的边,那么这个顶点序列 ​ \{ v_0, v_1, \ldots, v_k \} 为从顶点 ​ v_0 到顶点 ​ v_k 的一条无向路径,路径长度为 ​ k

若路径中的顶点都不相同,即顶点不重复出现,称这种路径为简单路径。如果 ​ v_0 ​ v_k 是同一个顶点,则表示该路径是一条从某个顶点出发又回到自身的路径,称这种路径为回路或环。在回路中,如果除了第一个顶点与最后一个顶点之外,其他的顶点不重复出现,称这种回路为简单回路,或者简单环。例如,在有向图 ​ G_1 中,顶点序列 ​ \{ v_1, v_2, v_3, v_5 \} 是一条路径长度为 3 的简单路径,顶点序列 ​ \{ v_1, v_2, v_3, v_4, v_1 \} 是一条长度为 4 的简单回路。在无向图 ​ G_2 中,顶点序列 ​ \{ v_1, v_3, v_5, v_6 \} 是一条长度为 3 的无向路径,顶点序列 ​ \{ v_1, v_2, v_4, v_1 \} 是一条长度为 3 的简单回路。

9. 子图

假设有两个图 ​ G = (V, E) ​ G' = (V', E') ,若 ​ V' ​ V 的子集,​ E' ​ E 的子集,则称图 ​ G' ​ G 的一个子图。图5.3示出了 ​ G_1 ​ G_2 的子图 ​ G' ​ G''
图5.3 <span class=

10. 连通图和连通分量

在无向图中,如果从一个顶点 ​ v_i 到另一个顶点 ​ v_j ​ i \neq j )之间有一条无向路径,则称顶点 ​ v_i ​ v_j 是连通的。如果任意的两个顶点之间都是连通的,则称该无向图为连通图;否则称为非连通图。非连通图中的每个极大连通子图称为该无向图的连通分量。例如,图5.3(b)中有两个连通分量,如图5.4所示。
图5.4 图5.3(b)的两个连通分量

11. 强连通图和强连通分量

在有向图中,若图中任意一对顶点 ​ v_i ​ v_j ​ i \neq j )之间均有从顶点 ​ v_i 到顶点 ​ v_j 的一条有向路径,也有从 ​ v_j ​ v_i 的一条有向路径,则称该有向图是强连通图;否则称为非强连通图。非强连通的有向图的极大强连通子图称为该有向图的强连通分量。例如,图5.3(a)中有两个强连通分量,分别是 ​ \{ v_1, v_2, v_3, v_4 \} ​ \{ v_5 \} ,如图5.5所示。
图5.5 图5.3(a)的两个强连通分量

12. 生成树

假设连通图 ​ G 中有 ​ n 个顶点,则连通图 ​ G 的生成树是该图的一个极小连通子图,它必定包含且仅包含 ​ G ​ n-1 条边。例如,图5.6所示为无向图 ​ G_2 的一棵生成树。
如果在生成树中添加任意一条属于原无向图的边,则必定会产生回路,因为新添加的边使其所依附的两个顶点之间有了第二条路径。如果在生成树中减少任意一条边,则该生成树必然成为非连通的。

13. 生成森林

对于非连通图,对其每个连通分量都可以得到一个极小连通子图,即一棵生成树。由非连通图的所有连通分量的生成树组成的森林,就称为该非连通图的生成森林。