二分图最大权匹配(maximum weight matching in a  bipartite graph)

二分图最大权匹配(maximum weight matching in a  bipartite graph)

带权二分图:二分图的连线被赋予一点的权值,这样的二分图就是带权二分图

KM算法求的是完备匹配下的最大权匹配: 在一个二分图内,左顶点为X,右顶点为Y,现对于每组左右连接XiYj有权wij,求一种匹配使得所有wij的和最大。

完备(美)匹配:二分图中左右子图中的各点都有对应的匹配。

带权重的二分图我们可以把它看成一个所有X集合的顶点到所有Y集合的顶点均有边的二分图(把原来没有的边添加入二分图,权重为0即可),也就是说它必定存在完备匹配(即其匹配数为min(|X|,|Y|))为了使权重达到最大,我们实际上是通过贪心算法来选边,形成一个新的二分图(我们下面叫它二分子图好了),并在该二分图的基础上寻找最大匹配,当该最大匹配为完备匹配时,我们可以确定该匹配为最佳匹配(最大匹配:匹配边数最多的匹配,最佳匹配:匹配边的权重和最大的匹配。)

KM算法是通过给每一个点一个顶标来把求最大权匹配的问题转换为求完备匹配的问题。

初始时左图中点的顶标等于与该点相连的边中边权最大的值,右图中点的顶标等于0。设左图的顶标为A[i] ,右图的顶标为B[j] ,顶点之间的边权为 w[i] [j],可行性顶标 A[i] +B[j] >= w(i,j),即顶标始终满足对于任意的一条边,它连接的两个顶点的顶标和大于等于该边的边权。

而将最大权匹配转换为完备匹配的关键定理就是:若由二分图中所有满足A[i] +b[j]=w[i][j] 的边<i,j> 构成的子图(也称相等子图) 有完备匹配,那么这个完备匹配就是二分图的最大权匹配。

以下讲解改编自:https://blog.csdn.net/thundermrbird/article/details/52231639

贪心算法总是将最优的边优先加入二分子图,该最优的边将对当前的匹配子图带来最大的贡献,贡献的衡量是通过标杆来实现的。下面我们将通过一个实例来解释这个过程。 

有带权二分图: 

算法把权重转换成标杆,X集跟Y集的每个顶点各有一个标杆值,初始情况下权重全部放在X集上。由于每个顶点都将至少会有一个匹配点,贪心算法必然优先选择该顶点上权重最大的边,初始情况下生成的二分子图是:

以下是KM生成完备匹配的的过程:

(1&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值