一、偶图的匹配问题
偶图回顾

k k k 正则偶图:两个顶点子集包含顶点个数相等

对称差运算:保留不同的,去掉相同的

(一)、图的匹配与贝尔热定理
1、图的匹配相关概念
(1)、匹配 M M M — 如果 M M M 是图 G G G 的边子集(不含环),且 M M M 中的任意两条边没有共同顶点(即不相邻),则称 M M M 是 G G G 的一个匹配或对集或边独立集。
如果 G G G 中顶点 v v v 是 G G G 的匹配 M M M 中某条边的端点,称它为 M M M 饱和点,否则为 M M M 非饱和点。(意思就是: G G G 中顶点 v v v 在 M M M 中就是饱和点,只在 G G G ,不在 M M M 中,就是非饱和点)

(2)、最大匹配 M M M— 如果 M M M 是图 G G G 的包含边数最多的匹配,称 M M M 是 G G G 的一个最大匹配。特别是,若最大匹配饱和了 G G G 的所有顶点,称它为 G G G 的一个完美匹配。

注: 1、一个图
G
G
G不一定存在完美匹配;
2、一个图
G
G
G的完美匹配若存在,不一定唯一;
3、一个图
G
G
G的最大匹配不一定唯一。
(3)、 M M M 交错路— 如果 M M M 是图 G G G 的匹配, G G G 中一条由 M M M 中的边和非 M M M 中的边交错形成的路,称为 G G G 中的一条 M M M 交错路。特别地,若 M M M 交错路的起点与终点是 M M M 非饱和点,称这种 M M M 交错路为 M M M 可扩路。

2、贝尔热定理
定理1 (贝尔热,1957) G G G 的匹配 M M M 是最大匹配,当且仅当 G G G 不包含 M M M 可扩路。
H = M 1 Δ M H = M_1 \Delta M H=M1ΔM 用于充分性方面的证明,首先,已知 G G G 不包含 M M M 可扩路,反证法,假如 M M M 不是最大匹配,而 M 1 M_1 M1 才是最大匹配,即 ∣ M 1 ∣ > ∣ M ∣ |M_1| > |M| ∣M1∣>∣M∣ , 则通过构造 H = M 1 Δ M H = M_1 \Delta M H=M1ΔM,因此这个 H H H 只用考虑 M M M 与 M 1 M_1 M1 这两部分,而不用考虑整个图的其他部分,因此只能是 1 度(要么与 M M M 要么与 M 1 M_1 M1 相连)或者 2 度(一条边连着 M M M,另一条边连着 M 1 M_1 M1),因此要么是 M M M 与 M 1 M_1 M1 交替组成的偶圈,要么是交替组成的路,偶圈中 ∣ M 1 ∣ = ∣ M ∣ |M_1| = |M| ∣M1∣=∣M∣,而路则需要满足 ∣ M 1 ∣ > ∣ M ∣ |M_1| > |M| ∣M1∣>∣M∣,进一步推出 M 1 M_1 M1 必须饱和首尾点,让 M M M 在内部, M M M 在内部,说明 M M M 为一条可扩路,这与最开始说 G G G 不包含 M M M 可扩路矛盾。
为什么要构造
H
H
H?
是为了比较
M
M
M 与
M
1
M_1
M1 中不同的部分存在,
∣
M
1
∣
>
∣
M
∣
|M_1| > |M|
∣M1∣>∣M∣,相同的部分去掉,因为相同的部分
∣
M
1
∣
=
∣
M
∣
|M_1| = |M|
∣M1∣=∣M∣

(二)、偶图的匹配与覆盖
1、问题的提出
在日常生活,工程技术中,常常遇到求偶图的匹配问题。下面看一个例子:

2、偶图匹配存在性判定 —— Hall定理
对于图 G G G 的任一顶点子集 S S S,所谓 G G G 中 S S S 的 邻集(或邻域) 是指与 S S S 的顶点相邻的所有顶点的集,记为 N G ( S ) N_G(S) NG(S),简记为 N ( S ) N(S) N(S)
定理2 (Hall定理) 设 G = ( X , Y ) G=(X, Y) G=(X,Y)是偶图,则 G G G存在饱和 X X X每个顶点的匹配的充要条件是:
对 ∀ S ⊆ X , 有 ∣ N ( S ) ∣ ≥ ∣ S ∣ \text{对 }\forall S\subseteq X,\text{有 }|N(S)|\geq|S| 对 ∀S⊆X,有 ∣N(S)∣≥∣S∣

