目录
概述
对于一个无向图 G=(V,E) ,它的顶点集 V 可以恰好分为两个不相交的子集,并且在这个无向图中,任意一条边所连接的两个顶点都分别属于这两个不同的子集,那么我们将这个无向图称作 二分图(如果你愿意也称 二部图)。
图例:(A中的点没有边直接相连,B同理)
判断二分图
我们可以使用 DFS 的方法对图进行染色,遍历所有点,如果当前点未被染色,则从此点开始进行 DFS 并进行染色,对路径上的点交替染色,如果发现在某个点时矛盾,原图就不为二分图。
时间复杂度为 O(N),空间复杂度为 O(N+E)。
算法实例
接下来,用一个例子说明染色的过程
给定一张图
下面我们开始染色,节点 1 未被染色,我们从 1 开始进行 DFS。