最佳匹配KM(kuhn-Munkres)算法

给定一个二分图GMG边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。

  极大匹配(Maximal Matching)是指在当前已完成的匹配下,无法再通过增加未完成匹配的边的方式来增加匹配的边数。最大匹配(maximum matching)是所有极大匹配当中边数最大的一个匹配。选择这样的边数最大的子集称为图的最大匹配问题。

  如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配,也称作完备匹配。完美匹配:如果所有点都在匹配边上,称这个最大匹配是完美匹配。

求二分图最大匹配可以用最大流(Maximal Flow)或者匈牙利算法(Hungarian Algorithm)

如果G为加权二分图,则权值和最大的完备匹配称为最佳匹配,求一个二分图的最佳匹配的普遍算法是KM(Kuhn-Munkres)算法。

  KM算法的基本思想是,把权值转化为可行顶标,再用匈牙利算法求出一组完备匹配,如果无法求出完备匹配,则修改可行顶标,直至找到完备匹配为止,这时的完备匹配为最佳匹配。

  KuhnMunkras算法流程:

  (1)初始化可行顶标的值

  (2)用匈牙利算法寻找完备匹配

  (3)若未找到完备匹配则修改可行顶标的值

  (4)重复(2)(3)直到找到相等子图的完备匹配为止

 

你可能感兴趣的:(最佳匹配KM(kuhn-Munkres)算法)