KM算法总结
二分图最大权匹配问题
二分图中如果给每条边一个权值,此时求解二分图的权值和最大的完美匹配的问题就是所谓的二分图的最大权匹配问题,对于不是完全二部图的二分图,我们可以添加权值为0的边,使其变为完全二部图。
求解方法
理论结果
从上面的分析可以看出,相等子图里面的最大完美匹配一定是二部图的最大完美匹配,而问题在于相等子图并不一定存在完美匹配,所以现在的问题是如何给相等子图改标号,使得相等子图中的匹配数增加,当相等子图中的匹配数等于最大匹配数时,算法停止。
算法
匈牙利算法中每次第一步都是选取一个未饱和点x作为初始点,T是位于Y那边的存在于匹配中的点,当匈牙利算法停止时没有找到完美匹配,此时S中的点一定是于T中的点的,那么我们只需要将S中未饱和的点饱和即可,因此我们需要从Y-T中添加某些点与S中x的边,这样就可以保证添加的边一定是有用的边,也即添加新的边以后,新的相等子图里面一定存在增光路。而对于权值的改变要保证S,T之间的匹配不变,S,T之外的匹配不变。这样就不会在算法的后续过程中影响已经属于最大权完美匹配中的边。
变换的原则实际上从已经确定的相等子图中扩充出去,为了不破坏之前的相等子图中的边,所以原来相等子图中的顶点权值和不变。而为了避免破坏相等子图的补图的可行编号,所以我们只需要调整相等子图两边的权值即可。