第五章 匹配与因子分解
5.1 匹配
图的匹配相关概念
★匹配
如果 MM 是图 GG 的边子集 (不含自环), 且 MM 中的任意两条边没有共同顶点, 则称 MM 是 GG 的一个匹配 (matching) (或对集, 边独立集) .
M1=v6v7M_1={v_6v_7};
M2=v6v7,v1v8M_2={v_6v_7, v_1v_8};
M3=v6v7,v1v8,v3v4M_3={v_6v_7, v_1v_8, v_3v_4}.
M1,M2,M3M_1, M_2, M_3 等都是 GG 的匹配.
饱和点, 非饱和点
如果 GG 中顶点 vv 是 GG 的匹配 MM 中某条边的端点, 称它为 MM 饱和 (saturated) 点, 否则为 MM 非饱和 (unsaturated/exposed) 点.
★极大匹配, 最大匹配, 完美匹配
如果不能通过加边使得匹配 MM 增大, 称 MM 是图 GG 的极大匹配 (maximal matching);
如果 MM 是图 GG 的包含边数最多的匹配, 称 MM 是 GG 的一个最大匹配 (maximum matching);
特别地, 若最大匹配饱和了 GG 的所有顶点, 称它为 GG 的一个完美匹配 (perfect matching).
注:
(1) 极大匹配不一定是最大匹配, 最大匹配一定是极大匹配;
(2) 最大匹配不一定是完美匹配, 完美匹配一定是最大匹配.
MM 交错路, MM 增广路
如果 MM 是图 GG 的匹配, GG 中一条由 MM 中的边和非 MM 中的边交错形成的路, 称为 GG 中的一条 MM 交错路 (MM alternating path).
特别地, 若 MM 交错路的起点与终点是 MM 非饱和点, 称这种 MM 交错路为 MM 增广路 (MM augmenting path) 或 MM 可扩路.
注: 一条边不论是不是匹配边都是 MM 交错路.
例如在下图中:
设 M={v7v8,v3v4}M=\{v_7v_8,v_3v_4\}, 则: 路 v6v7v8v3v4v_6v_7v_8v_3v_4 与 v1v7v8v2v_1v_7v_8v_2 都是 MM 交错路. 其中后者是 MM 增广路.
注: 一条边不论是不是匹配边 (如v7v8v_7v_8) 都是 MM 交错路.
Berge 定理
(Berge, 1957) GG 的匹配 MM 是最大匹配, 当且仅当 GG 不包含 MM 增广路.
注: Berge 定理给我们提供了迭代扩大 GG 的匹配的思路(算法).
证明:
“必要性”
(反证) 若 GG 包含一条 MM 增广路 PP, 则可令该增广路为: P=v0v1v2⋯v2kv2k+1P=v_0 v_1 v_2⋯v_{2k} v_{2k+1}.
显然, PP 中 MM 中的边比非 MM 中的边少一条. 于是作新的匹配 M1M_1, 它当中的边由 PP 中非 MM 中边组成. M1M_1 中边比 MM 中多一条, 这与 MM 是 GG 的最大匹配矛盾.
“充分性”
(反证) 若 MM 不是最大匹配, 设 M1M_1 是 GG 的一个最大匹配, 则 ∣M1∣>∣M∣|M_1|>|M|.
令 H=M1△MH = M_1\bigtriangleup M.
HH 中边导出图的每个分支是 (考虑由 M1△MM_1\bigtriangleup M 导出的子图):
- 由 M1M_1 与 MM 中边交替组成的偶长圈 (为什么不是奇圈?); 或
- 由 M1M_1 与 MM 中边交替组成的路.
在每个偶圈中, M1M_1 与 MM 中边数相等; 但因 ∣M1∣>∣M∣|M_1|>|M|, 所以, 至少有一条路 PP, 其起点和终点都是 MM 非饱和点, 于是, 它是 GG 的一条 MM 可扩路. 这与条件矛盾.
5.2 二部图的匹配与覆盖
(1)在日常生活和工程技术中, 常常需求二部图的匹配.
(2)理论研究中, 二部图是一种结构相对简单的图类.
★例: 偶图匹配问题
有 7 名研究生 A, B, C, D, E, F, G 毕业寻找工作. 就业处提供的公开职位是: 会计师(a) , 咨询师(b), 编辑(c), 程序员(d), 记者(e), 秘书(f)和教师(g). 每名学生申请的职位如下:
- A: b, c;
- B: a, b, d, f, g;
- C: b, e;
- D: b, c, e;
- E: a, c, d, f;
- F: c, e;
- G: d, e, f, g
问: 学生能找到理想工作吗?
解: 如果令X={A, B, C, D, E, F, G}, Y={a, b, c, d, e, f, g}, X中顶点与Y中顶点连线当且仅当学生申请了该工作. 于是, 得到反映学生和职位之间的状态图:
问题转化为求饱和X每个顶点的一个匹配!
由后文可知:
当 SS 取 XX 中四元点集时, 若取 S={A,C,D,F}S=\{A,C,D,F\}, 则有 3=∣N(S)∣<∣S∣=43=|N(S)|<|S|=4.
所以, 不存在饱和 XX 每个顶点的匹配.
需要解决的问题是: (1) 匹配是否存在? (2) 如何求出匹配?
二部图匹配存在性判定 - Hall 定理
★Hall 定理
设 G=(X,Y)G=(X, Y) 是二部图, 则 GG 存在饱和 XX 每个顶点的匹配的充要条件是: 对 ∀S⊆X∀S⊆X, 有 ∣N(S)∣≥∣S∣|N(S)|≥|S|. (N(S)N(S) 表示 SS 的邻点的集合)
注: SS 是 XX 的任意子集, 故 SS 可以为空集.
例
在下面二部图中, 是否存在饱和 X={A,B,C,D,E,F,G}X=\{A, B, C, D, E, F, G\} 的每个顶点的匹配?
解:
(1) 当 SS 取 XX 中单点时, 容易验证: ∣N(S)∣>∣S∣|N(S)|>|S|.
(2) 当 SS 取 XX 中二元点集时, 容易验证: ∣N(S)∣≥∣S∣|N(S)| ≥ |S|.
(3) 当 SS 取 XX 中三元点集时, 容易验证: ∣N(S)∣≥∣S∣|N(S)| ≥ |S|.
(4) 当 SS 取 XX 中四元点集时, 若取 S={A,C,D,F}S=\{A, C, D, F\}, 则有 3=∣N(S)∣<∣S∣=43=|N(S)|<|S|=4.
所以, 不存在饱和 XX 每个顶点的匹配.
Hall 定理的证明
“必要性”
如果 GG 存在饱和 XX 每个顶点的匹配, 由匹配的定义, XX 的每个顶点在 YY 中至少有一个邻点, 所以: 对 ∀S⊆X∀S⊆X, 有 ∣N(S)∣≥∣S∣|N(S)|≥|S|.
“充分性”
(反证) 若 GG 是满足条件的二部图, 但不存在饱和 XX 每个顶点的匹配.
令 M∗M^* 是 GG 的一个最大匹配, 但不饱和 XX 的顶点 uu.
又令 ZZ 是以 uu 为起点的所有 M∗M^* 交错路上点的集合.
因 M∗M^* 是最大匹配, 所以 uu 是所有交错路上唯一的未饱和点.
令 S=X∩ZS=X∩Z, T=Z∩YT=Z∩Y.
显然, S−uS−{u} 中点与 TT 中点在 M∗M^* 下配对, 即: ∣T∣=∣S∣−1<∣S∣|T| = |S|−1< |S|.
即: ∣N(S)∣=∣T∣=∣S∣−1<∣S∣|N(S)|=|T|=|S|−1<|S|, 与条件矛盾.
注:
- 对等部二部图来说, Hall定理也称为“婚姻定理”.
r个女孩和r个男孩构成的人群中, 熟识的男女之间可能出现r对婚姻的充要条件是, 对每个整数k(1≤ k ≤ r), 任意k个女孩共认识至少k个男孩(Frobenius[1849-1917]于1917年首先证明, Cayley-Hamilton 定理的第一个完整证明也是由Frobenius给出).- Hall定理是在二部图中求最大匹配算法的理论基础, 即匈牙利算法的基础.
- Hall (1904-1982) 英国人, 20世纪最伟大的数学家之一. 主要功绩是在代数学领域. 婚姻定理是他1935年在剑桥大学做讲师时发表的结果.
推论
若 GG 是 kk 正则二部图 (k>0k>0), 则 GG 存在完美匹配.
证明: 一方面, 由于 GG 是 kk (k>0k>0) 正则二部图, 所以 k∣X∣=k∣Y∣k|X|=k|Y|, 于是得 ∣X∣=∣Y∣|X| = |Y|;
另一方面, 对于 XX 的任一非空子集 SS, 设 E1E_1 与 E2E_2 分别是与 SS 和 N(S)N(S) 关联的边集, 显然有: E1⊆E2E_1⊆E_2,
即:∣E1∣=k∣S∣≤∣E2∣=k∣N(S)∣|E_1 |=k|S|≤|E_2 |=k|N(S)|,
由 Hall 定理, 存在饱和 XX 每个点的匹配. 又 ∣X∣=∣Y∣|X| = |Y|, 所以 GG 存在完美匹配.
例
证明: 每个 kk 方体都有完美匹配 (kk 大于等于 22).
证法一: 证明每个 kk 方体都是 kk 正则二部图.
事实上, 由 kk 方体的构造: kk 方体有 2k2^k 个顶点, 每个顶点可以用长度为 kk 的二进制码来表示, 两个顶点连线当且仅当代表两个顶点的二进制码只有一位坐标不同.
如果我们划分 kk 方体的 2k2^k 个顶点, 把坐标之和为偶数的顶点归入 XX, 否则归入 YY. 显然, XX 中顶点互不邻接, YY 中顶点也如此. 所以 kk 方体是二部图.
kk 方体的每个顶点度数为 kk, 所以 kk 方体是 kk 正则二部图.
由推论: kk 方体存在完美匹配.
证法二: 直接在 kk 方体中找出完美匹配.
设 kk 方体顶点二进制码为 (x1,x2,…,xk)(x_1, x_2, …, x_k), 我们取 (0,x2,…,xk)(0, x_2, …, x_k), 和 (1,x2,…,xk)(1, x_2, …, x_k) 之间的全体边所成之集为 MM.
显然, MM 中的边均不相邻接, 所以构成 kk 方体的匹配, 又容易知道: ∣M∣=2k−1|M|=2^{k−1}. 所以 MM 是完美匹配.
思考题
(1) 33 方体图中不同完美匹配的个数; 99
(2) Petersen 图中不同完美匹配的个数. 66
例
求 K2nK_{2n} 和 Kn,nK_{n,n} 中不同的完美匹配的个数.
解: 我们用归纳法求 K2nK_{2n} 和 Kn,nK_{n,n} 中不同的完美匹配的个数.
K2nK_{2n} 的任意一个顶点有 2n−12n−1 种不同的方法被匹配. 所以 K2nK_{2n} 的不同完美匹配个数等于 (2n−1)K2n−2(2n−1)K_{2n−2}, 如此推下去, 可以归纳出 K2nK_{2n} 的不同完美匹配个数为: (2n−1)!!(2n−1)!!.
同样的推导方法可归纳出 Kn,nK_{n,n} 的不同完美匹配个数为: n!n!.
例
证明树至多存在一个完美匹配.
证明: 若不然, 设 M1M_1 与 M2M_2 是树 TT 的两个不同的完美匹配, 那么 M1ΔM2≠ΦM_1ΔM_2≠Φ, 容易知道: T[M1ΔM2]T[M_1ΔM_2] 每个非空部分顶点度数为 22, 即它存在圈, 于是推出 TT 中有圈, 矛盾.
图的点覆盖概念与性质
点覆盖
GG 的一个顶点子集 KK 称为 GG 的一个点覆盖 (vertex cover), 如果 GG 的每条边都至少有一个端点在 KK 中.
覆盖数 β(G)β(G)
GG 的一个包含点数最少的点覆盖称为 GG 的最小点覆盖, 其包含的点数称为 GG 的覆盖数, 记为 β(G)β(G).
定理
设 MM 是 GG 的匹配, KK 是 GG 的点覆盖, 若 ∣M∣=∣K∣|M|=|K|, 则 MM 是最大匹配, 而 KK 是最小点覆盖.
证明: 设 M∗M^* 与 K∗K^* 分别是 GG 的最大匹配和最小点覆盖.
由匹配和点覆盖定义有: ∣M∗∣≤∣K∗∣|M^*| ≤ |K^*| (最小点覆盖至少要在每个匹配中包含一个点). 所以, 有:
∣M∣≤∣M∗∣≤∣K∗∣≤∣K∣|M| ≤ |M^*| ≤ |K^*| ≤ |K|
所以, 当 ∣M∣=∣K∣|M|=|K| 时, 有 ∣M∣=∣M∗∣,∣K∗∣=∣K∣|M|=|M^*|, |K^*|= |K|.
即 MM 是最大匹配, 而 GG 是最小覆盖.
二部图的点覆盖与二部图匹配间的关系 - König 定理
判定一般图的点覆盖数是否不超过给定整数 kk 的问题是 NP-完全的(one of Karp’s 21 NP-complete problems, 1972)
★König 定理
(König,Egerváry,1931) 在二部图中, 最大匹配的边数等于最小点覆盖的顶点数.
证明: 设 G=(X,Y)G=(X,Y) 是二部图, M∗M^* 和 K∗K^* 分别是 GG 的最大匹配和最小点覆盖. 显然有, ∣M∗∣≤∣K∗∣|M^*| ≤ |K^*|.
UU 表示 XX 中 M∗M^* 非饱和点集. ZZ 表示由 UU 中的顶点出发的所有 M∗M^* 交错路上的点作成的集合. 且令 S=Z∩X,T=Z∩YS=Z∩X, T=Z∩Y.
由 M∗M^* 的最大性, TT 中点是 M∗M^* 饱和的, 且 N(S)=TN(S)=T.
由于 UU 是 XX 中所有未饱和的点, X\SX\backslash S 中的点都是 M∗M^* 饱和的.
现在, 令 K∗=(X−S)∪TK^*=(X-S)∪T. 可以断言: K∗=(X−S)∪TK^*=(X-S)∪T 是 GG 的一个点覆盖.
由二部图的定义, 可能有下图中 4 种类型的边:
![]()
事实上, 若 K∗=(X−S)∪TK^*=(X-S)∪T 不是 GG 的一个覆盖. 则存在 GG 的一条边, 其一个端点在 SS 中, 而另一个端点在 Y−TY-T 中 (图中的蓝色虚线边, 第 4 类边), 这与 N(S)=TN(S)=T 矛盾!
此即 ∣K∗∣=∣M∗∣|K^*| = |M^*|. 由定理, K∗K^* 是最小覆盖.
Rizzi在2000年给出了一个更简短的证明, 参见Romeo Rizzi, A short proof of König's matching theorem, J. Graph Theory 33 (2000) 138-139.
注: 该定理是一个极大极小定理 (Min-Max Theorem).
极大极小关系(A min-max relation): 在一个实例上关于一个极小化问题和一个极大化问题的最优解是相同的.
最大匹配 MM (极大化) 的边数不会超过最小点覆盖 KK (极小化) 的点数, 那么当 ∣M∣=∣K∣|M|=|K| 时, 一定有 MM 是最大匹配, KK 是最小点覆盖 (最优解).
★例: 在布尔矩阵中的应用
矩阵的一行或一列称为矩阵的一条线.
证明: 布尔矩阵中, 包含了所有 “1” 的线的最少数目 (line rank), 等于具有性质 “任意两个 '1' 都不在同一条线上” 的 "1" 的最大数目 (term rank).
如在如下布尔矩阵中:
Q=(1110010101000001)Q= \begin{pmatrix} 1&1&1&0\\0&1&0&1\\0&1&0&0\\0&0&0&1 \end{pmatrix}
包含了所有 “1” 的线的最少数目 = 3
具有性质 “任意两个 '1' 都不在同一条线上” 的 "1" 的最大数目 = 3
证明: 设布尔阵是 nn 行 mm 列矩阵, 把它模型为一个二部图如下(二部邻接矩阵): 每行每列分别用一个点表示, XX 表示行点集合, YY 表示列点集合, 两点连线. 当且仅当该行该列元为 11.
于是, 包含了所有 “1” 的线的最少数目对应二部图中的最小点覆盖数. 而具有性质 “任意两个 1 都不在同一条线上的 1 的最大数目” 对应二部图的最大匹配包含的边数.
由 König 定理, 命题得到证明.
5.3 Tutte 定理与完美匹配
Tutte 定理
(Tutte,1947) 图 GG 有完美匹配当且仅当对 V(G)V(G) 的任意子集 SS, 有 o(G−S)≤∣S∣o(G-S)≤|S|.
注:
-
o(G−S)o(G−S) 表示奇分支数目 (奇分支是阶数为奇的连通分支).
-
SS 是 V(G)V(G) 的任意子集 (可以是空集).
-
若 GG 是偶阶图, 则 ∣S∣|S| 与 o(G−S)o(G−S) 有相同的奇偶性.
例
判断下图是否有完美匹配.
解: 选取 SS 为红色顶点, 则 o(G−S)=6>∣S∣=4o(G-S)=6>|S|=4. 由 Tutte 定理知该图没有完美匹配.
推论 (Petersen Theorem, 1891)
33 正则无桥图存在完美匹配.
证明: 设 SS 是 VV 的任意一个非空真子集, G1,G2,…,GkG_1, G_2, …, G_k 是 G−SG−S 的所有奇分支. mi(1≤i≤k)m_i(1 ≤ i ≤ k) 表示端点分属于 SS 和 GiG_i 的边数.
下面分析 mim_i.
在 GiG_i 中, 所有顶点度和为 2∣E(Gi)∣2|E(G_i)|.
在 GiG_i 中, 每个顶点在 GG 中的总度数为 3∣V(Gi)∣3|V(G_i)|.
所以: mi=3∣V(Gi)∣−2∣E(Gi)∣m_i=3|V(G_i)|-2|E(G_i)|.
因 GiG_i 都是奇分支, 因此 mim_i 必然为奇数, 但 GG 无割边, 所以 mi≥3m_i≥3.
o(G−S)=k≤13∑i=1kmi≤13∑v∈Sd(v)=13⋅3∣S∣=∣S∣o(G-S)=k\leq\frac{1}{3}\sum_{i=1}^k m_i\leq\frac{1}{3}\sum_{v\in S}d(v)=\frac{1}{3}\cdot3\left|S\right|=\left|S\right|
由 Tutte 定理, GG 有完美匹配.
试证明: kk 正则 k−1k−1 边连通的偶阶图存在完美匹配.
注: 推论中的条件是 GG 存在完美匹配的充分条件而不是必要条件. 例如:
(a) 是 Sylvester graph: 无完美匹配的最小奇度正则图
那么便有下面的两方面的问题:
- 三正则无桥图有多少个完美匹配 (结合 3 方体和 Petersen 图完美匹配个数的练习)?
- 在什么条件下, 三正则有桥图存在完美匹配?
20 世纪 70 年代, Lovász 和 Plummer 对三正则无桥图的完美匹配个数有下面的猜想:
Lovász-Plummer conjecture. There exists a universal constant ϵ>0\epsilon > 0 such that for any cubic bridgeless graph GG,
2ϵ∣V(G)∣⩽∣M(G)∣⩽2∣V(G)∣2^{\epsilon|V(G)|}\leqslant\bigl|\mathcal{M}(G)\bigr|\leqslant2^{|V(G)|}
定理 (Esperet et al. 2011)
每个三正则无桥图都至少有 2∣V(G)∣/36562^{|V(G)|/3656} 个完美匹配.
(Esperet el al., Exponentially many perfect matchings in cubic graphs, Advances in Mathematics, 2011)
定理
每个至多包含 22 条割边 (桥) 的三正则图都存在完美匹配.
Hint: 应用Tutte定理.
例
求证: 一棵树 GG 有完美匹配当且仅当对所有顶点 v∈V(G)v∈V(G), 有: o(G−v)=1o(G−v)=1. (V. Chungphaisan)
证明:
“必要性”
一方面: 若 GG 有完美匹配, 由 Tutte 定理: o(G−v)≤1o(G−v) ≤ 1;
另一方面: 若树 GG 有完美匹配, 则显然 GG 为偶阶树, 于是 o(G−v)≥1o(G−v)≥1;
所以: o(G−v)=1o(G−v)=1.
“充分性”
由于对任意点 v∈V(G)v∈V(G), 有 o(G−v)=1o(G−v)=1.
设 CvC_v 是 G−vG−v 的奇分支, 又设 GG 中由 vv 连到 G−vG−v 的奇分支的边为 vuvu, 显然, 由 uu 连到 G−uG−u 的奇分支的边也是 uvuv.
令 M={e(v)}M=\{e(v)\}, e(v)e(v) 是由 vv 连到 G−vG−v 的奇分支的边, v∈V(G)v∈V(G).
则, MM 是 GG 的完美匹配.
5.4 因子分解
把一个图按照某种方式分解成若干边不重的子图之并有重要意义.
- (1) 理论上, 通过分解, 可以深刻地揭示图的结构特征;
- (2) 应用上, 网络通信中, 当有多个信息传输时, 往往限制单个信息在某一子网中传递, 这就涉及到分解问题.
一个图分解方式是多种多样的. 作为图分解的典型例子, 我们介绍图的因子分解.
因子和因子分解
因子
图 GG 的因子 (factor) 是指包含 GG 的至少一条边的生成子图.
图 GG 的 kk 因子 (kk-factor), 是指图 GG 的 kk 正则生成子图.
★因子分解
图 GG 的因子分解 (factorization), 是指把图 GG 分解为若干个边不重的因子之并.
如果一个图 GG 能够分解为若干 kk 因子之并, 称 GG 是 kk 因子分解 (kk-factorization).
注:
(1) 有完美匹配一定有 11 因子, 但是不一定有 11 因子分解.
(2) 完美匹配和 11 因子在定义上是不同的. 事实上, 完美匹配是边集, 而 11 因子是图的 11 正则子图, 这两者是有区别的. 但是这两者在结构上是相同的, 所以在不致引起混淆的意义下可以认为两者相同.
在上图中, 红色边在 G1G_1 中的导出子图, 是 GG 的一个一因子; 红色边在 G2G_2 中的导出子图, 是 GG 的一个二因子.
研究图的因子分解主要是两个方面: 一是能否进行分解 (因子分解的存在性), 二是如何分解 (分解算法).
图的一因子分解
11 因子分解
图的一个 11 因子就是图的一个完美匹配. 一个图能一因子分解, 也就是它边集能够分解为若干边不重的完美匹配的并.
★定理1: K2nK_{2n} 可 11 因子分解
K2nK_{2n} 可 11 因子分解.
证明: 把 K2nK_{2n} 的 2n2n 个顶点编号为 1,2,…,2n1, 2, …, 2n. 作如下排列:
2n2n 固定在左上角, 其余点逆时针方向依次递增.
上图中, 每行两点邻接, 显然构成 K2nK_{2n} 的一个 11 因子.
然后按照图中箭头方向移动一个位置, 又可以得到 K2nK_{2n} 的另一个 11 因子, 不断作下去, 得到 K2nK_{2n} 的 2n−12n−1 个边不重的 11 因子, 其并恰好为 K2nK_{2n}.
注: 若 K2nK_{2n} 是 2n2n 个选手进行循环比赛的关系图 (竞赛图). K2nK_{2n} 的 11 因子分解可以解释为一种赛程安排.
例
将 K4K_4 作一因子分解.
例
求证: K4K_4 有唯一的 11-因子分解.
证明: K4K_4 只有 33 个不同的完美匹配. 而 K4K_4 的每个 11 因子分解包含 33 个不同完美匹配, 所以, 其 11 因子分解唯一.
注:
(1) 事实上, K4K_4 有唯一的 11-因子分解, K6K_6 有 66 个不同的 11-因子分解, 其它偶阶 (>6>6) 完全图的 11-因子分解数目随阶数增长很快, 见 https://oeis.org/A000438
(2) 11 因子分解的个数与完美匹配的数目是两个不同的概念. 如: K6K_6 有 66 个 11-因子分解 (见下图), 而 K6K_6 有 1515 个不同的完美匹配.
(3) Tutte’s 8-cage or Tutte-Coxeter graph (Tutte,1947; Coxeter,1958):
K6K_6 有 1515 条边和 1515 个不同的完美匹配. 那么 Tutte’ 8-cage 的每个顶点代表 K6K_6 的一条边或一个完美匹配. Tutte’ 8-cage 的边连接 K6K_6 中的完美匹配与该完美匹配中的 33 条边.
- K6K_6 的每条边都属于 33 个完美匹配;
- K6K_6 的每个完美匹配都包含 33 条边.
由上知, Tutte’s 8-cage 是二部图 (33 正则距离传递图, 共 1313 个).
Tutte’s 8-cage 是 33 正则围长为 88 (Hint: 排除 44 长圈和 66 长圈), 顶点数最少唯一的图, 亦即 (3,8)(3,8)-cage.
例
证明: 每个 k (k>0)k~(k>0) 正则二部图 GG 是可 11 因子分解的.
证明: 因 k (k>0)k~(k>0) 正则二部图 GG 存在完美匹配 MM, 则 G−MG−M 仍然是正则二部图. 由归纳知, GG 可一因子分解.
★定理2
具有 H 圈的三正则图可一因子分解.
证明: 先从 GG 中找出 H 圈, 显然 G−E(H)G−E(H) 是 11 因子. 而 H 圈是偶圈, 它显然可以分解为两个 11 因子. 所以 GG 可以分解为 33 个 11 因子.
注: 定理 2 的逆不一定成立. 例如:
上图是 33 正则图, 且可以 11 因子分解, 但不存在 H 圈.
定理3
若三正则图有割边, 则它不能 11 因子分解.
证明: 若不然, 设 GG 的三个一因子为 G1,G2,G3G_1, G_2, G_3. 不失一般性, 设割边 e∈G1e∈G_1.
显然, G−G2G−G_2 的每个分支必然为圈. 所以 ee 在 GG 的某个圈中, 这与 ee 是 GG 的割边矛盾.
注: 没有割边的 33 正则图可能也没有一因子分解, Petersen 图就是如此 (Petersen, 1898)! 尽管它存在完美匹配.
图的二因子分解
22 因子分解
如果一个图边集可以分解为若干个 22 因子的并, 称 GG 可以 22 因子分解 (22-factorization).
注: GG 的一个 H 圈肯定是 GG 的一个 22 因子, 但是 GG 的一个 22 因子不一定是 GG 的 H 圈 (22 因子可以不连通).
在下图中:
两个红色圈的并构成图的一个 22 因子, 但不是 H 圈.
注: 一个显然结论是: GG 能进行 22 因子分解, 其顶点度数必然为偶数. (注意, 不一定连通, 可能不是欧拉图)
★定理: K2n+1K_{2n+1} 可 22 因子分解
(Walecki, 1890) K2n+1K_{2n+1} 可 22 因子分解.
证明: 设 V(K2n+1)={v1,v2,⋯,v2n+1}V(K_{2n+1})=\{v_1,v_2,⋯,v_{2n+1} \}.
作路
Pi=vivi−1vi+1vi−2vi+2vi−3⋯vi−(n−1)vi+(n−1)vi−n,1≤i≤nP_i=v_i v_{i-1} v_{i+1} v_{i-2} v_{i+2} v_{i-3}⋯v_{i-(n-1)} v_{i+(n-1)} v_{i-n}, 1≤i≤n
下标取为 1,2,…,2n( mod 2n)1, 2, …, 2n (\bmod 2n).
生成圈 HiH_i 为 v2n+1v_{2n+1} 与 PiP_i 的两个端点连线.
例: K7K_7 分解
对 K7K_7 进行 22 因子分解.
解:
P1=v1v6v2v5v3v4P2=v2v1v3v6v4v5P3=v3v2v4v1v5v6P_1=v_1 v_6 v_2 v_5 v_3 v_4\\ P_2=v_2 v_1 v_3 v_6 v_4 v_5\\ P_3=v_3 v_2 v_4 v_1 v_5 v_6
则 K7K_7 的三个 22 因子 (22 因子分解) 为:
★定理: K2nK_{2n} 分解
K2nK_{2n} 可分解为一个 11 因子和 n−1n-1 个 22 因子之和.
证明: 设 V(K2n)={v1,v2,…,v2n}V(K_{2n})=\{v_1,v_2,…,v_{2n}\}.
作 n−1n-1 条路:
Pi=vivi−1vi+1vi−2vi+2vi−3vi−3...vi−n−1vi+n−1P_i=v_i v_{i-1}v_{i+1}v_{i-2}v_{i+2}v_{i-3}v_{i-3}...v_{i-n-1}v_{i+n-1}
下标按模 2n−12n-1 计算. 然后把 v2nv_{2n} 和 PiP_i 的两个端点连接.
例: K6K_6 分解
把 K6K_6 分解为一个 11 因子和 22 个 22 因子分解.
解: P1=v1v5v2v4v3,P2=v2v1v3v5v4P_1=v_1v_5v_2v_4v_3, P_2=v_2v_1v_3v_5v_4.
★定理
每个没有割边的 33 正则图是一个 11 因子和 11 个 22 因子之和.
证明: 因每个没有割边的 33 正则图存在完美匹配 MM, 显然, G−MG-M 是 22 因子.
定理 (Petersen, 1891)
每个 kk 正则图 (k>0k>0 是偶数) 都存在 22 因子.
定理
一个连通图可 22 因子分解当且仅当它是偶数度正则图.
证明: 必要性显然.
充分性: 当 GG 是 nn 阶 22 正则图时, GG 本身是一个 22 因子.
设当 GG 是 nn 阶 2k2k 正则图时, 可以进行 22 因子分解. 当 GG 是 nn 阶 2k+22k+2 正则图时, 由 1891 年彼得森证明过的一个结论: 顶点度数为偶数的任意正则图存在一个 22 因子 QQ. 所以, G−QG-Q 是 2k2k 阶正则图. 由归纳假设, 充分性得证.
图的森林因子分解
森林因子分解
把一个图分解为若干边不重的生成森林 (因子) 的并, 称为图的森林因子分解. (用来衡量边的稠密程度)
K5K_5 的一种森林因子分解为:
荫度 σ(G)σ(G)
森林因子分解的主要问题: 图 GG 分解为边不重的森林因子的最少数目问题, 称这个最小数目为 GG 的荫度 (arboricity), 记为 σ(G)σ(G).
定理 (Nash-Williams, 1961)
Nash-Williams 得到了图的荫度计算公式.
图 GG 的荫度为:
σ(G)=maxs⌈msns−1⌉σ(G)=\max_s \left\lceil\frac{m_s}{n_s-1}\right\rceil
其中 SS 是 GG 的任意子图, nsn_s 和 msm_s 分别是 SS 的顶点数和边数.
5.5 最优匹配与匈牙利算法
二部图中寻找完美匹配
问题: 设 G=(X,Y),∣X∣=∣Y∣G=(X,Y), |X|=|Y|, 在 GG 中求一完美匹配 MM.
基本思想: 从任一初始匹配 M0M_0 出发, 通过寻求一条 M0M_0 增广路 PP, 令 M1=M0ΔE(P)M_1=M_0ΔE(P), 得到比 M0M_0 更大的匹配 M1M_1 (迭代思想).
MM 可扩路的寻找方法: 1965 年, Edmonds 首先提出用扎根于 MM 非饱和点 uu 的 MM 交错树的生长来求 MM 可扩路.
MM 交错树
设 G=(X,Y)G=(X,Y), MM 是 GG 的匹配, uu 是 MM 的非饱和点. 称树 HH 是 GG 的扎根于点 uu 的 MM 交错树 (MM-augmenting tree), 如果:
- u∈V(H)u∈V(H);
- 对任意 v∈V(H),(u,v)v∈V(H), (u, v) 路是 MM 交错路.
MM 交错树的生长
扎根于 MM 非饱和点 uu 的 MM 交错树的生长:
假如 HH 是扎根于 MM 非饱和点 uu 的 MM 交错树. 它有两种情形:
情形1: HH 包含除 uu 外的 MM 非饱和点 (存在增广路). 那么可以修改匹配 MM, 得到新的 MM 交错树.
情形2: 除点 uu 外, HH 中所有点为 MM 饱和点, 且在 MM 上配对. 那么继续进行如下判断:
令 S=V(H)∩X,T=V(H)∩YS=V(H)∩X, T=V(H)∩Y, 显然: T⊆N(S)T⊆N(S).
(1) 若 N(S)=TN(S)=T:
由于 S−{u}S-\{u\} 中点与 TT 中点配对, 所以有: ∣T∣=∣S∣−1|T|=|S|−1, 于是有: ∣N(S)∣=∣S∣−1<∣S∣|N(S)| = |S|−1< |S|. 由 Hall 定理, GG 中不存在完美匹配;
(2) 若 T⊂N(S)T⊂N(S):
令 y∈N(S)−Ty∈N(S)-T, 则在树 HH 中存在点 xx 与 yy 邻接. 因为 HH 的所有点, 除 uu 外, 均在 MM 下配对. 所以, 都有 xy∉Mxy∉M.
当然, yy 可能为 MM 非饱和点, 也可能为 MM 饱和点.
-
yy 是 MM 非饱和点 (同情形1, 扩张 MM 后, 在新匹配下生成交错树).
-
yy 是 MM 饱和点 (SS 与 TT 均已迭代变化, 继续判断 N(S)=T?N(S)=T?).
反复进行上述过程, 最终判定 GG 是否有完美匹配或者求出完美匹配.
根据上面讨论, 可设计求二部图的完美匹配算法.
二部图完美匹配算法 - 匈牙利算法
设 MM 是初始匹配. HH 是扎根于 MM 非饱和点 uu 的交错树. 令: S=V(H)∩X,T=V(H)∩YS=V(H)∩X, T=V(H)∩Y.
(a) 若 MM 饱和 XX 所有顶点, 停止. 否则, 设 uu 为 XX 中 MM 非饱和顶点, 置 S={u},T=ΦS=\{u\}, T=Φ;
(b) 若 N(S)=TN(S)=T, 则 GG 中不存在完美匹配. 否则设 y∈N(S)−Ty∈N(S)-T.
(c) 若 yy 为 MM 饱和点, 且 yz∈Myz∈M, 置 S=S∪{z},T=T∪{y}S=S∪\{z\}, T=T∪\{y\}, 转 (b). 否则, 设 PP 为 MM 可扩路, 置 M1=MΔE(P)M_1=MΔE(P), 转 (a).
例
讨论下图 G=(X,Y)G=(X, Y) 是否有完美匹配.
解: 取初始匹配 M={x1y1,x2y3}M=\{x_1y_1, x_2y_3\}.
(a) S={x3},T=ΦS=\{x_3\}, T=Φ;
(b) N(S)={y2,y3},N(S)≠TN(S)=\{y_2, y_3\}, N(S)≠T, 取 y2∈N(S)−Ty_2∈N(S)−T.
(c) y2y_2 为 MM 非饱和点, 加上 y2y_2 和边 x3y2x_3y_2 生长树 HH. 此时, 置 M=MΔE(P)={x1y1,x2y3,x3y2}M=MΔE(P)=\{x_1y_1, x_2y_3, x_3y_2\}.
(a) S={x4},T=ΦS=\{x_4\}, T=Φ;
(b) N(S)={y2,y3}N(S)=\{y_2, y_3\}, N(S)≠TN(S)≠T, 取 y2∈N(S)−Ty_2∈N(S)−T.
(c) y2y_2 为 MM 饱和点, y2x3∈My_2x_3 ∈ M. 此时, 置 S=S∪{x3}={x3,x4}S=S∪\{x_3\}=\{x_3, x_4\}.
(b) N(S)={y2,y3}≠TN(S)=\{y_2, y_3\} ≠T, 取 y3∈N(S)−Ty_3 ∈N(S)−T.
(c) y3y_3 为 MM 饱和点, x2y3∈Mx_2y_3∈M. 此时, 置 S=S∪{x2}={x2,x3,x4}S=S∪\{x_2\}=\{x_2, x_3, x_4\}, T=T∪y3={y2,y3}T=T∪{y_3}=\{y_2, y_3\}.
(b) N(S)={y2,y3}=TN(S)=\{y_2, y_3\} =T, 所以, GG 无完美匹配.
匈牙利算法复杂性分析
- 最多循环 ∣X∣|X| 次可以找到完美匹配;
- 初始匹配最多扩张 ∣X∣|X| 次可以找到完美匹配;
- 每次生长树的生长至多 2∣X∣−12|X|−1 次.
所以, 算法复杂性为 O(∣X∣3)O(|X|^3), 是好算法.
二部图中寻找最大匹配
问题: 在一般二部图上求最大匹配 MM.
分析: 使用匈牙利算法求完美匹配时, 当在扎根于 MM非饱和点 uu 的交错树上有 ∣N(S)∣<∣S∣|N(S)|<|S| 时, 由 Hall 定理, 算法停止. 要求出最大匹配, 应该继续检查 X−SX−S 是否为空, 如果不为空, 则检查是否在其上有 MM 非饱和点.一直到所有 MM 非饱和点均没有 MM 可扩路才停止.
二部图中寻找最大匹配算法
设 MM 是 G=(X,Y)G=(X, Y) 的初始匹配.
(1) 置 S=Φ,T=ΦS=Φ,T=Φ;
(2) 若 X−SX−S 已经 MM 饱和, 停止; 否则, 设 uu 是 X−SX−S 中的一非饱和顶点, 置 S=S∪{u}S=S∪\{u\}.
(3) 若 N(S)=TN(S)=T, 转 (5); 否则, 设 y∈N(S)−Ty∈N(S)−T.
(4) 若 yy 是 MM 饱和的, 设 yz∈Myz∈M, 置 S=S∪zS=S∪{z}, T=T∪{y}T=T∪\{y\}, 转 (3); 否则, 存在 (u,y)(u, y)交错路是 MM 可扩路 PP, 置 M=MΔE(P)M=MΔE(P), 转 (1).
(5) 若 X−S=ΦX−S=Φ, 停止; 否则转 (2).
注: 事实上, 1973 年 John Hopcroft 和 Richard Karp 给出了时间复杂度为 O(mn)O(m\sqrt n) 的最大匹配算法 (在一次迭代中找出尽可能多的增广路, 而不像匈牙利算法不是一次只给出一条).
★完全二部图的最优匹配
最优匹配问题
设 G=(X,Y)G=(X, Y) 是边赋权完全二部图, 且 X={x1,x2,…,xn},Y={y1,y2,…,yn},wij=w(xiyj)X=\{x_1, x_2, …, x_n\}, Y=\{y_1, y_2, …, y_n\}, w_{ij}=w(x_iy_j). 在 GG 中求出一个具有最大权值的完美匹配.
由于 Kn,nK_{n,n} 有 n!n! 个不同完美匹配, 所以枚举计算量是 n!n!.
在匈牙利算法的基础上, Kuhn (1955) 与 Munkres (1957) 提出了上面问题的好算法.
可行顶点标号
设 G=(X,Y)G=(X,Y) 是边赋权完全二部图. 若在顶点集 X∪YX \cup Y 上的实值函数 ll 适合下述条件: 对任意的 x∈X,y∈Yx∈X, y∈Y, 有
l(x)+l(y)≥w(xy)l(x)+l(y)≥w(xy)
称 ll 是 GG 的可行顶点标号 (feasible vertex labelling).
- 可行顶点标号是这样的顶点标号, 它使每条边的两端点的标号之和至少与这条边的权一样大.
- 可行顶点标号形式上类似于三角不等式 (triangle inequality).
对于任意的赋权完全二部图 GG, 均存在 GG 的可行顶点标号. 事实上, 设:
{l(x)=maxy∈Yw(xy), 若 x∈X,l(y)=0, 若 y∈Y.\left\{\begin{array}{l} l(x)=\max_{y \in Y} w(x y), \text { 若 } x \in X, \\ l(y)=0, \text { 若 } y \in Y . \end{array}\right.
则 ll 是 GG 的一个可行顶点标号.
相等子图
设 ll 是赋权完全二部图 G=(X,Y)G=(X, Y) 的可行顶点标号, 令:
El={xy∈E(G)∣l(x)+l(y)=w(xy)}E_l=\{xy∈E(G)|l(x)+l(y)=w(xy)\}
称 Gl=G[El]G_l = G[E_l] 为 GG 的对应于 ll 的相等子图 (equality subgraph).
定理
设 ll 是赋权完全二部图 G=(X,Y)G=(X, Y) 的可行顶点标号, 若相等子图 GlG_l 有完美匹配 M∗M^*, 则 M∗M^* 是 GG 的最优匹配.
证明: 设 M∗M^* 是 GlG_l 的完美匹配, 则:
w(M∗)=∑e∈M∗w(e)=∑v∈V(G)l(v)w(M^*) =\sum_{e\in M^*} w(e)=\sum_{v\in V(G)} l(v)
又设 MM 是 GG 的任一完美匹配, 则:
w(M)=∑e∈Mw(e)≤∑v∈V(G)l(v)w(M) =\sum_{e \in M} w(e)\leq\sum_{v \in V(G)} l(v)
所以, w(M∗)≥w(M)w(M^*)≥w(M). 即 M∗M^* 是 GG 的最优匹配.
根据上面定理, 若找到一种恰当的可行顶点标号, 使得对应的相等子图有完美匹配 M∗M^*, 则求出了 GG 的最优匹配.
最优匹配算法
Kuhn 采用顶点标号修改策略, 找到了求最优匹配好算法, 具体如下:
给一初始顶点标号 ll, 在 GlG_l 中任选一个匹配 MM.
(1) 若 XX 是 MM 饱和的, 则 MM 是最优匹配. 否则, 令 uu 是一个 MM 非饱和点, 置: S=u,T=ϕS={u}, T=\phi.
(2) 若 NGl(S)⊃TN_{G_l} (S)⊃T, 转 (3). 否则 (即 N(S)=TN(S)=T ), 计算:
αl=minx∈Sy∉T{l(x)+l(y)−w(xy)}\alpha_{l}=\min_{\substack{x \in S \\ y \notin T}}\{l(x)+l(y)-w(x y)\}
l^={l(v)−αl,v∈Sl(v)+αl,v∈Tl(v), 其它 \hat{l}=\left\{\begin{array}{l} l(v)-\alpha_{l}, v \in S \\ l(v)+\alpha_{l}, v \in T \\ l(v), \text { 其它 } \end{array}\right.
给出新的可行顶点标号, 在新标号下重新开始.
(3) 对 GlG_l , 在 N(S)−TN(S)−T 中选择点 yy.
若 yy 是 MM 饱和的, yz∈Myz∈M, 则置 S=S∪z,T=T∪yS=S∪{z}, T=T∪{y} 转 (2).
否则, 设 PP 是 GlG_l 中 MM 可扩路, 置 M=MΔE(P)M=MΔE(P), 转 (1).
注:
(1) 该算法把匈牙利算法用于其中, 主要是用来判定和求完美匹配.
(2) 求一般的赋权二部图 (非完全) 的最大匹配, 将不存在的边用权值为 00 的边代替后得到完全二部图后即可用该算法.
例
设如下矩阵是赋权完全二部图 GG 的权值矩阵, 求出其最优匹配.
W=(3554122022244100110012133)W= \begin{pmatrix} 3&5&5&4&1\\ 2&2&0&2&2\\ 2&4&4&1&0\\ 0&1&1&0&0\\ 1&2&1&3&3\\ \end{pmatrix}
解: 给出初始可行顶点标号 ll 为:
W=(3554122022244100110012133)5241300000W= \begin{array}{c} \begin{pmatrix} 3&5&5&4&1\\ 2&2&0&2&2\\ 2&4&4&1&0\\ 0&1&1&0&0\\ 1&2&1&3&3\\ \end{pmatrix} & \begin{matrix} 5\\ 2\\ 4\\ 1\\ 3\\ \end{matrix} \\ \begin{matrix} 0 & 0 & 0 & 0 & 0 \end{matrix} \end{array}
对应的相等子图 GlG_l 为:
给出初始匹配 MM 为:
(1) u=x4u=x_4 为 MM 非饱和顶点.置: S={x4},T=ϕS=\{x_4\},T=\phi
(2) NGl(S)={y2,y3}⊃TN_{G_l} (S)=\{y_2,y_3\}⊃T
(3) 取: y2∈NGl(S)−Ty_2∈N_{G_l} (S)-T, y2y_2 为饱和顶点, y2x1∈My_2x_1∈M, 于是: S={x1,x4},T={y2}S=\{x_1,x_4\},T=\{y_2\}
(2) NGl(S)={y2,y3}⊃TN_{G_l} (S)=\{y_2,y_3\}⊃T
(3) 取: y3∈NGl(S)−Ty_3∈N_{G_l} (S)-T, y3y_3为饱和顶点, y3x3∈My_3x_3∈M, 于是: S={x1,x3,x4},T={y2,y3}S=\{x_1,x_3,x_4\},T=\{y_2,y_3\}
(2) NGl(S)={y2,y3}=TN_{G_l} (S)=\{y_2,y_3\}=T, 于是修改标号: αl=minx∈Sy∉T{l(x)+l(y)−w(xy)}=1 (αl>0)(x∈x1,x3,x4,y∈y1,y4,y5)α_l=\min_{\substack{x \in S \\ y \notin T}}\{l(x)+l(y)-w(xy)\}=1 (α_l>0) (x∈{x_1, x_3, x_4}, y∈{y_1, y_4, y_5})
由 l^={l(v)−αl,v∈Sl(v)+αl,v∈Tl(v), 其它 \hat{l}=\left\{\begin{array}{l}l(v)-\alpha_{l}, v \in S \\l(v)+\alpha_{l}, v \in T \\l(v), \text { 其它 }\end{array}\right. 得新标号为
W=(3554122022244100110012133)5→424→31→0300000↓↓11W= \begin{array}{c} \begin{pmatrix} 3&5&5&4&1\\ 2&2&0&2&2\\ 2&4&4&1&0\\ 0&1&1&0&0\\ 1&2&1&3&3\\ \end{pmatrix} & \begin{matrix} 5\to4\\ 2\enspace\enspace\enspace\enspace\\ 4\to3\\ 1\to0\\ 3\enspace\enspace\enspace\enspace\\ \end{matrix} \\ \begin{matrix} 0 & 0 & 0 & 0 & 0 \end{matrix} \\ \begin{matrix} \enspace & \downarrow & \downarrow & \enspace & \enspace \end{matrix} \\ \begin{matrix} \enspace & 1 & 1 & \enspace & \enspace \end{matrix} \end{array}
在新标号下 (重新找相等子图): 红色边为新加入的边; x2y2x_2y_2 不再出现.
继续使用算法后得:
最优匹配权值为 1414.
一般图的完美匹配算法
Unfortunately, 用匈牙利算法求解一般图的完美匹配时, 由于奇圈的存在, 可能导致出现无穷多个交错路. Edmonds提出了开花算法 (Blossom algorithm) 克服这个缺点.
Overview: 开花算法在匈牙利算法的基础上, 将奇圈收缩为一个点然后再使用匈牙利算法找增广路.