下面我们证明Hall定理。
下面分析充分性证明部分:反证法,满足不等式的 X X X 中,存在不饱和点 u u u,而其他点都是饱和了的。先构造一个 Z Z Z, Z Z Z 是最大匹配 M ∗ M^* M∗ 与 u u u 相连的所有交错路上的点集( u u u 是所有交错路上唯一一个未饱和点)
为什么
u
u
u 是所有交错路上唯一一个未饱和点?
首先我们要证明满足不等式的
X
X
X 中,存在不饱和点
u
u
u,注意
X
X
X 中其他点都是饱和了的,假设考虑一个
M
M
M 交错路,以从
u
u
u 出发到
Y
Y
Y 中的某个点
y
1
y_1
y1 ,如果
y
1
y_1
y1 饱和,肯定存在
X
X
X 中
x
1
x_1
x1 与之邻接,如果
y
1
y_1
y1 不饱和,则
u
y
1
uy_1
uy1 可以进行连接,从而饱和了
u
u
u,矛盾,所以
u
u
u 是唯一不饱和的。

同时 Z Z Z 中与 Y Y Y 的交集部分所有点也是饱和的,比如下方的 y 1 , y 2 y_1, y_2 y1,y2(但是注意,不是饱和 Y Y Y 中的所有点)

综上实际可以看出 S = Z ∩ X S = Z \cap X S=Z∩X,实际上是 ∣ S ∣ − 1 |S| - 1 ∣S∣−1(没有包含 u u u), T = Z ∩ Y T = Z \cap Y T=Z∩Y,实际上是 ∣ S ∣ − 1 |S| - 1 ∣S∣−1,而 ∣ T ∣ = N ( S ) |T| = N(S) ∣T∣=N(S), ∣ S ∣ − 1 = ∣ T ∣ = ∣ N ( S ) ∣ |S| - 1 = |T| = |N(S)| ∣S∣−1=∣T∣=∣N(S)∣,因此 N ( S ) < ∣ S ∣ N(S) < |S| N(S)<∣S∣;

注:
- (1) G = ( X , Y ) G=(X,Y) G=(X,Y) “存在饱和 X X X每个顶点的匹配”也常说成“存在由 X X X到 Y Y Y的匹配”。
- (2) Hall 定理也可表述为:设 G = ( X , Y ) G=(X,Y) G=(X,Y) 是偶图,如果存在 X X X 的一个子集 S S S, 使得 ∣ N ( S ) ∣ < ∣ S ∣ |N(S)| < |S| ∣N(S)∣<∣S∣,那么 G G G 中不存在由 X X X 到 Y Y Y 的匹配。
- (3) Hall定理也称为“婚姻定理”,表述如下:
婚姻定理” : 在一个由 r r r 个女人和 s s s 个男人构成的人群中, 1 ≦ r ≦ s 1≦r≦s 1≦r≦s。在熟识的男女之间可能出现 r r r 对婚姻的充分必要条件是,对每个整数 k ( 1 ≦ k ≦ r ) k(1≦k≦r) k(1≦k≦r), 任意 k k k 个女人共认识至少 k k k 个男人。 - (4) Hall定理是在偶图中求最大匹配算法的理论基础,即匈牙利算法基础。
推论: 若 G G G 是 k ( k > 0 ) k (k>0) k(k>0) 正则偶图,则 G G G 存在完美匹配。
E 1 ⊆ E 2 E_{1}\subseteq E_{2} E1⊆E2 是因为 E 1 E_{1} E1 是与 S S S 关联的边, E 2 E_{2} E2 是与 N ( S ) N(S) N(S) 关联的边,由 N ( S ) N(S) N(S) 的定义: N ( S ) N(S) N(S) 是与 S S S 相邻的所有点集,因此实际上 N ( S ) N(S) N(S) 与 S S S 连接的边就是 E 1 E_{1} E1,而 N ( S ) N(S) N(S) 关联的边的点集除了 S S S 外,可能还存在其他点,所以包含 E 1 E_{1} E1,且可能比 E 1 E_{1} E1 更大。


