当前位置:
文档之家› 算法合集之《浅析二分图匹配在信息学竞赛中的应用》
算法合集之《浅析二分图匹配在信息学竞赛中的应用》
t1 u
t2
t3
Dt1≤ Du ; Dt2≤ Du ; Dt3≤ Du
初步分析
对边v,u如果满足条件u∈/ T ,v∈Pu,
则称u可替换v。
如果边v,u(u可替换v),则必须满足 Dv≤ Du ,否则用u替换v可得到一棵权值更 小的生成树T-v+u 。
初步分析
不等式Dv≤Du中v总为树边,而u总为
的集合。
初步分析
,t2t,2如,那t右t33中连图么接任,用了u意非∈u/ 一的树T,两条边t个1都,u端代可t2点,替以,t3树∈得所T边到以,t一1且,t1 P棵u={新t1,的t2生,成t3}。树。
而如果u的边权比所替换的 边的边权更小的话,则可以得 到一棵权值更小的生成树。
那么要使原生成树T是一棵 最小生成树,必须满足条件:
X'
Y'
1
1
2
2
3
3
4
4
5
6
7
在X'结点i和Y'结点i之间添加边(i,i)。
构造二分图G' X'
1
2
3
4
Y'
1 C1 2 C2 3 C3 4 C4 5 C5 6 C6
7 C7
给每个Y'结点i一个权值Ci。如果点i被匹配则 得到权值Ci,否则得到权值0。
算法分析
设 Ci ai T
[引理]对于图G中的任何一个完备匹配M,都可 以在图G'中找到一个唯一的完备匹配M'与其对
X'
Y'
1
1
2
2
3
3
4
4
5
6
7
同样建立两个互补的结点集合X',Y'。 X'结点i表示树边ai(ai∈T), Y'结点j表示任意边 aj(aj∈V0)。
构造二分图G'
X'
Y'
1
1
2
2
3
3
4
4
5
6
7
如果图G0中,aj 可替换ai,且Ci-Cj>0,则在X' 结点i和Y'结点j之间添加边(i,j)。
构造二分图G'
预处理的时间复杂度为O(|E|) KM算法的时间复杂度为O(|V||E|)
由于图G是二分完全图。
|V|=2max{n – 1, m – n + 1}=O(m) |E|=|V|2=O(m2)
所以算法总时间复杂度了许多虚 结点和虚边,但其并没 有太多实际意义。
应,且SM = μ-SM'。对于图G'中的任何一个完备
匹配M',同样可以在图G中找到一组以M为代表
设M为图G的最大权匹配,显然M也是完备匹配, 则满足
li rj Wi, j (i, j)M
设完备匹配X的所有匹配边的权值和为SX,则
SM
Wi, j li rj
(i, j)M
iX
jY
显然,此时的可行顶标之和取到最小值。
算法分析
因为虚结点Xi的匹配边肯定是权值为0的虚边, 所以li=0。同理对于虚结点Yj,rj = 0。
我们来构造二分图G
X
Y
1
5
2
6
3
7
4
建立两个互补的结点集合X,Y。 X结点i表示图G0中树边ai(ai∈T)。 Y结点j表示图G0中非树边aj(aj∈/ T)。 设这些结点均为实点。
构造二分图G
X
Y
1
5
2
6
3
7
4
如果图G0中,aj 可替换ai,且Ci-Cj>0,则在X结点i和 Y结点j之间添加边(i,j), 边权Wi,j=Ci-Cj。
那问题就是求出所有的Δ使其满足以上不等式且:
m
f i i 1
最小。
观察此不等式
大家或许会v发现这u 个不C等v 式C似u曾相识!
这就是在求二分图最佳匹配的经典KM算法中 不其可中或不缺等的号一右个侧不C等v-式C。u是一个已知量!
KM算法中,首先给二分图的每个顶点都设一个 可行顶标,X结点i为li,Y结点j为rj。从始至终,边权 为Wv,u的边(v,u)都需要满足lv + ru ≥Wv,u 。
浅析二分图匹配 在信息学竞赛中的应用
长郡中学 王俊
引言
二分图匹配是一类经典的图论算法, 在近年来信息学竞赛中有广泛的应用。
二分图和匹配的基础知识已经在前辈 的集训队论文中有过介绍,本文主要通过 一道例题研究其应用。
[例题] Roads
给定一个无向图G0=(V0,E0,C),V0为顶点 集合,E0为边集合(无重边),C为边权(非负整数) 。设n= |V0|,m= |E0|,E0中前n-1条边构成一棵生成树 T。请将边权进行如下修改,即对于e∈E,把Ce修改 成De(De也为非负整数),使得树T成为图G的一棵最 小生成树。修改的代价定义为:
m
SM li rj
li
rj i f
iX
jY
iX 且i为实点
jY 且j为实点
i 1
显然,SM即是满足树T是图G0的一棵最小生 成树的最小代价。那么问题就转化为求图G的最
大权完备匹配M,即可用KM算法求解。
复杂度分析
我们来分析一下该算法的时间复杂度。
设这些边均为实边。
构造二分图G
X
Y
1
5
2
6
3
7
4
8
在结点数少的一侧添加虚结点,使得X结点和Y结 点的数目相等。
构造二分图G
X
Y
1
5
2
6
3
7
4
8
如果X结点i和Y结点j之间没有边,则添加一条权 值为0的虚边(i,j)。
算法分析
对于图G的任意一个完备匹配X,都有
li rj Wi, j (i, j) X
f Ce De eE
请求出修改的最小代价。
1
1
6
4
2
4 25
2
4 23
3
34
27
3
34
44
5 5
f=|6-4|+|2-2|+|5-3|+|7-4|+|3-3|+|2-4|+|4-4|=9
初步分析
根据与树T的关系,我们可以把图G0中的边分成
树边与非树边两类。 设Pe表示边e的两个端点之间的树的路径中边
非树边。 那么显然树边的边权应该减小(或不变),
而非树边的边权则应该增大(或不变)。 设边权的修改量为Δ,即 Δe=|De-Ce|
当e∈T, Δe=Ce-De,即De=Ce-Δe
当e∈/ T, Δe=De-Ce, 即De=Ce+Δe
初步分析
那么当u可替换v时,由不等式
Dv Du
Cv v Cu u v u Cv Cu
那么,算法中是否 存在大量冗余呢?还有 没有优化的余地呢?
算法分析
答案是肯定的,如果不添加这些虚结点和虚 边,可以得到更好的算法。
匹配 下面就介绍一种更优秀的
算法!
前面用KM算法解此题时构造了一个边 上带有权值的二分图。其实不妨换一种思路, 将权值由边转移到点上,或许会有新的发现。
构造二分图G'