码迷,mamicode.com
首页 > 其他好文 > 详细

关于最大匹配,最小点覆盖,最少路径覆盖和最大独立集的总结

时间:2015-09-28 22:12:57      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

(1)二分图的最大匹配

匈牙利算法

(2)二分图的最小点覆盖

二分图的最小点覆盖=二分图的最大匹配

求最小点覆盖:从右边所有没有匹配过的点出发,按照增广路的“交替出现”的要求DFS。最终右边没有访问过的点和左边访问过的点组成最小点覆盖。

证明见这里

(3)二分图的最少边覆盖

二分图的最少边覆盖=点数-二分图的最大匹配

证明:

先贪心选一组最大匹配的边放进集合,对于剩下的没有匹配的点,随便选一条与之关联的边放进集合,那么得到的集合就是最小边覆盖。

所以有:最小边覆盖=最大匹配+点数-2*最大匹配=点数-最大匹配

(4)二分图的最大独立集

二分图的最大独立集=点数-二分图的最大匹配

证明:

我们可以这样想,先把所有的点放进集合,然后删去最少的点和与之相关联的边,使得全部边都被删完,这就是最小点覆盖。所以有:最大独立集=点数-最小点覆盖

(5)有向无环图的最少不相交路径覆盖

我们把原图中的点$V$拆成两个点$Vx$和$Vy$,对于原图中的边$A->B$,我们在新图中连$Ax->By$。那么最少不相交路径覆盖=原图的点数-新图的最大匹配

证明:

一开始每个点都独立为一条路径,在二分图中连边就是将路径合并,每连一条边路径数就减一。因为路径不能相交,所以不能有公共点,这恰好就是匹配的定义。所以有:最少不相交路径覆盖=原图的点数-新图的最大匹配

友情题:

bzoj1143[CTSC2008]祭祀river

(6)有向无环图的最少可相交路径覆盖

先用floyd求出原图的传递闭包, 如果a到b有路, 那么就加边a->b。 然后就转化成了最少不相交路径覆盖问题。

(7)有向无环图中最少不相交路径覆盖和最大独立集的相互转化

用偏序集,建议先看看这篇博客

有向无环图的最大独立集=有向无环图最少不相交路径覆盖

友情题:

bzoj3997[TJOI2015]组合数学

(8)二分图的带权最大匹配

KM算法。

 

关于最大匹配,最小点覆盖,最少路径覆盖和最大独立集的总结

标签:

原文地址:http://www.cnblogs.com/maijing/p/4844893.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!