E 1 ⊆ E 2 E_1\subseteq E_2 E1⊆E2 :与 S S S 关联的边集肯定与 N ( S ) N(S) N(S) 相关联,因为 N ( S ) N(S) N(S) 表示 S S S 的邻点集合,而与 N ( S ) N(S) N(S) 相关联的边集不一样与 S S S 相关联,于是有 E 1 ⊆ E 2 E_1\subseteq E_2 E1⊆E2



3、点覆盖与哥尼定理
(1)、图的点覆盖概念与性质
定义1: 图的点覆盖 —— G G G 的一个顶点子集 K K K 称为 G G G 的一个点覆盖,如果 G G G 的每条边都至少有一个端点在 K K K 中。 G G G 的一个包含点数最少的点覆盖称为 G G G 的最小点覆盖,其包含的点数称为 G G G 的覆盖数,记为 α ( G ) α(G) α(G).

若 K K K 是 G G G 的覆盖, M M M 是 G G G 的匹配,则 K K K 至少包含 M M M 中每条边的一个端点,于是,对任何匹配 M M M 和任何覆盖 K K K,均有 ∣ M ∣ ≤ ∣ K ∣ |M| ≤ |K| ∣M∣≤∣K∣
定理2 设 M M M 是 G G G 的匹配, K K K 是 G G G 的覆盖,若 ∣ M ∣ = ∣ K ∣ |M|=|K| ∣M∣=∣K∣, 则 M M M 是最大匹配,而 G G G 是最小覆盖。

最小覆盖包含所有边,最大匹配不一定包含所有边
(2)、偶图的点覆盖与偶图匹配间的关系——哥尼定理
定理2 (哥尼,1931) 在偶图中,最大匹配的边数等于最小覆盖的顶点数。(偶图中才成立,一般图中不一定成立)



( X \ S ) ∪ T (X\backslash S)\cup T (X\S)∪T 为什么是一个覆盖,是因为 T = N ( S ) T = N(S) T=N(S),即 T T T 已经覆盖了 S S S 中的点,并且 T T T 还覆盖了 U U U 中的点,因此再加上 X \ S X\backslash S X\S 部分,就刚好覆盖完。 ∣ M ∗ ∣ = ∣ K ~ ∣ |M^{*}|=|\widetilde{K}| ∣M∗∣=∣K ∣ 时,由上面定理 2, M ∗ M^{*} M∗ 是最大匹配, ∣ K ~ ∣ |\widetilde{K}| ∣K ∣ 是最小覆盖
其中,包含所有 1 的线的最少数目,就是每行或每列是一条线,看这一条线里包含多少个1。图中一条横线,两条竖线就是线的最少数目,3条线,包含了这个布尔矩阵的所有1。
任何两个1都不在同一条线上表示任何两个1不同行不同列的1的最大数目

(三)、托特定理(Tutte)
图的分支根据它有奇数个或偶数个顶点而分别成为奇分支或偶分支,我们用 o ( G ) o(G) o(G) 表示 G G G 的奇分支的个数
定理4 (托特定理 Tutte,1947) 图
G
G
G有完美匹配当且仅当对
V
V
V的任意非空真子集
S
S
S, 有:
o
(
G
−
S
)
≤
∣
S
∣
o\left(G-S\right)\leq\left|S\right|
o(G−S)≤∣S∣
注: o ( G − S ) o (G-S) o(G−S) 表示奇分支数目,即 G − S G-S G−S 的连通分支中的顶点数为奇数的个数。(一定要对所有非空真子集 S S S做检验,才能得到完美匹配的结论)

推论 (彼得森定理) 没有割边的 3 3 3正则图存在完美匹配。(重点掌握)
彼得森图满足是没有割边的 3 正则图,因此它有完美匹配

为什么 m i ≥ 3 m_i ≥ 3 mi≥3, 因为 m i m_i mi 为奇数, G 没有割边,所以 m i m_i mi 不等于 1, 那只能是 m i ≥ 3 m_i ≥ 3 mi≥3
k ≤ 1 3 ∑ i = 1 k m i k\leq\frac{1}{3}\sum_{i=1}^{k}m_{i} k≤31∑i=1kmi ,是因为 m i ≥ 3 m_i ≥ 3 mi≥3, k k k 个 m i m_i mi 的和
(a)有割边,(b)有割边 且两个都是三正则图

