最小路径覆盖
来源:互联网 发布:wind资讯经济数据终端 编辑:程序博客网 时间:2024/04/29 01:45
路径覆盖:选取一些不相交的路径 (包括单个点),使得能覆盖所有的点。最小路径覆盖指路径覆盖中路径最少的一种。
算法:
(1)将有向无环图转为二分图
(2)一组匹配等价于在原图中走了一条边
(3)答案 = 原图点数 -最⼤匹配
最小路径覆盖=|P|-最大匹配数;
其中最大匹配数的求法是把图P中的每个顶点pi分成两个顶点pi'与pi'',如果在p中存在一条pi到pj的边,那么在二分图P'中就有一条连接pi'与pj''的无向边;这里pi' 就是p中pi的出边,pj''就是p中pj 的一条入边;
对于公式:最小路径覆盖=|P|-最大匹配数;可以这么来理解;
如果匹配数为零,那么P中不存在有向边,于是显然有:
最小路径覆盖=|P|-最大匹配数=|P|-0=|P|;即P的最小路径覆盖数为|P|;P'中不在于匹配边时,路径覆盖数为|P|;
如果在P'中增加一条匹配边pi'-->pj'',那么在图P的路径覆盖中就存在一条由pi连接pj的边,也就是说pi与pj 在一条路径上,于是路径覆盖数就可以减少一个;
如此继续增加匹配边,每增加一条,路径覆盖数就减少一条;直到匹配边不能继续增加时,路径覆盖数也不能再减少了,此时就有了前面的公式;但是这里只是说话了每条匹配边对应于路径覆盖中的一条路径上的一条连接两个点之间的有向边;下面来说明一个路径覆盖中的每条连接两个顶点之间的有向边对应于一条匹配边;
与前面类似,对于路径覆盖中的每条连接两个顶点之间的每条有向边pi--->pj,我们可以在匹配图中对应做一条连接pi'与pj''的边,显然这样做出来图的是一个匹配图(这一点用反证法很容易证明,如果得到的图不是一个匹配图,那么这个图中必定存在这样两条边
pi'---pj'' 及 pi' ----pk'',(j!=k),那么在路径覆盖图中就存在了两条
边pi-->pj, pi--->pk ,那边从pi出发的路径就不止一条了,这与路径覆盖图是矛盾的;还有另外一种情况就是存在pi'---pj'',pk'---pj'',这种情况也类似可证);
至此,就说明了匹配边与路径覆盖图中连接两顶点之间边的一一对应关系,那么也就说明了前面的公式成立!
- 【最小路径覆盖】最小路径覆盖
- 最小路径覆盖
- 最小路径覆盖
- pku2594 最小路径覆盖
- 最小路径覆盖
- 最小路径覆盖
- poj1422最小路径覆盖
- 最小路径覆盖
- 最小路径覆盖:Divisibility
- poj1422最小路径覆盖
- 最小路径覆盖
- poj2060 最小路径覆盖
- 最小路径覆盖
- 最小路径覆盖
- poj2060最小路径覆盖
- poj3216Floyd+最小路径覆盖
- poj1548最小路径覆盖
- hdu4160最小路径覆盖
- WTL双缓冲类CDoubleBufferImpl的缺陷
- 简易贪吃蛇(JAVA版)源代码
- java 字符串转json对象 js json 转 java对象
- Java多态:重写和重载
- C#数据库编程入门(2)
- 最小路径覆盖
- 如何正确地在Axis、Axis2和Apache CXF之间抉择?
- BZOJ 1009([HNOI2008]GT考试-KMP+矩阵加速Dp)
- 设计模式 -- 工厂
- yii增删改查(2)
- C#编写ActiveX控件
- Ubuntu 11.04 Code::Blocks 下编译OpenCV文件
- Qt中消息信号与事件的总结
- ubuntu快捷键收藏