第5-1课:匈牙利算法与二分图的最大匹配

本文介绍了二分图的概念及其匹配、最大匹配和完全匹配的定义。重点讲解了匈牙利算法,包括增广路径的定义、算法实现及数据模型设计。匈牙利算法是一种求二分图最大匹配的高效方法,通过寻找增广路径来逐步增加匹配数。文章还强调了理解算法原理并自行实现的重要性。

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

在图论中,二分图(又称二部图)是一个特殊的模型,关于二分图有很多概念,比如匹配、完全匹配、最大匹配等。这一课我们来介绍一种求二分图的最大匹配的匈牙利算法,匈牙利算法原理是公开的,人们使用匈牙利算法都是根据自己问题域的数据模型,利用算法原理实现具体的算法。这一课我们的关注点仍然是怎么根据算法原理设计数据模型,并实现算法。

二分图的各种匹配

首先介绍一下二分图,二分图 G=(V,E) 是这样的一个图,它的顶点集合 V 可以划分为 X 和 Y 两个集合,它的边集合 E 中的每条边都有一个端点在 X 集合,另一个端点在 Y 集合。判断二分图的关键是看点集是否能分成两个独立的点集,如图(1-a)就是一个二分图,如果一个图的边形成了三角形,那它一定不是二分图,图(1-b)就不是二分图。

5fb57960-f126-11e8-af10-4396b0560f7c

图(1)二分图识别示意图

匹配

对于一个二分图 G=(V,E) 中部分边组成的子集 M,如果 M 的边集中任意两条边都不依附于同一个顶点,则称 M 是一个匹配,怎么理解这句话呢?首先匹配是一个边的集合,并且不唯一;其次,匹配 M 中没有任何两条边有公共的顶点。以图(1-a)所示的二分图为例,图(2-a)和图(2-b)中红色的边集就是二分图的两个匹配,而图(2-c)中的红色边集就不是匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王晓华-吹泡泡的小猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值