KM算法小结

KM算法是解决带权二分图完美匹配问题的一种方法,基于匈牙利算法。通过将问题转化为男生和女生之间的好感度匹配,使总好感度最大化。算法中涉及匹配前规定、匹配过程及匹配后的期望调整,通过不断尝试和调整,最终找到最大匹配值。时间复杂度为O(n^3),可通过优化减少到O(n^2)。
摘要由CSDN通过智能技术生成

正规的算法解释真看不懂。。。。
果然二分图这东西还是得和泡妞有关才好理解。。。 _ (:зゝ∠) _
推荐http://www.cnblogs.com/wenruo/p/5264235.html


正题

KM算法是用于解决带权二分图的完美匹配最大匹配值。(你不懂完美匹配,恭喜恭喜),是基于匈牙利算法的。
我惊讶的发现,空说点实在是不好理解(我智商低←_←),所以,下面把问题改成最令人感兴趣的泡妞问题。。。。
一个点集为男生,一个点集为女生,每一个女生对每一个男生有一个好感度(即边权),问如何配对使得最终好感度的和最大。
ex[i][j]表示第i个妹子对第j个男生的好感度。
这里写图片描述


思路

首先这东西为完美匹配,我们先把女生对男生没有好感度的(真可怜)视为好感度为0,那么匹配后自然就是一个完美匹配了!
接下来的问题就是最大匹配值。

每个妹子都期望有个好归宿,所以她们期望能够和自己好感度最高的男生牵手。
对此,我们引入数组exg[i]表示第i个妹子的期望,初始时exg[i]=max(ex[i][j])(即妹子对所有男生中,好感度最高的男生)。

由于现在社会状况为男女比例严重失调,所以男生已经不在乎妹子颜值了,只希望能有一个妹子就好,所以exb[i]表示第i个男生的期望,初始为exb[i]=0;
这里写图片描述

匹配前规定

开始匹配时,每一轮匹配中,每一个男生与女生只能尝试匹配一次!要求为ex[i][j]=exg[i]+exb[j](即双方都要满意对方)

匹配中

第一轮中,女1与男3匹配,成功。
女2与男3匹配,然而男3已经匹配过了,不能匹配,其他男生又不符合要求,这一轮匹配宣告失败。

匹配后

匹配失败后,参与匹配的有女1,女2,男3。
女生中有争执,只好降低自己的期望,女1要想可以匹配其他男生,至少要降低1点期望,女2也同理,所以她们的期望-1,即exg[1]-1,exg[2]-1.

而男3由于得到了妹子的关注,终生大事已经要着落了,自然就开始关注其妹子的颜值了,他的期望就上升1点,即exb[3]+1。
可以发现
1.只有参与匹配的男女才会进行调整。
2.男生上升的期望与女生下降的期望的值是相同的。
这里写图片描述

然后重复匹配,失败再进行调整,直到成功。

时间复杂度为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值