二、图的因子分解(重点掌握)
所谓一个图
G
G
G的因子
G
i
G_i
Gi,是指至少包含
G
G
G的一条边的生成子图。
所谓一个图
G
G
G的因子分解,是指把图
G
G
G分解为若干个边不重的因子之并。
所谓一个图
G
G
G的
n
n
n因子,是指图
G
G
G的
n
n
n度正则因子。(这个图
G
G
G 中,每个顶点的度为
n
n
n)
如果一个图 G G G能够分解为若干 n n n因子之并,称 G G G是可 n n n因子分解的( n n n可因子化的, n n n因子分解)。

在上图中,红色边在 G 1 G_1 G1中的导出子图,是 G G G的一个一因子;红色边在 G 2 G_2 G2中的导出子图,是G的一个二因子。
研究图的因子分解主要是两个方面:一是能否进行分解(因子分解的存在性),二是如何分解(分解算法).
(一)、图的一因子分解
图的一个一因子实际上就是图的一个完美匹配的导出子图。一个图能够作一因子分解,也就是它能够分解为若干边不重的完美匹配的导出子图之并。
定理1 K 2 n K_{2n} K2n 可一因子分解。(证明方法下面有几个案例题,可以先看)

如何利用上述的因此证明方法进行因子分解呢?(以 K 6 K_6 K6进行一因子分解为例)
根据上述配对形势,结果图如下:


定理 7 任一正则偶图是 1-可因子化的。
证明: 因为正则偶图存在完美匹配,从不断减去完美匹配的方式就可得到定理的结果

定理 2 具有 H H H圈的三正则图可一因子分解。
证明: 因为 G G G 是 3 正则图,故 G G G 的点数是偶数 (定理:正则图的阶数和度数不同时为奇数) 先从三正则图 G G G 中抽取 H H H 圈,3 正则图,每个顶点为 3,抽取一个圈后,剩下的顶点,每个顶点度为 1,显然剩下边构成 G G G 的一个一因子。偶数个顶点的 H H H 圈,它显然可以分解为两个一因子。所以 G G G 可以分解为 3 3 3 个一因子。

定理 3 若三正则图有割边,则它不能一因子分解。
证明: 若不然,设 G G G 的三个一因子为 G 1 , G 2 , G 3 G_1,G_2,G_3 G1,G2,G3。不失一般性,设割边 e ∈ G 1 e∈ G_1 e∈G1。
显然, G − G 2 G-G_2 G−G2 的每个分支必然为圈 (同上面定理, G 2 G_2 G2 为一因子,抽取了一个一因子,剩下所有顶点都为 2,肯定是一个圈)。所以 e e e 在 G G G 的某个圈中,这与 e e e 是 G G G 的割边矛盾。
注: 没有割边的三正则图可能也没有一因子分解,如彼得森图就是如此!尽管它存在完美匹配。
(二)、图的二因子分解
如果一个图可以分解为若干 2 2 2度正则因子之并,称 G G G可以 2 2 2因子分解。注意: G G G的一个 H H H圈肯定是 G G G的一个 2 2 2因子,但是 G G G的一个 2 2 2因子不一定是 G G G的 H H H圈。 2 2 2因子可以不连通。(若一个 2 因子是连通的,则它是一个 H 圈)
一个完全图是一因子可分解的,当且仅当它有偶数个点

因为一个 2 可因子化的图的所有点的度一定是偶数,所以完全图 K 2 n K_{2n} K2n 不是 2 可因子化的( K 2 n K_{2n} K2n 中每个点的度数为 2 n − 1 2n - 1 2n−1)。奇阶完全图是 2 可因子化的。
定理10 图 K 2 n + 1 K_{2n + 1} K2n+1 是 n n n 个 H H H 圈的和

定理4 K 2 n + 1 K_{2n+1} K2n+1可 2 2 2 因子分解。(以下方式比上面好)

这里 i i i 从 1 − n 1 - n 1−n


