算法/题解-二分图匹配(匈牙利算法)

本文介绍了二分图的概念及其在图论中的重要性,重点讲解了匈牙利算法如何找到图的最大匹配,并通过交替路和增广路的概念解释算法原理。通过示例展示了如何通过不断寻找并调整增广路来逐步增加匹配数,直至达到最大匹配状态。文章最后提及写作时间为2019年9月21日。
摘要由CSDN通过智能技术生成

题目链接:

洛谷

什么是二分图?

二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 ——百度百科

二分图
图片来源于网络
通俗地说,二分图就是一种特殊的无向图,它有两堆顶点。每一堆里的每一个顶点都只能和另一堆的顶点相连,而不能和自己这堆的其它点相连。上图就是一个二分图

如果我们删去一些边,使得任意两条边都不依附于同一个顶点,则称这种情况为匹配最大匹配就是让剩余边的数字的数目最大。
特别的,如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配

题解-匈牙利算法

交替路和增广路: 如下图,如果已匹配和待匹配的边(下图中黑线代表已匹配的边,红线代表未匹配的边)交替出现,则称这条路为交替路,交替路分为两种,一种是首尾边已匹配的,另一种是首尾边未匹配的。对于后者,它就是所谓的增广路了。在图中,红色的线路就是一条增广路。
在这里插入图片描述
对于一条增广路,只要将它做取反操作,就能得到另一条交替路,而且这条交替路的匹配数比原来的增广路大一。我们一只重复这个找增广路->取反的操作,就能得到最大匹配了。
比如在上图中,如果我们匹配了 ( U 2 , V 1 ) (U_2,V_1) (U2,V1), ( U 3 , V 2 ) (U_3,V_2) (U

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值