DAG的最小路径覆盖和二分图的最大匹配(hdu1151+hdu3861)

转载 2013年12月02日 22:40:37
DAG的最小路径覆盖是指找最小数目的互相不相交的有向路径,满足DAG的所有顶点都被覆盖.

首先给出公式:DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中的最大匹配数.

那么对应一个DAG,如何构造相应的二分图?对于DAG中的一个顶点p,二分图中有两个顶点p和p',对应DAG中的一条有向边p->q,二分图中有p-q'的一条无向边.二分图中p属于S集合,p'属于T集合.
下面我们来解释上面公式为什么成立,思路参考baihacker神牛:


上图中,对应左边的DAG建立构造右边的二分图,可以找到二分图的一个最大匹配M:1-3',3-4',那么M中的这两条匹配边怎样对应DAG中的路径的边?
使二分图中一条边对应DAG中的一条有向边,1-3'对应DAG图中的有向边1->3,这样DAG中1就会有一个后继顶点(3会是1的唯一后继,因为二分图中一个顶点至多关联一条边!),所以1不会成为DAG中一条路径中的结尾顶点,同样,3-4'对应DAG中3->4,3也不会成为结尾顶点,那么原图中总共4个顶点,减去2个有后继的顶点,就剩下没有后继的顶点,即DAG路径的结尾顶点,而每个结尾顶点正好对应DAG中的一条路径,二分图中寻找最大匹配M,就是找到了对应DAG中的非路径结尾顶点的最大数目,那么DAG中顶点数-|M|就是DAG中结尾顶点的最小数目,即DAG的最小路径覆盖数.
转载:http://www.cnblogs.com/jackiesteed/articles/2043934.html

相关文章推荐

HDU1151_Air Raid(二分图/最小路径覆盖=n-最大匹配)

解题报告 题目传送门 题意: 一个小镇,所有的街道都是单向的,这些街道都是从一个十字路口通往另一个十字路口,已知从任何十字路口出发,沿着这些街道行走,都不能回到同一个十字路口,也就是说不存在回路。 计...

HDU -1151 二分匹配与DAG图(最小覆盖路径)

Consider a town where all the streets are one-way and each street leads from one intersection to ano...

hdu 1151 Air Raid(二分图匹配--最小路径覆盖)

Air Raid Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total...

HDU 1151 Air Raid 最小路径覆盖,二分图匹配匈牙利算法(邻接表存关系)处理有向图

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1151 Air Raid Time Limit: 2000/1000 MS (Java/Others)...

hdu1151 poj1422 最小路径覆盖.最大二分匹配

Air RaidTime Limit:1000MS    Memory Limit:10000KB    64bit IO Format:%I64d & %I64u SubmitStatusPrac...

HDU3861 The King’s Problem Tarjan缩点+二分图求最小路径覆盖

这题一开始理解有问题。 对于每一个洲,如果洲里面的任意两个城市u,v,如果u有路径到v,则v也要有路径到u。不要求两两城市都存在路径。 用Tarjan求强连通分量缩点,在用二分图求 #i...
  • neofung
  • neofung
  • 2012年01月11日 19:35
  • 704

HDU 3861 The King’s Problem 强连通分量分解 + 二分图最小路径覆盖

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3861 题意:一个有向图,让你按规则划分区域,要求划分的区域数最少。1、有边u到v以及有边v到u,...

hdu 1151 Air Raid 最小路径覆盖(最大匹配)

#include #include #include #include #include using namespace std; const int maxn=1010; vectore[...

hdu 1151 DAG图(有向无环图)的最小路径覆盖

/*DAG图的最小路径覆盖, 最小路径覆盖数 = 顶点数 - 最大匹配数 解释:一条路径覆盖两个点,意思是最大匹配可以覆盖->(2 * 最大匹配)个点 一个匹配,一条路径 剩下的点都需要单独一条边覆盖...
  • LiWen_7
  • LiWen_7
  • 2012年07月31日 15:23
  • 1375

hdu 1054 Strategic Game 最小顶点覆盖(二分图最大匹配)

#include #include #include #include #include #include using namespace std; const int maxn=1510...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DAG的最小路径覆盖和二分图的最大匹配(hdu1151+hdu3861)
举报原因:
原因补充:

(最多只允许输入30个字)