rambo

图论二(二分图)

无权二分图(unweighted bipartite graph)

最大匹配(maximum matching)和完美匹配(perfect matching),以及用于求解匹配的匈牙利算法(Hungarian Algorithm)。

二分图:把一个图的顶点划分为两个不相交集 UV ,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集。准确地说:如果存在这样的划分,则此图为一个二分图。二分图的一个等价定义是:不含有「含奇数条边的环」的图。

QQ截图20150731155806

分析:如果这个无向图没有回路,那么它一定是可以二分的,我们直接就可以利用BFS来为二分图着色(根据当前节点的颜色,对其所有相邻节点涂另一个颜色)。如图1,我们可以将它转化成图2的形式。 如果这个无向图有回路,如果回路的边数是偶数,那么它还是二分的,如果是奇数,那么它就不是二分的。如何判断回路的边数是奇数还是偶数呢?

结论:无向图G为二分图的充分必要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。

证明:1)必要性:  设G为二分图<X,E,Y>。由于XY非空,故G至少有两个顶点。若CG中任一回路,令C = (v_{0},v_{1},v_{2},...,v_{l-1},v_{l}= v_{0}),其中v_{i} (i = 0,1,...,l)必定相间出现于XY中,不妨设(v_{0},v_{2},v_{4},...,v_{ l} = v_{0})\in X(v_{1},v_{3},v_{5},...,v_{ l-1} )\in Y。因此l必为偶数,从而C中有偶数条边。

2)充分性:  设G的所有回路具有偶数长度,并设G为连通图(不失一般性,若G不连通,则可对G的各连通分支作下述讨论)。
G的顶点集为V,边集为E,现构作XY,使<X,E,Y>=G。取v_{0}\in V,置 X = {v| v= v0 or v到v0有偶数长度的通路}
Y = V-XX显然非空。现需证Y非空,且没有任何边的两个端点都在X中或都在Y中。
由于|V|≥2并且G为一连通图,因此v_{0}必定有相邻顶点,设为v_{1},那么v_{0}\in Y;故Y不空。
设有边(u,v),使u\in Xv\in X。那么,v_{0}u有偶数长度的通路,或u=v_{0}v_{0}v有偶数长度的通路,或v=v_{0}。无论何种情况,均有一条从v_{0}v_{0}的奇数长度的闭路径,因而有从v_{0}v_{0}的奇数长度的回路(因从闭路径上可能删去的回路长度总为偶数),与题设矛盾。故不可能有边(u,v)使u,v均在X中。
“没有任何边的两个端点全在Y中”的证明可仿上进行,请读者思考。

 

问题描述:给定一个无向图G=<V,E>,如何能够在O(V+E)时间内判断这个图是否是一个二分图(或者称为2着色)。

 

 

匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。在图论中,一个「匹配」(matching)是一个边的集合,其中任意两条边都没有公共顶点。例如,图 3、图 4 中红色的边就是图 2 的匹配。

 

参考资料:

1、http://blog.163.com/kevinlee_2010/blog/static/1698208202011113054046645/

2、http://blog.csdn.net/pi9nc/article/details/11848327