第三章 搜索与图论 二分图之二分图的最大匹配问题

1、算法思路

1.什么是二分图的最大匹配问题

这篇博客讲得非常清楚详细——资料来源
匹配:在图论中,一个「匹配」(matching)是一个边的集合,其中任意两条边都没有公共顶点。例如,图 3、图 4 中红色的边就是图 2 的匹配。

Bipartite Graph(1)  Bipartite Graph(2)  Matching  Maximum Matching最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配。图 4 是一个最大匹配,它包含 4 条匹配边。

2. 使用方法

匈牙利算法。我们直接结合例题和代码来看吧,这里我使用的是DFS的方式进行求解。

3.小例子

在这里插入图片描述
对于这样一个二分图,我们来看一下他的最大匹配是多少。我们从左边的1开始,1与5相连,并且5没有匹配的边。所以1和5匹配。
在这里插入图片描述
再看2号节点。2号只有一个相连的节点5号,但是5号已经与1号相匹配了,我们就看看1号还有没有别的可以相连的点。然后我们看到了6号,6号没有被匹配,那么我们就让1号与6号匹配,这样2号就可以与5号匹配了。
在这里插入图片描述
再看3号,第一条与之相连的边6号已经与1号匹配了,我们就看看1号有没有别的相连的点呢?一看有个5号,可是5号点与2号点匹配了,我们就看看2号点有没有其他与之相连的边?结果没有。所以2号不能给1号让出5号,所以1号也不能给3号让出6号。
再看3号的第二条与之相连的边7号,还没有被匹配,所以可以与3号匹配。
在这里插入图片描述

再看4号点,第一条与之相连的点是7,但是7与3号点已经匹配了,那么再看看3号点能不能换一条边匹配呢?6号我们先前试过了,不行,那么只有8号了,而8号有没有被匹配,所以3号可以和8号匹配,将7号让给4号。
在这里插入图片描述
这样就找到了最大匹配。

4.时间复杂度

O ( N ∗ M ) O(N*M) O(N

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值