KM——二分图带权最大匹配

博客介绍了完备匹配、顶标、交错树、相等子图等概念,证明了一旦相等子图存在完备匹配,此匹配必然是二分图带权最大完备匹配。还探讨如何求出适当顶标值,先赋初值,对{A}中顶点找配偶,匹配失败时修改顶标值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义:完备匹配:两个集合顶点数都为N,且有N条边被匹配<每个点都匹配>。形象地理解:有n男n女,每个人都可以找到自己心仪的对象。

特点:只适用于完备匹配(两个集合顶点数都为N,且有N条边被匹配<每个点都匹配>)

定义:

  · 设二分图两个顶点集合为{A},{B}

  · 顶标:给每个顶点赋值,全称顶点标记值

    设集合{A}顶标为la[i],{B}顶标为lb[i],满足对于任何一条边W,两个顶点的顶标和>=边的权值(la[i] + lb[j] >= W(i , j) )

  · 交错树:考虑匈牙利算法,若寻找增广路失败,那一条路径即为“交错树”。显然,根据匈牙利算法,第(1,3,5,……)条边都为非匹配边,并且由子集{A}的顶点出发向子集{B}的顶点;第(2,4,6,……)条边都为已匹配边,并且由并且由子集{B}的顶点出发向子集{A}的顶点。并且这条路径起始点在子集{A},终点也在子集{A}。

  · 相等子图:设二分图两个顶点集合为{A},{B},由所有边满足W(ai,bj) = la[ai] + lb[bj]构成的二分图可以理解为相等子图是不带权值的

证明——一旦存在相等子图的完备匹配(不带权的),此匹配必然是二分图带权最大完备匹配!

 

  证明:

  一旦相等子图存在完备匹配,考虑其所有匹配边的权值和(虽然求相等子图完备匹配时不带权值,但最终还是要回归到原来的带权匹配,这里指的是边的原权值),为∑(i from 1 to n)la[i]+lb[i](为什么?) 而我们又知道对于任意一条边W,la[i] + lb[j] >= W(i , j)。因此原二分图的完备匹配(注意:n条边,涵盖所有2n个顶点)的n条边的权值之和不可能大于相等子图的完备匹配的权值之和!故此相等子图的完备匹配即为原二分图带权最大匹配!

  证毕。


  我们可以发现上述证明其实就是将问题转化为:如何求出适当的顶标值,使得相等子图拥有完备匹配。而相等子图的完备匹配(不带权!)可以用dfs求增广路解决(就是匈牙利算法的dfs部分)!

  

  下面我们来探讨如何给每个顶点求出适当的顶标值。

  我们可以考虑开始赋以每个顶点一个初值,比如lb[i] = 0, la[i] = max(W(ai,?)),这样,对于任意一条边,都满足la[i] + lb[j] >= W(i,j)。

  接下来,对{A}的每个顶点寻找它的“配偶”.我们的步骤是:对于每个点{A}中的点:dfs为它寻找配偶;如果找不到,则修改顶标值,再次dfs,直到找到为止。

  因此重点在于在匹配失败时如何修改顶标值

  

  因为匹配失败一定会生成一个交错树T,我们考虑T中的每个节点。如果把{T}中属于{A}的节点的顶标值都减去delta,属于{B}的节点的顶标值都加上delta,会发生什么呢?

  

  

  

转载于:https://www.cnblogs.com/StephenCurry30/p/10582035.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值