码迷,mamicode.com
首页 > 其他好文 > 详细

KM——二分图带权最大匹配

时间:2019-03-23 00:27:56      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:并且   根据   style   strong   相等   存在   font   赋值   das   

定义:完备匹配:两个集合顶点数都为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}的每个顶点寻找它的“配偶”。

KM——二分图带权最大匹配

标签:并且   根据   style   strong   相等   存在   font   赋值   das   

原文地址:https://www.cnblogs.com/StephenCurry30/p/10582035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!