Just a note because of a failure understand for the Path Cover
以下内容均来自: http://en.wikipedia.org/wiki/Path_cover
对于有向图 G Belong (V,E), 一个路径覆盖就是:一个由多条有向路径组成的集合,
并且每一个顶点 v Belong V, 其至少(同时也至多)属于一条路径. 注意,一个路径覆盖可能
包含路径长度为0的情况.(单个顶点时).
路径覆盖也能够定义为: 一个不相交的路径覆盖. 一个由多条路径组成的集合,每一个
顶点 v Belong V 都准确的属于一条路径.
Theorem(定理): 最小路径覆盖的路径数量 <= 最大独立集顶点数量
更特别的是,对于任意图G(E,V),其最小路径覆盖为P,最大独立集为I.
则有, 集合I中的每一个顶点在 集合P中不同的路径上. 这是一个必然的结论.
这里其实我们可以从反面证明: 若独立集I中有两个顶点为 u, v, 其在
最小路径覆盖集合P中 同一条路径上, 则意味着, u, v两顶点间有联系, 彼此间接
相邻. 这与 独立集中定义两两不相连矛盾. 所以结论成立.
Computational Complexity(计算复杂度)
对于一个有向图,求最小路径覆盖, 确切路径,涉及到 哈密尔顿回路,
是一个 NP完全问题.这强调 最小路径覆盖是一个 NP难题.
Applications(应用)
主要用于软件测试.
路径覆盖与二分图匹配的关系(必须是没有圈的有向图):
最小路径覆盖=|P|-最大匹配数
其中最大匹配数的求法是把P中的每个顶点pi分成两个顶点pi'与pj'',如果在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'',这种情况也类似可证);
至此,就说明了匹配边与路径覆盖图中连接两顶点之间边的一一对应关系,那么也就说明了前面的公式成立!