二分图的最大匹配_匈牙利算法

本文介绍了二分图的基本概念及其匹配理论,包括匹配、最大匹配、完全匹配等概念,并详细解析了如何通过增广路径寻找最大匹配,最终介绍了匈牙利算法。

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

1. 二分图:在一个二分图中,所有的顶点都可以分为两个不相交的集合U和V,两个集合大小不一定相等,但每条边都连接两个集合中各一个顶点。

例如




2. 二分图的匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是G的一个匹配。

(1)如果一条边e在M中,我们称边e是匹配的,否则称边e为自由的。

(2)如果一个顶点v和一条匹配的边关联,则称该点v是匹配的,否则称为点v为自由的。


3. 二分图的最大匹配:匹配M的规模定义为M中所有匹配边的数量,一个二分图的最大匹配是具有最大规模的匹配。


4. 二分图的完全匹配:一个二分图中的所有顶点被匹配,则称该二分图是完全匹配。


5. 增广路径:在一个无向图G=(V,E)中给定一个匹配,若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配的边和未匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。

例如:


子图M的匹配边集:M{(1,3),(2,5)}

点1,2,3,5是匹配的,点4和6是自由的;边(1,3)和(2,5)是匹配的,边(1,4)和(3,6)是自由的。

则有路径6-3-1-4是关于M的一条增广路径。


6. 拓展

此时,我们将M中的边(1,3)去掉,增加边(1,4)和边(6,3),得到图M':


可以看到,图M‘匹配数增加了1,即P(M’)=P(M)+1,其中P(x)为二分图x的匹配数。


由此我们得到了一个规律:

        一般来说,我们可以通过构造一条增广路径来扩大当前的匹配,这条路径一头连接U中的自由顶点,另一头连接V中的自由顶点,且路径上的边交替出现在E-M和M中。也就是说,路径上的第一条边不属于M,第二条边属于M,依此类推,直到最后一条不属于M的边。由于增广路径的长度总是奇数,把奇数边加入M,偶数边从M中去除,就可以生成一个新的匹配,该匹配比M多一条边。


因此,对于增广路径P,我们可以得出下面的三个结论:

(1)P的长度必定为奇数,且第一条边和最后一条边都不属于M。

(2)P经过取反操作后可以得到一个更大的匹配M‘。

(3)M为G的最大匹配当且仅当不存在相对于M的增广路径。


        由此,就得到了一个构造二分图最大匹配的通用方法:从某种匹配(例如空集合)开始,求出一个增广路径,并沿着该路径对当前匹配进行增广,如果无法再找到增广路径,算法终止并返回最后匹配,该匹配就是最大的。

         这种增广路径求二分图最大匹配的算法就叫做匈牙利算法(Hungary Algorithm),是由匈牙利数学家Edmonds于1965年提出的!


7. 算法框架:

(1)置M为空;

(2)求出一条增广路径,通过取反操作获得更大的匹配M’代替M;

(3)重复(2)操作知道找不出增广路径为止;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值