定义:
1.最大独立点集:在二分图中,求最少的点集,使得任意两个点之间没有直接边连接。
2.最小路径覆盖:
①在有向无环图中,求最少的路径,使他们覆盖所有的点,且每一个点只被一条路径覆盖。
②在有向无环图中,求最少的不相交的路径,使他们覆盖所有的点。
*最小路径覆盖数通俗点说就是给一个图,求最少要走几次才能把所有节点都遍历一次且仅一次。(并不要求把每条边都走完)
3.最小可重复路径覆盖:在有向无环图中,求最少的路径,使得他们覆盖所有的点,且每个点可以被多条路径覆盖。
4.最小边覆盖:在二分图中,求最少的边,使得他们覆盖所有的点,并且每一个点只被一条边覆盖。(实在不行可以把一个点看成一条边)
5.最小点覆盖:在二分图中,求最少的点集,使得每一条边至少都有端点在这个点集中。
6.Dilworth 定理:
偏序是在集合X上的二元关系≤(这只是个抽象符号,不是“小于或等于”),它满足自反性、反对称性和传递性。即,对于X中的任意元素a,b和c,有:
自反性:a≤a;
反对称性:如果a≤b且b≤a,则有a=b;
传递性:如果a≤b且b≤c,则a≤c 。
①链:一个图中的一条路径,或:一个集合使得任意两个元素都可比较。
②反链:一个图中的一个点集使得任意两个点之间都没有路径相连,或:一个集合使得任意两个元素都不可比较
--------------------------------------------------------------------------------------------
运算关系:
最大独立集 = 最小边覆盖 = N - 最大匹配 (条件:在二分图中)
DAG最小路径覆盖 = N - 最大匹配 (条件:将DAG转化为二分图)
最小点覆盖 = 最大匹配 (条件:在二分图中) Konig定理
反链 = 图的最小划分链数 = 最小可重复路径覆盖 (条件:在DAG中) Dilworth定理
--------------------------------------------------------------------------------------------
求Dilworth定理中的数:Floyd传递闭包求出DAG中的每一对点之间的连接情况,然后求最小不可重复路径覆盖。
求最小路径覆盖:将每一个点拆成Xi和Yi,如果有点Ai->Bi,那么连边XA->YB。求最大匹配。
--------------------------------------------------------------------------------------------
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的最小路径覆盖数.