定义:完备匹配:两个集合顶点数都为N,且有N条边被匹配<每个点都匹配>。形象地理解:有n男n女,每个人都可以找到自己心仪的对象。
特点:只适用于完备匹配(两个集合顶点数都为N,且有N条边被匹配<每个点都匹配>)
定义:
· 设二分图两个顶点集合为{A},{B}
· 顶标:给每个顶点赋值,全称顶点标记值
设集合{A}顶标为la[i],{B}顶标为lb[i],满足对于任何一条边W,两个顶点的顶标和>=边的权值(la[i] + lb[j] >= W(i , j) )
· 交错树:考虑匈牙利算法,若寻找增广路失败,那一条路径即为“交错树”。显然,根据匈牙利算法,第(1,3,5,……)条边都为非匹配边,并且由子集{A}的顶点出发向子集{B}的顶点;第(2,4,6,……)条边都为已匹配边,并且由并且由子集{B}的顶点出发向子集{A}的顶点。并且这条路径起始点在子集{A},终点也在子集{A}。
· 相等子图:设二分图两个顶点集合为{A},{B},由所有边满足W(ai,bj) = la[ai] + lb[bj]构成的二分图(可以理解为相等子图是不带权值的)
证明——一旦存在相等子图的完备匹配(不带权的),此匹配必然是二分图带权最大完备匹配!
证明:
一旦相等子图存在完备匹配,考虑其所有匹配边的权值和(虽然求相等子图完备匹配时不带权值,但最终还是要回归到原来的带权匹配,这里指的是边的原权值),为∑(i from 1 to n)la[i]+lb[i](为什么?) 而我们又知道对于任意一条边W,la[i] + lb[j] >= W(i , j)。因此原二分图的完备匹配(注意:n条边,涵盖所有2n个顶点)的n条边的权值之和不可能大于相等子图的完备匹配的权值之和!故此相等子图的完备匹配即为原二分图带权最大匹配!
证毕。
我们可以发现上述证明其实就是将问题转化为:如何求出适当的顶标值,使得相等子图拥有完备匹配。而相等子图的完备匹配(不带权!)可以用dfs求增广路解决(就是匈牙利算法的dfs部分)!
下面我们来探讨如何给每个顶点求出适当的顶标值。
我们可以考虑开始赋以每个顶点一个初值,比如lb[i] = 0, la[i] = max(W(ai,?)),这样,对于任意一条边,都满足la[i] + lb[j] >= W(i,j)。
接下来,对{A}的每个顶点寻找它的“配偶”。
原文地址:https://www.cnblogs.com/StephenCurry30/p/10582035.html