算法笔记:KM算法(Kuhn-Munkres Algorithm)

这篇具有很好参考价值的文章主要介绍了算法笔记:KM算法(Kuhn-Munkres Algorithm)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

带权二分图的最优匹配问题

算法笔记:匈牙利算法_UQI-LIUWJ的博客-CSDN博客

  •  匈牙利算法的一个问题是,找到的匹配不一定是最优匹配
    • 因为算法将每个匹配对象的地位视为相同的,在这个前提下求解最大匹配
  • 而很多时候,二部图连边是带权重的,在这个基础上的匹配才更贴近真实情况

1 KM算法举例

二部图的每条关系之间加入了权重

算法笔记:KM算法(Kuhn-Munkres Algorithm)

1.1 具体步骤

  • 首先对每个顶点赋值,称为顶标,将左边的顶点赋值为与其相连的边的最大权重,右边的顶点赋值为0
    • 算法笔记:KM算法(Kuhn-Munkres Algorithm)
  • 然后开始匹配
    • 匹配的原则是:
      • 只和权重与左边分数(顶标)相同(或比顶标大)的边进行匹配(边权重=左+右)
      • 若找不到边匹配,对此条路径的所有左边顶点的顶标减d,所有右边顶点的顶标加d。参数d我们在这里取值为0.1。
  • 对于左1,与顶标分值相同的边先标蓝。

    • 算法笔记:KM算法(Kuhn-Munkres Algorithm)

  •  然后是左2,与顶标分值相同的边标蓝

     

    • 算法笔记:KM算法(Kuhn-Munkres Algorithm)
  • 然后是左3,发现与右1已经与左1配对。
    • 首先想到让左3更换匹配对象
      • 然而根据匹配原则,只有权值大于等于0.9+0=0.9(左顶标加右顶标)的边能满足要求。于是左3无法换边。
    • 那左1能不能换边呢?
      • 对于左1来说,只有权值大于等于0.8+0=0.8的边能满足要求,无法换边。
      • 此时根据KM算法,应对所有冲突的边的顶点做加减操作,令左边顶点值减0.1,右边顶点值加0.1。
        • 算法笔记:KM算法(Kuhn-Munkres Algorithm)
      •  再进行匹配操作,发现左3多了一条可匹配的边,因为此时左3对右2的匹配要求只需权重大于等于0.8+0即可,所以左3与右2匹配!

        • 算法笔记:KM算法(Kuhn-Munkres Algorithm)

        •  

  • 最后进行左4的匹配,由于左4唯一的匹配对象右3已被左2匹配,发生冲突。进行一轮加减d操作,再匹配,左四还是匹配失败。两轮以后左4期望值降为0,放弃匹配左4。 

参考内容:带你入门多目标跟踪(三)匈牙利算法&KM算法 - 知乎 (zhihu.com)文章来源地址https://www.toymoban.com/news/detail-407580.html

到了这里,关于算法笔记:KM算法(Kuhn-Munkres Algorithm)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 贪心算法(Greedy Algorithm)

    贪心算法(Greedy Algorithm)是一种解决优化问题的算法策略。在贪心算法中,每一步都会选择当前情况下最优的选择,而不考虑未来的后果。 贪心算法的基本思想是通过局部最优选择达到全局最优。它并不保证一定能得到全局最优解,但在某些情况下可以得到近似最优解或者

    2024年02月09日
    浏览(40)
  • 算法介绍 | 泛洪算法(Flood fill Algorithm)

    漫水填充算法、种子填充算法(Seed Fill) 用于确定连接到多维数组中给定节点的区域,可以用来标记或者分离图像的一部分,实现如Ps中自动选区功能。 顾名思义就像洪水漫过一样,把一块连通的区域填满。 当然水要能漫过需要满足一定的条件,可以理解为满足条件的地方

    2024年02月14日
    浏览(41)
  • 遗传算法(Genetic Algorithm,GA)

    这是一篇关于遗传算法的总结博客,包括算法思想,算法步骤,python实现的两个简单例子,算法进阶(持续更新ing)。 遗传算法的应用很多,诸如寻路问题,8数码问题,囚犯困境,动作控制,找圆心问题(在一个不规则的多边形中,寻找一个包含在该多边形内的最大圆圈的

    2023年04月17日
    浏览(44)
  • 遗传算法 (Genetic Algorithm, GA)

    遗传算法(Genetic Algorithm,简称GA)起源于对生物系统所进行的计算机模拟研究,是一种随机全局搜索优化方法,它模拟了自然选择和遗传中发生的复制、交叉(crossover)和变异(mutation)等现象,从任一初始种群(Population)出发,通过随机选择、交叉和变异操作,产生一群更适合

    2024年02月05日
    浏览(37)
  • Algorithm_01--C#递归算法

    ///递归算法本质: ///1、方法的自我调用 ///2、有明确的终止条件 ///3、每次调用时,问题规模在不断减少。通过递减,最终到达终止条件     问题:程序在输入1000后(即1到1000的和),程序会出现异常。 解答:百度后得出结论,栈溢出异常。 1、递归方法在每次调用自身时,

    2024年02月06日
    浏览(37)
  • 【algorithm】算法基础课---二分查找算法(附笔记 | 建议收藏)

    🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝 📣系列专栏:AcWing算法学习笔记 💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊 ✉️ 如果无聊的话,就来逛逛我的博客栈吧 stack-frame.cn 关于我

    2024年01月18日
    浏览(40)
  • Algorithm_01--C#递归算法01

    ///递归算法本质: ///1、方法的自我调用 ///2、有明确的终止条件 ///3、每次调用时,问题规模在不断减少。通过递减,最终到达终止条件     问题:程序在输入1000后(即1到1000的和),程序会出现异常。 解答:百度后得出结论,栈溢出异常。 1、递归方法在每次调用自身时,

    2024年02月06日
    浏览(49)
  • 关于Secure Hash Algorithm加密算法

    一、概述 SHA(Secure Hash Algorithm)加密算法是一种广泛应用的密码散列函数,由美国国家安全局(NSA)设计,用于保障数据的安全性和完整性。SHA算法经历了多个版本的更新,目前主要应用于各种网络安全和数据加密领域。 SHA在线加密 | 一个覆盖广泛主题工具的高效在线平台

    2024年02月04日
    浏览(43)
  • 【智能优化算法】狼群算法 (Wolf Pack Algorithm, WPA),2013

    狼群算法((Wolf pack algorithm ,WPA)采用了基于人工狼主体的自下而上的设计方法和基于职责分工的协作式搜索路径结构。 吴虎胜等在 2013 年提出 模拟狼群捕食行为及其猎物分配方式 截止到 2023 年,算法引用趋势 狼是分布最广的群居群猎动物。有明确的社会分工,它们团结协

    2024年02月09日
    浏览(40)
  • 最短路径算法|Dijkstra‘s Algorithm

    最短路径问题几乎是每个计算机专业学生的必学知识点,相关的算法也比较多样,但其中最经典的肯定是由荷兰计算机科学家,1972年图灵奖得主Edsger Dijkstra于1959年发布的Dijkstra\\\'s Algorithm。 最短路径问题简单来说就是给定一个图和图中的一个源顶点,找到从源到给定图中所有

    2023年04月14日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包