定理5 K 2 n K_{2n} K2n 可分解为一个 1 1 1 因子和 n − 1 n-1 n−1 个 2 2 2 因子之和。
每个 1 度正则图本身是 1 因子,每个 2 度正则图是一个 2 因子。



1 度正则图本身是 1 因子,2 度正则图是一个 2 因子,若 2 度正则图的每一个支是一个偶圈,因为偶圈能表示为两个 1 因子的和,故它也是 1 因子。尽管许多 3 度正则图没有 1 因子,但是若 1 个 3 度正则图含有一个 1因子,它一定也有一个 2 因子。因此可得如下定理
定理6 每个没有割边的3正则图是一个1因子和1个2因子之和。
证明: 因每个没有割边的3正则图存在完美匹配M,显然,G-M是2因子。
Peterson 给出了一个没有割边且不是三个 1 因子的和的 3 正则图,它是一个 1 因子和一个 2 因子的和。 五边形和五角形一起构成一个 2 因子,而联接五边形和五角星形的五条边构成一个 1 因子,Peterson 也得到了可以将一个图分解为 2 因子的一个准则
定理7 一个连通图可2因子分解当且仅当它是偶数度正则图。

(三)、图的森林因子分解
把一个图分解为若干边不重的森林因子的和,称为图的森林因子分解。

主要讨论: 图 G G G分解为边不重的森林因子的最少数目问题,称这个最少数目为 G G G的荫度,记为 σ ( G ) σ(G) σ(G)。
定理8 图 G G G 的荫度为: σ ( G ) = max s ⌈ m s s − 1 ⌉ \sigma(G)=\max_s\left\lceil\frac {m_s}{s-1}\right\rceil σ(G)=smax⌈s−1ms⌉
其中 s s s 是 G G G 的子图 H s Hs Hs 的顶点数,而: m s = max s { E ( H s ) } m_s=\max_s\left\{E(H_s)\right\} ms=smax{E(Hs)}


定理 9 σ ( K n ) = ⌈ n 2 ⌉ σ ( K r , s ) = ⌈ r s r + s − 1 ⌉ \sigma(K_n)=\left\lceil\frac n2\right\rceil ~~~~~~\sigma(K_{r,s})=\left\lceil\frac{rs}{r+s-1}\right\rceil σ(Kn)=⌈2n⌉ σ(Kr,s)=⌈r+s−1rs⌉


P117—118 习题4 : 3, 4, 5,6,7,8,9
三、匈牙利算法与最优匹配算法
(一)、匈牙利算法
1、偶图中寻找完美匹配
(1) 、问题
设
G
=
(
X
,
Y
)
,
∣
X
∣
=
∣
Y
∣
G=(X, Y), |X|=|Y|
G=(X,Y),∣X∣=∣Y∣, 在
G
G
G中求一完美匹配
M
M
M.
(2) 、基本思想
从任一初始匹配
M
0
M_0
M0 出发,若
M
0
M_0
M0 饱和
X
X
X 中的每个点,则
M
0
M_0
M0 就是所需的匹配,若不是,则在
X
X
X 中找一个
M
0
M_0
M0 非饱和点
u
u
u,且系统地寻找一条以
u
u
u 为起点的
M
M
M 可扩路,如果这条路
P
P
P 存在,这时
M
1
=
M
0
Δ
E
(
P
)
M_1=M_0ΔE(P)
M1=M0ΔE(P) 就是比
M
0
M_0
M0更大的匹配(近似于迭代思想),因而饱和
X
X
X 中更多的点,重复这个过程。
M 1 = M 0 Δ E ( P ) M_1=M_0ΔE(P) M1=M0ΔE(P) 实际上就是将 E ( P ) E(P) E(P) 这条可扩路上的边进行反转,并加入到 M 0 M_0 M0 中
(3) 、
M
M
M可扩路的寻找方法
1965 年,Edmonds 首先提出: 用扎根于
M
M
M 非饱和点
u
u
u 的
M
M
M 交错树的生长来求
M
M
M 可扩路(交错树方法)。
定义1 设 G = ( X , Y ) G=(X, Y) G=(X,Y), M M M 是 G G G 的匹配, u u u 是 X X X 的 M M M 非饱和点。称树 H H H 是 G G G 的扎根于点 u u u 的 M M M 交错树, 如果:
- u ∈ V ( H ) u ∈V(H) u∈V(H);
- 对任意 v ∈ V ( H ) v ∈V(H) v∈V(H) (即 H H H 中的每个顶点 u u u), H H H 中唯一的 ( u , v ) (u, v) (u,v) 路是 M M M 交错路,则称这个树 H H H 是一棵扎根于 u u u 的 M M M 交错树
扎根于 u u u 的 M M M 交错树,实际上就是从 u u u 出发的各个交错路,注意可扩路也属于交错路

