二分匹配小结

对于二分匹配问题有三个常用的结论:

1.二分图的最大匹配数等于最小覆盖数
2.二分图的独立数等于顶点数减去最大匹配数
3.最小路径覆盖 = 顶点数 - 最大匹配数(有向图要先拆点建二分图)


设最大匹配为M,匹配数为|M|

首先对于我们已经匹配的二分图

匹配|M|一定是有这样的性质的:

对于任意的<x,y>属于|M|只存在<a,x>或<y,b>,这两者是不可能同时存在的。

因为如果同时存在,那么我们必然能从新的增广路a-x-y-b得到更大的匹配M‘ 即|M|+1


对于第一个结论:

最小覆盖数是用顶点集合去覆盖边。

首先最小覆盖数肯定大于等于匹配M(M内的边是互不相交的。至少要选择一个顶点)。

那么最小覆盖数为|M|能否覆盖所有边呢?答案是可以。

对于任意的一个点,要么孤立,要么与匹配M上某一点相连(不可能与其他点相连,否则匹配可以增广)。

我们已经知道匹配内部的边最多只会有一端与外界相连,那么我们选择与外界相连的这个点。即可覆盖所有边。

孤立点没有边就不需要考虑。

所以最小覆盖数等于最大匹配数。


对于第二个结论:

最大独立集是点数最多的点集,此点集内部的点两两都不相交。

首先点有两种,一种是孤立的点,肯定在独立集 中。

另外一种是匹配中的点或和匹配相连的点。

对于这种点,我们要选出最多的两两不相交的点。

由于匹配的定义,匹配内部的边是没有交点的,所以每条边可以单独考虑。

对于匹配的一条边而言,只有一端连了多个点,那么这多个点肯定是两两不交的(因为在同一集合中)。我们只要除去这一个点,剩下的点就一定可以再独立集中。

有人可能会想,如果这个点A连接的某个点B,与另一个匹配边的点C相连,那么会不会有连接的情况。

点B所连接的另一个匹配边也只会有一端与外界相连,这个时候我们只要除去点C,就可以保证两两独立了。

如果某个匹配没有与外界连边,那么两个点也是要除去一个的,因为这两个点本身就是相连的,只能取一个。

所以我们最终得到的最大独立集就是点的总数减去匹配数|M|。



对于第三个结论。

有向图的最小路径覆盖,是令某个点只属于某一条路径,求最小的路径覆盖所有的点。

首先如果有n个孤立的点,我们需要n条路径进行覆盖。

每两个点连接(实际上是两部分进行合并),只要能消除一个孤立点,那么路径数就减1.对于每个点只能消除一次。所以用二分匹配得出来的就是可以消除的孤立点的个数。

所以最小路径覆盖=顶点数 - 最大匹配数


二分图的一个充要条件是:点数大于2,且不存在奇数长度的环。


至于模板

HK算法的板

http://blog.csdn.net/u012936765/article/details/47054627

匈牙利算法的板

http://blog.csdn.net/u012936765/article/details/44732173

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值