二分图最大匹配问题

对匈牙利算法的概括:

这里的匈牙利算法值指的是找二分图最优匹配的算法,在有的资料中,这个算法叫KM算法,匈牙利算法指的是找最大匹配的算法。

匈牙利算法看起来挺复杂,但是概括起来也就干了下面的事情:

基于这样一个定理:

若由二分图中所有满足A[ i ]+B[j]=w[i,j]的边(i,j)构成的子图(称做相等子图)有完备匹配,那么这个完备匹配就是二分图的最大权匹配。[4]

然后就是在相等子图中找完备匹配,如果找不到,有两个改进方案:1)修改相等子图,通过重新分配label ;   2)增广路径,扩大匹配边的数目

然后继续找完备匹配,找不到继续改,继续找,总会找到的,找到就结束了。

参考资料:

阅读下面三篇文章,已经能够很好的了解,二分图最大匹配问题,KM算法,匈牙利算法

(1)维基百科关于匈牙利算法的描述,参考文献,意义很大

http://en.wikipedia.org/wiki/Hungarian_algorithm

(2)对相关概念讲的很清楚,没有特别针对二分图

http://people.scs.carleton.ca/~maheshwa/courses/573/talk01/bipartitematching.ps

(3)二分图匹配和匈牙利算法,来龙去脉讲的和清楚

但是这篇文献里面有个问题,它一直说要找perfect matching,他这个对perfect matching的定义就是每个点都要匹配上,但这必然要求二分图的两部分的顶点数目相等。其实,看了看其他资料,perfect matching是不需要的,complete matching就可以了,complect matching要求两部分有一个达到所有点匹配就可以了。

http://www.cse.ust.hk/~golin/COMP572/Notes/Matching.pdf

(4) 百度百科

http://baike.baidu.com/view/739278.htm

原文地址:https://www.cnblogs.com/naniJser/p/2688988.html