无权二分图(unweighted bipartite graph)
最大匹配(maximum matching)和完美匹配(perfect matching),以及用于求解匹配的匈牙利算法(Hungarian Algorithm)。
二分图:把一个图的顶点划分为两个不相交集 和 ,并且图中每条边依附的两个顶点都分属于这两个互不相交的子集。准确地说:如果存在这样的划分,则此图为一个二分图。二分图的一个等价定义是:不含有「含奇数条边的环」的图。
分析:如果这个无向图没有回路,那么它一定是可以二分的,我们直接就可以利用BFS来为二分图着色(根据当前节点的颜色,对其所有相邻节点涂另一个颜色)。如图1,我们可以将它转化成图2的形式。 如果这个无向图有回路,如果回路的边数是偶数,那么它还是二分的,如果是奇数,那么它就不是二分的。如何判断回路的边数是奇数还是偶数呢?
结论:无向图为二分图的充分必要条件是,至少有两个顶点,且其所有回路的长度均为偶数。
证明:1)必要性: 设为二分图。由于,非空,故至少有两个顶点。若为中任一回路,令,其中必定相间出现于及中,不妨设,。因此必为偶数,从而中有偶数条边。
问题描述:给定一个无向图,如何能够在时间内判断这个图是否是一个二分图(或者称为2着色)。
匹配:给定一个二分图,在的一个子图中,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