KM算法——一场渣男和渣女的盛宴

KM算法是一种用贪心算法的方式解决无向有权二分图完备分解的方法。网上有很多博客讨论,但是写的都太过复杂,不是很容易懂。笔者现在想以最简单的方式加以诠释。

假设有一堆渣男和一堆渣女,他们之间互相有好感值(不存在同性好感值,本人钢铁直男)。关系如下:

 首先每个渣男都将对女友的期望值设置成自己的最高。每个渣女的易勾搭值都是0。于是故事开始了。渣男1和渣女1建立关系。由于渣男和渣女的特性都是渣。渣男2有两种选择,其一是渣男2绿了渣男1,渣男1只好退而求其次,在自己喜欢的渣女中排个名,发现渣女2是他第二喜欢的,因此就建立关系。由于渣女2仅需要12的喜欢就可以建立关系,渣女1为了维持和渣男1的备胎关系,所以将自己的易勾搭值调整到3,这样渣男的喜欢值加上渣女的易勾搭值正好等于维持关系所需的程度。这个过程就是所谓的“增广队列”,即新加入了第三者后原来的两个人依然保持备胎关系。其二是找渣女2或者渣女3,但是这两种方案需要更改更的值更大(分别是8和6),所以渣男2选择绿了渣男1。新的关系如下:

 这个时候这出狗血剧情又有了新的进展,来了一个渣男3。对于渣男3有两种选择,第一是,由于渣男1和渣女2的关系初步建立,他准备插足(渣男1是真特么惨);第二种是选择自己第二喜欢的渣女3。

先考虑第一种,渣男3绿了渣男1, 这个时候渣男1和渣女1的备胎关系就发挥了作用,他俩又复合了。于是乎渣男2就成了单身,渣男2只能退而求其次(所谓的增广队列),于是他找了渣女3。渣女3只需要8点喜欢值就可以勾搭上了,为了备胎关系,渣女1又将自己的易勾搭值增加3,于是渣男1只需要减少3点就可勾搭上渣女1,渣女2为了维持渣男1的备胎只能将易勾搭值调高3。聪明的读者可以发现规律就是相关的渣男对爱情的期望度都减小了,相关渣女的易勾搭值都上升了相同的值。于是形成了新的关系,如图:

对于渣男3的第二方案,由于维系和渣女3的关系需要修改3点喜欢值,和上面的方案一样,所以这样也可以形成一个搭配关系。就是这样:

 自此,每个渣男都有自己的渣女,每个渣女都有自己的渣男。从此过上了幸福的生活。

如果假设渣男3和渣女3维系关系需要的值是11,那么可以看出渣男3和渣女3建立关系的修改值要小于渣男3和渣女2建立关系的修改值。本着就近原则,那么渣男3则必然选择和渣女3建立关系。也就是这样:

 

KM算法的整个过程就是

1)寻找最小更改增广队列;

2)更新对应关系;

3)循环上面两步直到较少的一组节点都有匹配的节点;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾昵猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值