二分图最大匹配问题
对匈牙利算法的概括:
这里的匈牙利算法值指的是找二分图最优匹配的算法,在有的资料中,这个算法叫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) 百度百科