关于最大匹配,最小点覆盖,最少路径覆盖和最大独立集的总结

最小点覆盖:

点覆盖的概念定义
对于图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算法。(可以用最小费用最大流做)

你可能感兴趣的:(二分图,ACM,SCL)