扎根于 M M M非饱和点 u u u的 M M M交错树的生长讨论:
假如扎根于 M M M非饱和点 u u u的 M M M交错树为 H H H。它有两种情形:
- 情形1 除点 u u u外, H H H中所有点为 M M M饱和点,且在 M M M上配对;
- 情形2 H H H包含除 u u u外的 M M M非饱和点。

对于情形1,令 S = V ( H ) ∩ X , T = V ( H ) ∩ Y S=V(H)∩X, T=V(H)∩Y S=V(H)∩X,T=V(H)∩Y, 显然: T ⊆ N ( S ) T\subseteq N(S) T⊆N(S) (即要么 N ( S ) = T N(S)=T N(S)=T,要么 T ⊂ N ( S ) T\subset N(S) T⊂N(S))
-
若 N ( S ) = T N(S)=T N(S)=T, 由于 S − { u } S - \{u\} S−{u} 中点与 T T T 中点配对,所以有: ∣ T ∣ = ∣ S ∣ − 1 |T|=|S|-1 ∣T∣=∣S∣−1, 于是有: ∣ N ( S ) ∣ = ∣ S ∣ − 1 < ∣ S ∣ |N(S)| = |S|-1< |S| ∣N(S)∣=∣S∣−1<∣S∣. 由 Hall 定理, G G G 中不存在饱和 X X X 每个顶点的匹配。
-
若 T ⊂ N ( S ) T\subset N(S) T⊂N(S),则存在 Y \ T Y \backslash T Y\T 中的顶点 y y y 相邻于 S S S 中的顶点 x x x, 由于 H H H 的所有顶点,除了 u u u 之外,都在 M M M 下配对,因此或者 x = u x = u x=u,或者 x x x 是 H H H 交错树上一个饱和的点,则所以 x y ∉ M xy \notin M xy∈/M

当然, y y y可能为 M M M饱和点,也可能为 M M M非饱和点。
若 y y y为 M M M饱和点,可设 y z ∈ M yz ∈M yz∈M, 则加上顶点 y y y及 z z z和边 x y xy xy与 y z yz yz生长 H H H,得到情形1;

若 y y y为 M M M非饱和点,加上顶点 y y y和边 x y xy xy生长 H H H,得到情形2.

后一情况下找到一条M可扩路,可以对匹配进行一次修改,过程的反复进行,最终判定 G G G是否有完美匹配或者求出完美匹配。
总结如下:

算法中判断了 y 为 M 饱和点后,是对交错树进行生长,然后继续执行


(5) 、匈牙利算法复杂性分析
- 、最多循环 ∣ X ∣ |X| ∣X∣次可以找到完美匹配;
- 、初始匹配最多扩张|X|次可以找到完美匹配;
- 、每次生长树的生长至多2|X|-1次。
所以,算法复杂性为 O ( ∣ X ∣ 3 ) O(|X|^3) O(∣X∣3),是好算法。
2、偶图中寻找最大匹配
问题: 在一般偶图上求最大匹配 M M M.
分析: 使用匈牙利算法求完美匹配时,当在扎根于 M M M非饱和点 0 0 0 u的交错树上有 ∣ N ( S ) ∣ < ∣ S ∣ |N(S)|<|S| ∣N(S)∣<∣S∣时,由Hall定理,算法停止。要求出最大匹配,应该继续检查 X − S X-S X−S是否为空,如果不为空,则检查是否在其上有 M M M非饱和点。一直到所有 M M M 非饱和点均没有 M M M 可扩路才停止。

