第九章 有向图
9.1 有向图及其连通性
有向图的概念与性质
有向图
一个有向图 DD (digraph) 是指一个三元组 (V(D),E(D),фD)(V(D), E(D), ф_D). 其中, V(D)V(D) 是非空的顶点集合, E(D)E(D) 是不与 V(D)V(D) 相交的边集合, 而 фDф_D 是关联函数, 它使 DD 的每条边对应 DD 的有序顶点对 (不必相异).
弧
如果 ee 是 DD 的一条边, 而 uu 与 vv 是使得 фD(u,v)=eф_D(u,v)=e 的顶点, 那么称 ee 是由 uu 连接到 vv, 记为 e=(u,v)e=(u,v). 同时, 称 uu 为 ee 的弧尾 (起点, tail), vv 为 ee 的弧头 (终点, head).
注: 有向图可以简单地理解为 “边有方向的图”.
平行边 重数
在一个有向图 DD 中, 具有相同起点和终点的边称为平行边 (multiple edge). 两点间平行边的条数称为该两点间的重数 (multiplicity).
简单有向图
在一个有向图 DD 中, 如果没有有向自环和平行边, 则称该图为简单有向图 (simple digraph).
有向图的基础图, 无向图的定向图
设 DD 是有向图, 去掉 DD 中边的方向后得到的无向图 GG, 称为 DD 的基础图.
又若 GG 是无向图, 给 GG 的每条边加上方向后得到的有向图 DD 称为 GG 的一个定向图 (oriented graph).
例
一个简单图有多少个定向图?
解: 因为每条边有 22 种定向方式, 所以共有 2m(G)2^{m(G)} 种定向.
出度 d+(v)d^+(v), 入度 d−(v)d^-(v), 度 d(v)d(v)
设 DD 是有向图, vv 是 DD 中顶点.
以 vv 为始点的边的条数称为点 vv 的出度 (out-degree), 以 vv 为端点的一个自环算 11 度. 点 vv 的出度记为 d+(v)d^+(v);
以 vv 为终点的边的条数称为点 vv 的入度 (in-degree), 以 vv 为端点的一个自环算 11 度. 点 vv 的入度记为 d−(v)d^−(v);
点 vv 的出度与入度之和称为点 vv 的度, 记为 d(v)d(v).
例
求证: 存在一个 GG 的定向图 DD, 使得对 ∀v∈V(D)∀v∈V(D), 有 ∣d+(v)−d−(v)∣≤1|d^+ (v)-d^- (v)|≤1.
证明:
不失一般性, 设 GG 是连通图. GG 中奇度顶点个数必然为偶数个, 将偶数个奇数度顶点配对, 然后在每一对配对顶点间连一条边得到欧拉图 G1G_1.
在 G1G_1 中用 Fleury 算法求出 GG 的一个欧拉环游 CC, 然后顺次地在 CC 上标上方向, 由此得到 CC 的定向图 C1C_1.
在 C1C_1 中, 去掉添加的边后, 得到 GG 的定向图 DD.
显然: 对 ∀v∈V(D)∀v∈V(D), 有 ∣d+(v)−d−(v)∣≤1|d^+ (v)-d^- (v)|≤1.
定理
设 D=(V,E)D=(V, E) 是有向图, 则:
∑v=V(D)d+(v)=∑v∈V(D)d−(v)=m(D)\sum_{v=V(D)}d^+(v)=\sum_{v\in V(D)}d^-(v)=m(D)
证明: 由出度与入度的定义立即可得上面等式.
有向图的矩阵表示
设 D=(V,E)D=(V,E) 是有向图, 其中 V={v1,v2,…,vn},E={e1,e2,…,em}V=\{v_1,v_2, …,v_n\}, E=\{e_1,e_2,…,e_m\}.
邻接矩阵 AA
称 A(D)=(aij)n×nA(D)=(a_{ij})_{n×n} 是 DD 的邻接矩阵, 其中 aija_{ij} 是 viv_i 为起点, vjv_j 为终点的边的条数, 1≤i≤n,1≤j≤n1≤i≤n, 1≤j≤n.
注: 有向图的邻接矩阵不一定对称.
关联矩阵 MM
若 DD 无自环. 称矩阵 M=(mij)n×mM=(m_{ij})_{n×m} 是 DD 的关联矩阵, 其中
mij={1,vi 是 ej 的起点−1,vi 是边 ej 的终点 (1≤i≤n,1≤j≤m)0,其它m_{ij}= \begin{cases} 1, & v_i ~是~ e_j ~的起点\\ -1, & v_i ~是边~ e_j ~的终点~(1≤i≤n,1≤j≤m)\\ 0, & 其它 \end{cases}
关联矩阵 MM 的性质
MMT=D(G)−A(G)MM^T=D(G)−A(G), 其中 DD 是对应无向图的度矩阵, AA 是对应无向图的邻接矩阵.
例
写出下面有向图 D1D_1 的邻接矩阵和 D2D_2 的关联矩阵.
A(D1)=(0100021200000010) M(D2)=(10000−11−1100−1101000−1−1)A(D_1)= \begin{pmatrix} 0&1&0&0 \\ 0&2&1&2 \\ 0&0&0&0 \\ 0&0&1&0 \end{pmatrix} ~~ M(D_2)= \begin{pmatrix} 1&0&0&0&0 \\ -1&1&-1&1&0 \\ 0&-1&1&0&1 \\ 0&0&0&-1&-1 \end{pmatrix}
有向图的连通性
有向途径 (闭途径)、迹 (闭迹) 和路 (圈)
上面概念与无向图中相关概念类似.
有向图中顶点间的连通性
设 D=(V,E)D=(V, E) 是有向图, uu 与 vv 是 DD 中两个顶点.
- 若 DD 中存在一条 (u,v)(u,v) 路, 则称 uu 可达 vv , 记为 u→vu→v . 规定 u→uu→u .
- 若 DD 中存在一条 (u,v)(u,v) 路或 (v,u)(v,u) 路, 则称 uu 与 vv 是单向连通的.
- 若 DD 中存在一条 (u,v)(u,v) 路和一条 (v,u)(v,u) 路, 则称 uu 与 vv 是双向连通的或强连通的 (strongly connected).
★弱连通图, 单向连通图, 强连通图
设 D=(V,E)D=(V,E) 是有向图.
- 若 DD 的基础图是连通的, 称 DD 是弱连通图 (weakly connected);
- 若 DD 的中任意两点是单向连通的, 称 DD 是单向连通图 (unilaterally connected);
- 若 DD 的中任意两点是双向连通的, 称 DD 是强连通图 (strongly connected).
在上面三图中, D1D_1 仅为弱连通图, D2D_2 是单向连通的, 而 D3D_3 是强连通的.
定理
有向图 D=(V,E)D=(V, E) 是强连通的, 当且仅当 DD 中存在包含 DD 中所有顶点的回路.
证明:
“必要性”
设 V(D)={v1,v2,…,vn}V(D)=\{v_1,v_2,…,v_n\}. 由于 DD 是强连通图, 所以, 对任意两点 viv_i 与 vjv_j, 都存在 (vi,vj)(v_i,v_j) 路, 同时也存在 (vj,vi)(v_j,v_i) 路. 所以存在如下闭途径: v1→v2→…→vn→v1v_1→v_2→…→v_n→v_1. 这是一条包含 DD 的所有顶点的回路.
“充分性”
不失一般性, 设 C=v1→v2→…→vn→v1C= v_1→v_2→…→v_n→v_1 是包含 DD 的所有顶点的一条回路. 对于 DD 的任意两点 viv_i 与 vjv_j, 一方面, 由 CC 可得到 viv_i 到 vjv_j 的途径 vi→vi+1→…→vjv_i →v_{i+1} →… →v_j. 另一方面, 由 CC 又可得到 vjv_j 到 viv_i 的途径 vj→vj+1→…vi−1→viv_j →v_{j+1} →…v_{i-1} →v_i. 所以 DD 中任意两点是强连通的, 即 DD 是强连通图.
例
说明下图 DD 是强连通图.
解: v1v5v6v2v4v3v2v4v5v6v2v1v_1v_5v_6v_2v_4v_3v_2v_4v_5v_6v_2v_1 是含 DD 所有顶点的一条回路.
强连通分支, 单向连通分支, 弱连通分支
设 D’D’ 是有向图 D=(V,E)D=(V, E) 的一个子图. 如果 D’D’ 是强连通的 (单向连通的、弱连通的), 且 DD 中不存在真包含 D’D’ 的子图是强连通的 (单向连通的、弱连通的), 则称 D’D’ 是 DD 的一个强连通分支 (单向连通分支、弱连通分支).
例
求下图 DD 的强连通分支、单向连通分支.
(1) DD 的强连通分支
{1}{2,3,9,8,4,7}{5}{6}\{1\} \{2, 3, 9, 8, 4, 7\} \{5\} \{6\}
上面点集导出的子图是 DD 的强连通分支.
(2) DD 的单向连通分支
DD 的单向连通分支就是 DD 本身.
注: 求 DD 的强、弱连通分支比较容易, 求单向分支比较困难.
定理
有向图 D=(V,E)D=(V, E) 的每个点均位于 DD 中唯一的强 (弱) 连通分支中.
证明: 对于弱连通分支情形, 命题结论是显然的.
对于强连通分支情形, 因为不难证明: DD 中顶点间的强连通关系是等价关系. 该等价关系对应的等价类在 DD 中的导出子图必然是 DD 的一个强连通分支. 而 DD 的一个强连通分支包含的顶点也必然是该等价关系的一个等价类.
但是, 对于单向连通分支来说, DD 的某个顶点, 可能会分属于 DD 的若干个单向连通分支. 原因是单向连通关系不是等价关系.
9.2 图的定向问题
图的定向问题是有向图中的一个典型问题之一, 具有广泛的应用背景.
城市交通网设计问题: 一座城市为某种需要, 要把所有街道改为单行道, 使得人们在任意两个位置都可以相互到达. 如何设计单行道方向?图论建模: 街道交叉口模型为图的顶点, 两点连线当且仅当该两点是某街道的端点. 问题等价于在模型图中给出其强连通定向.
对于任意一个无环图 GG, 要对其作强连通定向, 需要解决两个问题: 一是强连通定向的存在性问题, 二是如何定向问题. 上面两个问题都已经得到解决.
定理: 强连通定向的存在性问题
(Robbins, 1939) 非平凡连通图 GG 具有强连通定向当且仅当 GG 是 22 边连通的.
强连通定向算法
该算法采用顶点标号方法给边标上方向. 设 G=(V,E)G=(V, E) 是 22 边连通图.
(1) 在 GG 中任取顶点 ww, 令 l(w)=1,L={w},U=V−{w},A=Φl(w)=1, L=\{w\}, U=V−\{w\}, A=Φ;
(2) 在 LL 中找 l(v)l(v) 最大的点 vv, 同时 vv 在 UU 中存在邻点 uu. 然后作有向边 (v,u)(v, u). 令 l(u)=l(v)+1,L=L∪u,U=U−ul(u)=l(v)+1, L=L∪{u}, U=U−{u} 且 A=A∪(v,u)A=A∪{(v, u)}; (注: 标号从小到大的有向边)
(3) 若 L≠VL≠V, 转 (2); 否则转 (4);
(4) 对剩下的未赋予方向的边, 按由标号值大的顶点指向标号值小的顶点赋予方向.
例
求下图 GG 的强连通定向.
解:
(1) 取点 v1v_1, 令 l(v1)=1,L={v1},U={v2,v3,…,v7},A=Φl(v_1)=1, L=\{v_1\}, U=\{v_2, v_3, …, v_7\}, A=Φ;
(2) 在 UU 中取点 v7v_7, 作边 (v1,v7)(v_1,v_7). 令 l(v7)=l(v1)+1=2l(v_7)=l(v_1)+1=2,
L={v1,v7},U={v2,v3,…,v6},A={(v1,v7)}L =\{v_1,v_7\}, U=\{v_2, v_3,…, v_6\}, A=\{(v_1,v_7)\};
(2) 在 LL 中取 v7v_7, UU 中取点 v6v_6 , 作边 (v7,v6)(v_7, v_6). 令 l(v6)=l(v7)+1=3l(v_6)=l(v_7)+1=3,
L={v1,v7,v6},U={v2,v3,…,v5},A={(v1,v7),(v7,v6)}L =\{v_1, v_7, v_6\}, U=\{v_2, v_3, …, v_5\}, A=\{(v_1,v_7), (v_7,v_6) \};
(2) 在 LL 中取 v6v_6, UU 中取点 v5v_5, 作边 (v6,v5)(v_6, v_5). 令 l(v5)=l(v6)+1=4l(v_5)=l(v_6)+1=4,
L={v1,v7,v6,v5},U={v2,v3,v4},A={(v1,v7),(v7,v6),(v6,v5)}L =\{v_1,v_7,v_6,v_5\}, U=\{v_2,v_3,v_4\}, A=\{(v_1,v_7), (v_7,v_6), (v_6,v_5)\};
(2) 在 LL 中取 v5v_5, UU 中取点 v2v_2 , 作边 (v5,v2)(v_5,v_2). 令 l(v2)=l(v5)+1=5l(v_2)=l(v_5)+1=5,
L={v1,v7,v6,v5,v2},U={v3,v4},A={(v1,v7),(v7,v6),(v6,v5),(v5,v2)}L =\{v_1, v_7, v_6, v_5, v_2\}, U=\{v_3, v_4\}, A=\{(v_1,v_7), (v_7,v_6),(v_6,v_5),(v_5, v_2)\};
(2) 在 LL 中取 v2v_2, UU 中取点 v3v_3, 作边 (v2,v3)(v_2, v_3). 令 l(v3)=l(v2)+1=6l(v_3)=l(v_2)+1=6,
L={v1,v7,v6,v5,v2,v3},U={v4},A={(v1,v7),(v7,v6),(v6,v5),(v5,v2),(v2,v3)}L =\{v_1,v_7,v_6,v_5,v_2,v_3\}, U=\{v_4\}, A=\{(v_1,v_7), (v_7,v_6), (v_6,v_5), (v_5,v_2), (v_2, v_3)\};
(2) 在 LL 中取 v3v_3, UU 中取点 v4v_4, 作边 (v3,v4)(v_3,v_4). 令 l(v4)=l(v3)+1=7l(v_4)=l(v_3)+1=7,
L={v1,v7,v6,v5,v2,v3,v4},U=Φ,A={(v1,v7),(v7,v6),(v6,v5),(v5,v2),(v2,v3),(v3,v4)}L =\{v_1,v_7,v_6,v_5,v_2,v_3,v_4\}, U=Φ, A=\{(v_1,v_7), (v_7,v_6), (v_6,v_5), (v_5,v_2), (v_2,v_3), (v_3,v_4)\};
(3) U=ΦU=Φ, 所以, 由 (4) , 对剩下的边赋予方向.
9.3 有向路与有向圈
定理: 有向圈的存在性
设 D=(V,E)D=(V, E) 是有向图.
(1) 若 DD 中对任意的 v∈V(D)v∈V(D) 均有 d+(v)>0d^+(v)>0 (或 d−(v)>0)d^−(v)>0), 则 DD 中存在有向圈.
(2) 若 DD 连通, 且对任意的 v∈V(D)v∈V(D) 均有 d+(v)=1d^+(v)=1 (或 d−(v)=1d^−(v)=1), 则 DD 中存在唯一有向圈.
定理: 有向欧拉环游的存在性
设 D=(V,E)D=(V, E) 是有向图. DD 中存在有向欧拉环游, 当且仅当 DD 连通且每个点的出度和入度相等;
思考: 有向图 DD 中存在有向欧拉迹的充要条件?
竞赛图
在各种比赛中, 循环赛是常见形式, 即对与对各队之间都要进行比赛. 循环赛的结果可用所谓的 “竞赛图” (tournament) 来表示. 若 uu 队战胜了 vv 队, 则由点 uu 向 vv 画一条有向边.
显然, “竞赛图” 是完全图的一种定向图.
定理
nn 阶完全图的定向方式有 2n(n−1)22^{\frac{n(n-1)}{2}} 种.
从同构的意义上看: 一阶竞赛图有 11 个; 二阶竞赛图有 11 个; 三阶竞赛图有 22 个; 四阶竞赛图有 44 个; 五阶竞赛图有 1212 个. 1212 阶竞赛图超过 15401540 亿个.
定理 (Rédei, 1934)
竞赛图中存在有向 HH 路.
定理 (Camion, 1959)
强连通竞赛图中存在有向 HH 圈.
有向图的相关结论, 可参考 Jørgen Bang-Jensen, Gregory Z. Gutin, Digraphs: Theory, Algorithms and Applications, Springer, London, 2009.