二分图的邻接矩阵划分

时间:2011-01-16 17:40:28

标签: graph bipartite adjacency-matrix

假设我有一个带有邻接矩阵A的图G.我知道G是二分的。 如何将G中的顶点分成总是形​​成二分图的两个集合? 谢谢!

1 个答案:

答案 0 :(得分:2)

声明一个大小等于顶点数的数组which,最初将每个元素设置为0。然后在图表中执行深度优先搜索,记录您所使用的“级别编号”。这从1开始,并且在每个边缘遍历时交替在1和2之间。对于到达的每个顶点,将当前级别分配给which的相应条目,并且(如果之前为0)递归以处理其子级。之后,which的所有元素都将为1或2,which[i]表示属于顶点i的集合。

直观地说,你可以想象在DFS中从父母到孩子的每次遍历都会让你“向下”一个级别,每次遍历都会让你“向上”。通过二分属性,偶数级别上的所有顶点只能连接到奇数级别上的顶点,反之亦然,因此标记节点“偶数”或“奇数”足以将它们分成两组。

如果您的图形包含多个组件,则每个组件当然需要单独的DFS。