没有合适的资源?快使用搜索试试~ 我知道了~
康奈尔 CS6820 算法分析讲义 康奈尔 CS6820 算法分析讲义 康奈尔 CS6820 算法分析讲义 ======================
资源推荐
资源详情
资源评论
康奈尔大学,2016年秋季学期 CS 6820:算法
讲义:二分图匹配算法 8月24日至9月2日
这些笔记分析了涉及二分图匹配的优化问题的算法。 匹配算法不仅在自身中很有用(
例如,在网络中将客户与服务器匹配,或在市场中将买家与卖家匹配),而且还为学习图
算法理论和算法中的许多重复主题提供了一个具体的起点。这些主题的例子包括增广路径
、线性规划松弛和原始-对偶算法设计。
1 二分图最大匹配
在本节中,我们介绍了二分图最大匹配问题,提出了一个时间复杂度为 O(mn)的朴素算
法,然后介绍和分析了由Hopcroft和Karp提出的将运行时间改进为 O(m
√
n)的算法。
1.1 定义
定义1.在无向图中,一个匹配是一组边,使得没有顶点属于该组的超过一个元素。
当我们将一个二分图 G表示为有序三元组 G= (U, V, E)时,表示 U和 V是构成 G顶点
的不相交集合,并且 G的每条边都有一个端点(左端点)在 U中,另一个端点(右端点)
在 V中。
定义2.二分图最大匹配问题是在二分图中计算具有最大基数的匹配的问题。
我们将假设二分图最大匹配问题的输入 G =(U, V, E)以其邻接表表示给出,并且 G的
二分划分——即将顶点集划分为 U和 V——作为问题的一部分给出。
练习1.证明如果二分图的划分没有作为输入的一部分给出,可以从 G的邻接表表示中在线
性时间内构建出来。
(在CS 6820的讲义中,我们将提供一些练习来帮助你理解。鼓励你尝试解决这些练习,
但它们不是作业问题,我们不会检查你是否解决了它们,更不会评分你的解答。)
1
1.2 交替路径和循环;增广路径
以下一系列定义逐步引入了增广路径的概念,它在设计二分图最大匹配问题的算法中起着
核心作用。
定义3.如果 G是一个图, M是 G中的一个匹配,那么一个顶点被称为匹配的,如果它属
于 M中的一条边,否则为自由的。
相对于 M的交替分量(也称为 M-交替分量)是一个边集,它形成了 G的一个连通子
图,其最大度数为2(即路径或循环),其中每个度数为2的顶点恰好属于 M的一条边。
相对于 M的增广路径是一个 M-交替分量,它是一条路径,其两个端点都是自由顶点。
在以下引理中,以及整个讲义中,我们使用符号 A⊕B来表示两个集合 A和 B的对称
差,即属于其中一个集合但不属于另一个集合的所有元素的集合。
引理1。如果 M是一个匹配, P是相对于 M的增广路径,则 M ⊕P是一个比 M多一条边
的匹配。
证明。路径 P具有奇数条边,并且其边交替属于 M和它的补集,以后者开始和结束。 因
此, M ⊕ P比 M多一条边。 要证明它是一个匹配,注意到在 P的补集中的顶点在 M中
与在 M ⊕ P中具有相同的邻居集,而在 P中的顶点在M ⊕ P中只有一个邻居。
引理2.在图 G中,匹配 M是最大基数匹配当且仅当它没有增广路径。
证明.我们已经在引理1中看到,如果匹配 M有增广路径,那么它不是最大基数匹配,所以
我们只需要证明反过来的情况。 假设 M
∗
是最大基数匹配的匹配,且 |M| < |M
∗
|。 边集
M ⊕ M
∗
的最大度数为2,并且 M ⊕ M
∗
中度数为2的每个顶点都属于 M的一条边。 因此
, M ⊕ M
∗
的每个连通分量都是一个 M-交替分量。 至少有一个这样的分量包含的 M
∗
的
边比 M的边多。 它不能是一个交替环或者一个偶长交替路径;这些都有相同数量的 M
∗
和 M的边。 它也不能是一个以 M为起点和终点的奇长交替路径。 因此,它必须是一个以
M
∗
为起点和终点的奇长交替路径。 由于这条路径的两个端点对于 M来说都是自由的,
所以它是一个 M-增广路径,正如所需。
1.3 二分图最大匹配:朴素算法
前面的讨论提示了设计二分图最大匹配算法的以下一般方案。
2
算法1朴素迭代方案用于计算最大匹配
1:初始化 M = ∅.
2:重复执行
3: 找到相对于 M的增广路径 P .
4: M ← M ⊕ P
5:直到没有相对于 M的增广路径为止。
根据引理1,在每次循环迭代结束时,保持 M是一个匹配。 此外,每次循环迭代都会
增加 M的基数1,且基数不能超过 G的顶点数 n/2. 因此,算法在最多 n/2次迭代后终止
。 当算法终止时,根据引理2, M保证是一个最大匹配。
该算法尚未完全规定,因为我们尚未指明关于找到与 M相关的增广路径的过程。 当 G
是一个二分图时,存在一个简单的线性时间过程,我们现在来描述它。
定义4.如果 G= (U, V, E) 是一个二分图, M是一个匹配,那么图 D(G, M)是由 G形成的
有向图,如果一条边不属于 M,则将其从 U指向 V,否则从 V指向 U。
引理3.假设 M是二分图 G中的一个匹配, F表示自由顶点的集合。在 D(G, M)中,从U ∩
F到 V ∩ F的有向路径与 M-增广路径一一对应。
证明。如果 P是从 U ∩ F到 V ∩ F的有向路径在 D(G, M)中,那么 P从自由顶点开始并结
束,并且其边交替于从 U到 V的边(在补集 M中)和从 V到 U的边(在 M中),因此与 P
对应的无向边集是一条增广路径。
反之,如果 P是一条增广路径,那么 P内部的每个顶点都属于 M的一条边,因此当我
们将 P的边按照 D(G, M)中的方向排列时, P的内部顶点有一个入边和一个出边,即 P变
成了一条有向路径。
这条路径有奇数条边,因此它在 U和 V中有一个端点。 这两个端点都属于 F,根据增广
路径的定义。 因此,与 P对应的有向边集是一条从 U ∩ F到 V ∩ F的路径在 D(G, M)中。
引理3表明,在算法1的每个循环迭代中,需要找到增广路径(如果存在)的步骤可以
通过构建辅助图 D(G, M)并运行图搜索算法(如BFS或DFS)来实现,以搜索从 U ∩F到
V ∩F的路径。 构建 D(G, M)需要 O(m + n)的时间,其中 m是 G中的边数,使用BFS或
DFS搜索 D(G, M)也需要相同的时间。为方便起见,假设m ≥ n/2;否则 G包含孤立顶点
,可以在预处理步骤中消除,只需要 O(n)的时间。 然后算法1最多运行 n/2次迭代,每
次迭代需要 O(m)的时间,因此其运行时间为 O(mn)。
备注 1.当 G不是二分图时,我们对算法1的分析仍然证明它在至多n/2次迭代后找到了一
个最大匹配。 然而,寻找增广路径的任务
3
如果存在路径,则路径更加微妙。 第一个多项式时间算法用于寻找增广路径是由杰克·
埃德蒙兹在1965年的一篇名为“路径、树和花朵”的论文中发现的,这是组合优化历史上最
有影响力的论文之一。 埃德蒙兹的算法在 O(mn) 时间内找到一个增广路径,从而导致在
非二分图中找到最大匹配的运行时间为 O(mn
2
)。 随后发现了更快的算法。
1.4 霍普克罗夫特-卡普算法
对于二分图最大匹配的朴素算法来说,有一个潜在的浪费之处即使在搜索辅助图 D(G, M)
的过程中找到了很多增广路径,它仍然每次选择一条增广路径。 霍普克罗夫特-卡普算法
通过纠正这个浪费的问题来改进朴素算法的运行时间;在每次迭代中,它尝试找到许多不
相交的增广路径,并使用它们来增加 M的大小。
下面的定义规定了算法在每次迭代中搜索的结构类型。
定义5.如果 G是一个图, M是一个最大匹配,那么关于 M的一个阻塞增广路径集合是一
个增广路径集合 {P
1
, . . . , P
k
},满足以下条件: 1. 路径 P
1
, . . .
, Pk是顶点不相交的; 2.
它们的长度都相同,为 `;3.
`是一个M-增广路径的最小长度; 4.
长度为`的每个增广路径都至少与P1∪· · ·∪Pk中的一个顶点相交。
换句话说,阻塞增广路径集合是一个(集合上的)最大化的顶点不相交的最小长度增
广路径集合。
引理4.如果 M是一个匹配,而 {P
1
, . . . , P
k
}是一组顶点不相交的 M-增广路径,那么 M ⊕
P
1
⊕ P
2
⊕ · · · ⊕ P
k
是一个基数为 |M| + k的匹配。
推广引理2,我们有以下结果。
引理5.假设 G是一个图, M是 G中的一个匹配, M
∗
是一个最大匹配;
令 k = |M
∗
| − |M|。 边集 M ⊕M
∗
至少包含 k个顶点不相交的 M-增广路径。 因此,G至少有一条长度小
/k的 M-增广路径,其中
n表示 G的顶点数。
证明。边集合 M ⊕M
∗
的最大度数为2,并且每个度数为2的顶点在 M ⊕M
∗
中都属于 M的
一条边。 因此, M ⊕ M
∗
的每个连通分量都是一个M-交替分量。 每个不是增广路径的 M
-交替分量在 M中至少有与 M
∗
相同数量的边。 每个 M-增广路径在 M中的边数比 M
∗
少
一个。 因此, M ⊕ M
∗
的至少 k个连通分量必须
4
是 M-增广路径,并且它们都是顶点不相交的。 为了证明引理的最后一句话,注意 G只有
n个顶点,所以它不能有 k个顶点都多于 n/k个的不相交子图。
这些引理提出了在图中寻找最大匹配的以下方法,这构成了Hopcroft-Karp算法的外循
环。
算法2Hopcroft-Karp算法,外循环
1: M = ∅
2:重复执行
3: 设 {P
1
, . . . . . . . . . . . . . . ., P
k
}是相对于 M的一个阻塞增广路径集合。
4: M ← M ⊕ P
1
⊕ P
2
⊕ · · · ⊕ P
k
5:直到没有相对于 M的增广路径为止
改进运行时间保证的关键是以下一对引理,它们导致对外循环迭代次数的改进界限。
引理6.在Hopcroft-Karp外循环中找到一个非空的阻塞增广路径集合后, M-增广路径的最
小长度严格增加。
证明。我们将使用以下符号表示。
M= 循环迭代开始时的匹配
P
1
, . . . . . . . . . , P
k
= 找到的增广路径的阻塞集合
Q = P
1
∪ · · · ∪ P
k
R = E \ Q
M
′
= M ⊕ Q= 迭代结束时的匹配
F = {相对于 M自由的顶点 }
F
′
= {相对于 M
′
自由的顶点}
d(v) = 从 U ∩ F到 v在 D(G, M) 中的最短路径长度
(如果不存在这样的路径,则 d(v) = ∞。)
如果 (x, y) 是 D(G, M) 的任意一条边,则 d(y) ≤ d(x) + 1。 满足d(y) = d(x) + 1 的 D
(G, M) 的边被称为前进边,而其他边被称为后退边。 注意,在 D(G, M) 中,从 U ∩ F到
任何顶点 v的最短路径必须完全由前进边组成。 特别地, Q包含在前进边的集合中。
在边集合 D(G, M
′
)中, Q中的每条边的方向被反转,而 R中的每条边的方向保持不
变。 因此, D(G, M
′
)有三种类型的有向边 (x, y):
1. 满足 d(y) = d(x) −1的 Q的反向边;
2. 满足 d(y) = d(x) + 1的 R的前进边;
3. 满足 d(y) ≤ d(x)的 R的后退边。
5
剩余102页未读,继续阅读
资源评论
绝不原创的飞龙
- 粉丝: 1w+
- 资源: 1091
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功