(二)、最优匹配算法 —— 库恩算法(Kuhn - Munkres 算法)
1 、问题
设 G = ( X , Y ) G=(X, Y) G=(X,Y)是边赋权 完全偶图,且 X = { x 1 , x 2 , … , x n } , Y = { y 1 , y 2 , . . . , y n } , w i j = w ( x i y j ) X=\{x_1,x_2,\ldots,x_n\}, {Y=\{y_1,y_2,...,y_n\},w_{ij}=w(x_iy_j)} X={x1,x2,…,xn},Y={y1,y2,...,yn},wij=w(xiyj) 在 G G G中求出一个具有最大权值的完美匹配,这个完美匹配就称为 最优匹配
由于 K n , n K_{n,n} Kn,n 有 n ! n! n! 个不同完美匹配,所以枚举计算量是 n ! n! n!。
在匈牙利算法的基础上,Kuhn(1955) 与 Munkres(1957) 提出了上面问题的好算法。
2 、可行顶点标号与相等子图
定义2 设
G
=
(
X
,
Y
)
G=(X, Y)
G=(X,Y), 若在顶点集
X
∪
Y
X \cup Y
X∪Y 上的实值函数
l
l
l 适合下述条件 , 对任意的
x
∈
X
,
y
∈
Y
x ∈X, y ∈Y
x∈X,y∈Y,有:
l
(
x
)
+
l
(
y
)
≥
w
(
x
y
)
l(x)+l(y)\geq w(xy)
l(x)+l(y)≥w(xy)
称函数 l l l 是赋权完全偶图 G G G的可行顶点标号。
可行顶点标号是这样的顶点标号,它使得每条边的两端点的标号之和至少与这条边的权一样大。
对于任意的赋权完全偶图
G
G
G,均存在
G
G
G的可行顶点标号:
{
l
(
x
)
=
max
y
∈
Y
w
(
x
y
)
,
若
x
∈
X
,
l
(
y
)
=
0
,
若
y
∈
Y
.
\begin{cases}l(x)=\max_{y\in Y}w(xy),\text{若}x\in X,\\l(y)=0,\text{若}y\in Y.&\end{cases}
{l(x)=maxy∈Yw(xy),若x∈X,l(y)=0,若y∈Y.
公式含义为:对于 X X X 点集中的点 x x x,与 x x x 相连接的所有 Y Y Y 中的点 y y y,取边权 w ( x y ) w(xy) w(xy) 最大的值作为 l ( x ) l(x) l(x), 偶图 Y Y Y 中的点,所有点 y y y 标号为 0,则 l l l 是 G G G的一个可行顶点标号。(上面这个标号方式是比较规范的一种,但是还有其他的标号方式)
定义3 设
l
l
l 是赋权完全偶图
G
=
(
X
,
Y
)
G=(X, Y)
G=(X,Y)的可行顶点标号,令:
E
l
=
{
x
y
∈
E
(
G
)
∣
l
(
x
)
+
l
(
y
)
=
w
(
x
y
)
}
E_l=\left\{xy\in E\left(G\right){\large{|}}l(x)+l(y)=w(xy)\right\}
El={xy∈E(G)∣l(x)+l(y)=w(xy)}
称
G
l
=
G
[
E
l
]
G_l = G [E_l]
Gl=G[El]为
G
G
G的对应于
l
l
l 的相等子图。(具有边集
E
l
E_l
El 的
G
G
G 的生成子图)

W W W 矩阵每行的最大值就是 X X X 每个顶点的标号,旁边则是通过 W W W 导出的 l l l 的相等子图
定理15 设 l l l 是赋权完全偶图 G = ( X , Y ) G=(X, Y) G=(X,Y)的可行顶点标号,若相等子图 G l G_l Gl有完美匹配 M ∗ M^* M∗, 则 M ∗ M^* M∗是 G G G的最优匹配。

可行顶点标号法中两个端点的标号值之和是大于等于对应边的权值的。所以任一完美匹配的边的权值小于等于对应点的标号值之和。但是在相等子图中,里边的点的标号值之和已经认为设定成了等于边的权值。注意完美匹配的边要覆盖所有的点,所以在两个式子的右边是相等的。都是G中所有顶点的标号值之和。即M*中的边的权值之和是等于所有顶点的标号值之和的,而M中的边的权值之和是小于等于所有顶点的标号值之和的。所以推出相等子图中的完美匹配就是最优匹配。
根据上面定理,如果找到一种恰当可行顶点标号,使得对应的相等子图有完美匹配 M ∗ M^* M∗, 则求出了 G G G的最优匹配。
Kuhn 采用顶点标号修改策略,找到了求最优匹配好算法,介绍如下:(只掌握怎么做,不用掌握为什么这么做)
给一初始顶点标号
l
l
l ,在
G
l
G_l
Gl中任选一个匹配
M
M
M。
(1) 若 X X X是 M M M饱和的,则 M M M是完美匹配,且由上述定理知, M M M是最优匹配。否则,令 u u u是一个 M M M非饱和点,置: S = { u } , T = Φ S=\{u\},T=Φ S={u},T=Φ。
(2) 若
N
G
l
(
S
)
⊃
T
N_{G_l}(S)\supset T
NGl(S)⊃T,转(3)。否则,计算:(根据交错路求一个
α
l
\alpha_{_l}
αl)
α
l
=
min
y∉
x
∈
S
T
{
l
(
x
)
+
l
(
y
)
−
w
(
x
y
)
}
\alpha_l=\min_{\overset{x\in S}{\operatorname*{y\not\in}}T}\left\{l(x)+l(y)-w(xy)\right\}
αl=y∈x∈STmin{l(x)+l(y)−w(xy)}
其中 α l \alpha_{_l} αl 为 x ∈ S x \in S x∈S 且 y ∉ T y ∉ T y∈/T 的那些边
且由:
l ^ = { l ( v ) − α l , v ∈ S l ( v ) + α l , v ∈ T l ( v ) , 其 它 \hat{l}=\begin{cases}l(v)-\alpha_{_l},v\in S\\l(v)+\alpha_{_l},v\in T\\l(v),\text{其 它}&\end{cases} l^=⎩ ⎨ ⎧l(v)−αl,v∈Sl(v)+αl,v∈Tl(v),其 它
实际上只修改了 M M M 交错路上的点的标号值,即点需要满足 ∈ S \in S ∈S 和 T T T
给出新的可行顶点标号 l ^ \hat{l} l^(注意 α l > 0 \alpha_{_l} > 0 αl>0 且 N G l ^ ⊆ T N_{G_{\hat{l}}} \subseteq T NGl^⊆T), l ^ \hat{l} l^ 代替 l l l, G l ^ G_{\hat{l}} Gl^ 代替 G l G_l Gl, 在新标号下重新开始。
(3) 在 N G l ( S ) − T N_{G_l}(S)-T NGl(S)−T中选择点 y y y。若 y y y是 M M M饱和的, y z ∈ M yz ∈M yz∈M, 则置 S = S ∪ { z } , T = T ∪ { y } S=S∪\{z\},T=T∪\{y\} S=S∪{z},T=T∪{y} 转(2)。否则,设 P P P是 G l G_l Gl中 M M M可扩路,置 M = M Δ E ( P ) M=MΔE(P) M=MΔE(P),转(1).
注: 该算法把匈牙利算法用于其中,主要是用来判定和求完美匹配。


偶数阶完全图可一因子分解,即 K 2 n K_{2n} K2n可分解成 2 n − 1 2n-1 2n−1 个一因子,所以 K 2 ( 3 n − 1 ) K_{2(3n-1)} K2(3n−1),可分解成 2 ∗ ( 3 n − 1 ) − 1 = 6 n − 3 2*(3n-1)-1=6n-3 2∗(3n−1)−1=6n−3 个一因子即 2 n − 1 2n-1 2n−1 个 3 3 3 因子的和
注意: 不同的一因子之间是可以并起来的。

四、匹配在矩阵中的应用(不掌握)
1、矩阵与偶图
设 A = ( a i j ) A=(a_{ij}) A=(aij)是 n n n阶方阵。构造偶图 G = ( X , Y ) G=(X, Y) G=(X,Y)如下:
X X X表示行集合, Y Y Y表示列集合。 X X X中元素 x i x_i xi与 Y Y Y中元素 y j y_j yj连线,当且仅当 a i j ≠ 0 a_{ij}≠0 aij=0
2、下面研究detA和GA=(X, Y)之间关系
于是有如下定理:
P117—118 习题4 : 13