关于二分匹配的基础图论知识

这是我同学写的,挺不错的 就转来,图画的难看了点,不过意思很到位!!



九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/12891989

 

图分成点和边

所有点组合成一个集合:点集,一般用 V 表示

所有边组成一个集合:边集,一般用 E 表示

所以一个图可以表示为 G =

G有几个点就是几阶图 n个点就是n阶图

 

二分图:可以把点分成 X点集 和 Y点集 对于所有边 (边2头的2个点) 一个在X集中,一个在Y集中

满足上述条件的叫做二分图 (如下图)

最大匹配数:选一些边 (每个点至多用一次) , 使得边数最多时,叫最大匹配。

 

完全图:任意2个点之间有且仅有 1  条边  ( n个点的完全图叫做 n阶完全图 )

 

补图: 对于母图G来说, 点集相同, 有 G没有的边,没有 G存在的边 ,这样的图叫G的补图 。 补图的点 =  完全图的边 - G的边

 

无向图的最大团:从母图中选出k个点,(边则是 两头都是属于这k个点 的边)  使得这k个点构成k阶完全图,  这样叫做团, k最大时叫做最大团

 

无向图的最大独立集:从母图中选出k个点,使得互不相邻 (这k个点 任意2个 都不在同一条边上),这些点叫独立点, k最大时点组成的集合叫最大独立集

 

最小顶点覆盖:用k个点覆盖所有的边 (所谓覆盖边,只要边2端任意1点属于这k个点就算覆盖) ,k最小时就是最小顶点覆盖

最小路径覆盖:找出最少的路径条数,使得图中的点 有且仅被覆盖1次, 注意:单独一个点也是一条路径 ( 有a,b,c 3点,有单向路径a->b, b->c ,此时选择a->c的路径使得3个点都被覆盖,所以这里最小路径覆盖数是1 )

 

二分匹配时,X集和Y集中每个点 仅能被连1次(允许不连)

 

基本公式:

最大团个数 = 补图最大独立集

 

最小(路径,顶点) 覆盖 + 最大独立集 = 顶点数

 

在二分图中 最大匹配数 = 最小(路径、顶点) 覆盖

 

转载自:http://www.cnblogs.com/ka200812/archive/2011/07/31/2122641.html

最小路径覆盖问题值得注意的地方

首先,最小路径覆盖=总节点数-最大匹配数。这个应该已经是路人皆知了。

所谓最小路径覆盖,是指在一个有向图中,找出最少的几条路径,用它们来覆盖全图

这里说的值得注意的地方,如果有向图的边有相交的情况,那么就不能简单的对原图求二分匹配了

举个例子,假设有图:1->2     2->5     2->3      4->2,事实上,这其实就是两条边:1->5  4->3 ,节点2只是他们的一个交点

关于二分匹配的基础图论知识_第1张图片

关于二分匹配的基础图论知识_第2张图片若直接求,则此图最大匹配数为2

关于二分匹配的基础图论知识_第3张图片 floyd求出传递闭包后 可以得到这样的图,此时最大匹配数为3 ( 1->2  ,  2->4,  3->5 )

最小路径覆盖数 = 顶点数 - 最大匹配数

 

 

如果只是简单的在原图的基础上求二分匹配,那么得到的匹配答案是2,最小路径覆盖答案便是5-2=3。

可是随便一看都能看看出端倪,这个图中,只需要两个点便可以探索完整个地图,这里最小路径覆盖数明显是2。

问题究竟出在哪里呢?其实就和这个交点2有关。既然边有相交,那么他们的连通性也应该连通下去。

解决的办法是对原图进行一次闭包传递(也就是flody),于是便增加了四条边:1->3   1->5   4->3  4->5

这时再求最大匹配数,匹配答案便是3,最小路径覆盖值为2,这是正确答案!

具体问题可见 PKU 2594 Treasure Exploration

你可能感兴趣的:(二分匹配)