关于最大匹配,最小点覆盖,最少路径覆盖和最大独立集的总结
最小点覆盖:
点覆盖的概念定义:
对于图G=(V,E)中的一个点覆盖是一个集合S⊆V使得每一条边至少有一个端点在S中。
最小点覆盖:就是点覆盖中点的个数最少的集合S。
最小边覆盖:
边覆盖的概念定义:
边覆盖是图的一个边子集,使该图上每一节点都与这个边子集中的一条边关联,只有含孤立点的图没有边覆盖,边覆盖也称为边覆盖集,图G的最小边覆盖就是指边数最少的覆盖,图G的最小边覆盖的边数称为G的边覆盖数。
最大匹配:
匹配:在图论中,一个「匹配」(matching)是一个边的集合,其中任意两条边都没有公共顶点。
最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配。
最大独立集:
最大独立集:在N个点的图G中选出m个点,使这m个点两两之间没有边的点中,m的最大值。
最小路径覆盖:
定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点。
(1)二分图的最大匹配
匈牙利算法(可以用最大流做,但一般匈牙利要快不少)。
(2)二分图的最小点覆盖
二分图的最小点覆盖 = 二分图的最大匹配
(3)二分图的最少边覆盖
二分图的最少边覆盖 = 点数 - 二分图的最大匹配
(4)二分图的最大独立集
二分图的最大独立集 = 点数 - 二分图的最大匹配
(5)有向无环图的最少不相交路径覆盖
我们把原图中的点V拆成两个点Vx和Vy,对于原图中的边A−>B,我们在新图中连Ax−>By。
那么最少不相交路径覆盖=原图的点数-新图的最大匹配
(6)有向无环图的最少可相交路径覆盖
先用floyd求出原图的传递闭包, 如果a到b有路, 那么就加边a->b。 然后就转化成了最少不相交路径覆盖问题。
例题:POJ - 2594 Treasure Exploration
(7)有向无环图中最少不相交路径覆盖和最大独立集的相互转化
用偏序集,一般可以抽象为有向无环图。建议先看看这篇博客
Dilworth定理:有向无环图的最大独立集=有向无环图最少不相交路径覆盖
(8)二分图的带权最大匹配
KM算法。(可以用最小费用最大流做)
————————————————
(9)如果一个图没有奇环,那么一定是二分图(奇表示环中点的个数为奇数)
(10)最大团 = 补图的最大独立集
版权声明:本文为CSDN博主「vocaloid01」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vocaloid01/article/details/81083071