主要定理二分图的最大匹配算法二分图的带权重的最大匹配

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
到基数更大(多 1)的一个匹配,与 M 是最大匹配矛盾。 ()。假设 M 是一个匹配,图 G 上不含有 M-增广路,而 M 不
是最大匹配。 于是,存在 G 上另外一个匹配 M’,有|M’| > |M|。
2020/4/21
山东大学 软件学院
10
证明
令 H 是 G 上 M’M 的导出子图。
由于 H 中的每个顶点最多只能和 M 中的一条边以及 M’中的
由假设,Z 中除 u 外所有的点都被 M*匹配。(否则可找到一
条 M*-增广路,与 M*是最大匹配矛盾。)
令 X = Z S,Y = Z T。则 u X。
由于 X \ {u}中的点与 Y 中的点在 M*下匹配,因此
|Y| = |X| 1。
由定义,Y 是从 X 中的点出发“经过与 u 连通的 M*-交错路
上的一条边可达”的 T 中顶点的集合。
(X)是从 X 中的点出发“经过任意一条边可达”的 T 中顶点
的集合。
因此,Y (X)。
2020/4/21
山东大学 软件学院
32
证明
任取 X 中的一点 s,由 X 的定义,s 通过 M*-交错路与 u 相 连。
X
(X)
u
t1
s t2
考察与 s 相邻的(X)中的顶点 t。
这表明 H 中至少有一个连通分支,是一条起始于 M’中的边
又终止于 M’中的边的路。
由定义,这条路是一条 M-增广路,与给定条件矛盾。
2020/4/21
山东大学 软件学院
11
通过增广路求二分图上的最大匹配
从图 G = (S, T, E)的任意一个匹配 M 开始,比如空集。 由 S 的一个未被匹配的顶点出发,用一个系统方法搜索一条
都加入 Q。/* Q 是已标号但未检查的顶点的集合 */
3 while Q do
4
从 Q 中取出一个顶点 k,然后将 k 从 Q 中删除。
5
if k S then
6
对每条同 k 关联的边(k, j) M,若 j 尚未被标号,
则给点 j 标号 k,并将 j 加入 Q。
7
else /* k T */
2020/4/21
山东大学 软件学院
17
例子
1
6
2
72
3
82
4
9
5
10
找到一条增广路(2, 8)。更新M。
2020/4/21
山东大学 软件学院
18
例子
1
63
2
7
3
83
4
93
5
10 3
找到一条增广路(3, 10)。更新M。
2020/4/21
山东大学 软件学院
19
例子
2020/4/21
1 2 10 3 4 5
2020/4/21
山东大学 软件学院ຫໍສະໝຸດ Baidu
8
顶点覆盖
2020/4/21
山东大学 软件学院
9
定理6.8.1
定理 6.8.1(Berge, 1957)图 G 中的一个匹配 M 是最大匹配当且 仅当 G 不包含 M-增广路。 (说明:G 是一般图,不要求是二分图。) 证:()。G 上若有 M-增广路,则可以使用这条路更新 M 得
2020/4/21
山东大学 软件学院
4
例子
2020/4/21
山东大学 软件学院
5
定理
定理:记G’上的最大流为f*,流值为|f*|。G上的最大匹配 为M*。则|f*| = |M*|。 证明:首先证|f*| |M*|。 给定最大匹配M*,令G’上M*中的边的流值为1,s到M*匹 配的V一侧点的各条边上流值为1,M*匹配的U一侧点到t的 各条边上流值为1,则构造了一个流值为|M*|的流f。 因此,显然有|f*| |M*|。 再证|f*| |M*|。 设f*为G’上的最大流。 由整流定理,G’上每条边上的流值为整数。由于每条边的 容量均为1,因此G’上每条边的流值不是0就是1。
2020/4/21
山东大学 软件学院
6
证明
再由流守恒约束,V中每个顶点最多有一条出去的边流值为 1。同理,U中每个顶点最多有一条进来的边流值为1。 记M = {e E | e上的流值 > 0},因此M中的任何两条边均不 共享顶点,即,M是一个匹配,且|f*| = |M|。 因此,显然有|f*| |M|。
若(s, t) M,如图中的(s, t1),则 t1 位于从 u 到 s 的交错路上。
若(s, t) M,如图中的(s, t2),则从 u 到 s 的 M*-交错路 {(s,
t2)}是一条从 u 到 t2 的交错路。
2020/4/21
山东大学 软件学院
33
证明
取遍 X 中所有的点 s,就能遍历(X)中所有的点 t。 因此(X)是 T 中通过“只经过 X 中的点的 M*-交错路”与 u
2020/4/21
山东大学 软件学院
22
时间复杂度分析
令|S| = m,|T| = n,假设 m n。 找一条增广路(或判断不能找到)标号算法最多进行 O(mn)
次检查(因为最多有这么多条边)。 初始匹配最多被增广 m 次。 所以,总的计算量为 O(m2n)。
2020/4/21
山东大学 软件学院
2020/4/21
山东大学 软件学院
7
基本概念
M -交错路:边在对集 M 和 E \ M 中交错出现的路。 M -增广路:起点和终点都不在 V(M)中的 M -交错路。 顶点覆盖 K:K 是 V(G)的子集,且 G 的每条边都至少有一
个端点在 K 中。 最小顶点覆盖 K:不存在另外一个覆盖 K’,使得 K K 。
连通的顶点的集合。 而 Y 是 T 中通过“M*-交错路”与 u 连通的所有顶点的集合。 因此,(X) Y。 即,(X) = Y。 因此,|(X)| = |Y| = |X| 1 < |X|,与(*)矛盾。
2020/4/21
山东大学 软件学院
34
König定理
定理 6.8.3(König,1931) 在二分图中,最大基数对集的边 数等于最小顶点覆盖的点数。 证:设 G = (S, T, E)是一个二分图,M*是 G 上的最大匹配。
2020/4/21
山东大学 软件学院
24
解释
2020/4/21
山东大学 软件学院
25
标号,找增广路
u4
v1
v2
u2
v3
u3
v5
u6
v5
u5
v2
2020/4/21
山东大学 软件学院
26
找增广路过程中形成的搜索树
虚线表示v5, u3相邻, 但在对v5进行检查的过程中, u3已经标号,因此从v5不能 对u3标号。
第6章 图与网络分析
6.7 最大匹配问题
2020/4/21
最大对集(匹配)问题
二分图的对集,基本概念,主要定理 二分图的最大匹配算法 二分图的带权重的最大匹配——分派问题及算法
2020/4/21
山东大学 软件学院
2
基本概念
图 G = (V, E)的对集 M:M 是 E 的子集,且 M 中任意两条边 均不相邻(都不共享顶点)。
终止在 k 的一条增广路被找到。从 k 开始,
反向追踪标号找到这条增广路 P,路的起
始顶点有标号“”。
用增广路 P 更新 M。
删除 G 上所有的标号。重新对 S 中所有不
在 M 中的顶点标号“”,然后将这些顶
点都加入 Q。
endif
山东大学 软件学院
14
二分图上最大匹配的标号算法
15
endif
16 endwhile
23
解释
从S中未匹配的顶点开始,标号找M-增广路的过程,实际上 是一个从S中未匹配的顶点开始进行广度优先搜索的过程。 该过程与标准的广度优先搜索不完全相同。 设搜索树的根位于第1层。区别仅在于,在搜索过程中,奇 数层顶点(在S一侧)按广度优先展开;偶数层顶点(在T 一侧)按M中的(唯一一条)边顺延(而不是按广度优先 展开)。
63 7 8 93 10 4
找到一条增广路(4, 10, 3, 9)。更新M。
山东大学 软件学院
20
例子
71 82
3 10 4 5
6 75 85 9 10 5
找不到增广路,结束。
2020/4/21
山东大学 软件学院
21
例子
71 82
3 10 4 5
6 75 85 9 10 5
{红边}为最大匹配,{蓝色顶点}为顶点覆盖。
2020/4/21
山东大学 软件学院
27
增广,得到一个更大的匹配
2020/4/21
山东大学 软件学院
28
广度优先搜索的观点
2020/4/21
构造的辅助图
山东大学 软件学院
从辅助图上入度为0 的点v2开始的广度 优先搜索
29
辅助图的构造
顶点集 = V。 从v1到v2有一条有向边,当且仅当 v2是从v1开始的增广路上 下一个V中的顶点。
2020/4/21
山东大学 软件学院
30
Hall定理
定理 6.8.2(Hall, 1935) 设 G = (S, T, E)是一个二分图。
则:G 含有匹配 S 中的每个点的匹配 当且仅当
X S ,有 X X 。
(*)
证:()。假设 G 有一个匹配 M,匹配了 S 中所有的顶点。
任取 S 的一个子集 X。则 X 通过 M 匹配到的点的集合 Y 是
2020/4/21
山东大学 软件学院
3
使用最大流算法求二分图上的最大匹配
给定二分图G = (V, U, E),构造流网络。 增加一个源点 s,从 s 到 V 中每个顶点引一条有向边。 增加一个目标顶点 t,从 U 中每个顶点向 t 引一条有向边。 E中的边均从 V 指向 U。 记得到的流网络为G’ = (V’, E’)。G’中的每条边均为单位容 量。 计算G’上从 s 到 t 的最大流。 E 中的饱和边即构成 G 上的一个最大匹配。
一条边关联,因此 H 中每个顶点的度都不超过 2(都是 1 或
者 2)。
因此,H 的每个连通分支或者是边在 M 和 M’中交错出现的
路,或者是边在 M 和 M’中交错出现的偶圈。
由于在 G 中有|M’| > |M|,而 H 是 M’和 M 的对称差,M’在
H 中的边数必然也 > M 在 H 中的边数。
2020/4/21
山东大学 软件学院
35
König定理
定义 K = (S \ X) Y。
X
S\X
U
Y 则 G 中的每一条边至少有一个端点在 K 中(即,K 是一个
顶点覆盖)。
否则,G 中有一条边其一个端点在 X 中,另一个端点不在 Y 中,与(X) = Y 矛盾。
17 return M。(此时 S 中没有标号的点的集合和 T 中已标号
的点的集合构成对偶于 M 的最小顶点覆盖。)
2020/4/21
山东大学 软件学院
15
例子
1
6
2
7
3
8
4
9
5
10
2020/4/21
山东大学 软件学院
16
例子
1 2 3 4 5
6 71 8 9 10
找到一条增广路(1, 7)。更新M。
M-饱和点 i:V(M)中的顶点(i V(M),匹配的点)。 M-非饱和点 i:V(M)之外的顶点(i V(M),没有匹配的点)。 极大对集 M:不存在另外一个对集 M ,使得 M M 。 最大对集 M:不存在另外一个对集 M ,使得 M M 。 完美对集 M:对集 M,匹配了 G 上所有的点。
2020/4/21
山东大学 软件学院
13
二分图上最大匹配的标号算法
8 9
10 11
12 13
14
2020/4/21
if k 在 M 中 then /* 此时有 k T V(M) */
设(i, k)是关联于 i、属于 M 的边(此时 i S)。
给点 i 标号 k,并将 i 加入 Q。
else /* 此时有 k T \ V(M) */
通 过 构 造 一 个 大 小 和 |M*| 相 等 的 最 小 顶 点 覆 盖 来 证 明 定 理。 令 U 表示 S 中 M*未匹配的顶点的集合,Z 表示从 U 中的 顶点出发经过 M*-交错路能够到达的顶点的集合。 令 X = Z S,Y = Z S。 由 Y 的定义,可知 M*匹配了 Y 中的所有的顶点;由 Hall 定理的证明,可知(X) = Y。
M-增广路 P。 若 P 存在,则通过交换 P 在 M 和不在 M 中的边,便得到一
个其基数增加 1 的匹配。 然后从新的匹配开始,继续迭代,直到不存在 M-增广路,
则当前的匹配就是 G 的最大匹配。
2020/4/21
山东大学 软件学院
12
二分图上最大匹配的标号算法
输入:二分图 G = (S, T, E)。 输出:G 的最大匹配 M。 1 M 。 2 对 S 中所有不在 M 中的顶点标号“”,然后将这些顶点
X 的一个子集。因此 X Y X 。
()。反证。假设 G 满足(*)式,但 G 没有匹配 S 中所有顶点
的匹配。
令 M*是 G 的一个最大匹配。则 M*没有匹配 S 中所有的顶
点。设 u 是一个未被 M*匹配的顶点。
2020/4/21
山东大学 软件学院
31
证明
令 Z 为从 u 出发经过 M*-交错路可达的所有顶点的集合。
相关文档
最新文档