最佳匹配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)直到找到相等子图的完备匹配为止

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值