二分图相关播客阅读摘抄

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40379678/article/details/82937544

https://blog.csdn.net/qq_36345036/article/details/76977294

https://blog.csdn.net/ACMer_ZP/article/details/78570926

https://www.cnblogs.com/justPassBy/p/5369930.html

二分图又称作二部图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G是一个二分图。

在图论中,一个「匹配」(matching)是一个边的集合,其中任意两条边都没有公共顶点。例如,图 3、图 4 中红色的边就是图 2 的匹配。

最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配。

完全匹配:如果一个图的某个匹配中,所有的顶点都是匹配点,那么它就是一个完全匹配

增广路的定义(也称增广轨或交错轨):从一个未匹配点出发,走交替路,如果途径另一个未匹配点(出发的点不算),则这条交替路称为增广路(agumenting path)。

点覆盖的概念定义: 
对于图G=(V,E)中的一个点覆盖是一个集合S⊆V使得每一条边至少有一个端点在S中。

最小点覆盖:就是点的个数最少的S集合。 

边覆盖的概念定义: 
边覆盖是图的一个边子集,使该图上每一节点都与这个边子集中的一条边关联,只有含孤立点的图没有边覆盖,边覆盖也称为边覆盖集,图G的最小边覆盖就是指边数最少的覆盖,图G的最小边覆盖的边数称为G的边覆盖数。

二分图的最小边覆盖数=图中的顶点数-(最小点覆盖数)该二分图的最大匹配数

最大独立集:

最大独立集:在N个点的图G中选出m个点,使这m个点两两之间没有边的点中,m的最大值。 
结论: 二分图的最大点独立数=点的个数-最小点覆盖数(最大匹配) 

DAG的最小路径覆盖

DAG的最小不相交路径覆盖

算法:把原图的每个点V拆成VxVx和VyVy两个点,如果有一条有向边A->B,那么就加边Ax−>ByAx−>By。这样就得到了一个二分图。那么最小路径覆盖=原图的结点数-新图的最大匹配数。

证明:一开始每个点都是独立的为一条路径,总共有n条不相交路径。我们每次在二分图里找一条匹配边就相当于把两条路径合成了一条路径,也就相当于路径数减少了1。所以找到了几条匹配边,路径数就减少了多少。所以有最小路径覆盖=原图的结点数-新图的最大匹配数。

因为路径之间不能有公共点,所以加的边之间也不能有公共点,这就是匹配的定义。

习题POJ1422

DAG的最小可相交路径覆盖

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

证明:为了连通两个点,某条路径可能经过其它路径的中间点。比如1->3->4,2->4->5。但是如果两个点a和b是连通的,只不过中间需要经过其它的点,那么可以在这两个点之间加边,那么a就可以直达b,不必经过中点的,那么就转化成了最小不相交路径覆盖。

题目POJ2594

猜你喜欢

转载自blog.csdn.net/qq_40379678/article/details/82937544
今日推荐