Graph 无向图是一个二部图

Graph 无向图是一个二部图,graph,Graph,如何编写代码来确定给定的无向图是否为二部图(时间复杂度-线性时间)?我没有任何想法,如果您能帮我一点忙,我将不胜感激。要检查一个图是否是二部图,您可以检查它是否是(它是等价的) 可以找到解决这个问题的办法。我复制了下面的主要步骤,以防链接停止工作 将任意一个顶点涂成红色 标识与红色顶点相邻的所有未着色顶点。把它们涂成蓝色 标识与蓝色顶点相邻的所有未着色顶点。把它们涂成红色 重复步骤2和3,直到所有顶点都涂成红色或蓝色 如果有任何两个相邻的顶点具有相同的颜色,则图形不是二部的,否则它是二部

如何编写代码来确定给定的无向图是否为二部图(时间复杂度-线性时间)?我没有任何想法,如果您能帮我一点忙,我将不胜感激。

要检查一个图是否是二部图,您可以检查它是否是(它是等价的)

可以找到解决这个问题的办法。我复制了下面的主要步骤,以防链接停止工作

  • 将任意一个顶点涂成红色

  • 标识与红色顶点相邻的所有未着色顶点。把它们涂成蓝色

  • 标识与蓝色顶点相邻的所有未着色顶点。把它们涂成红色

  • 重复步骤2和3,直到所有顶点都涂成红色或蓝色

  • 如果有任何两个相邻的顶点具有相同的颜色,则图形不是二部的,否则它是二部的

  • 如果图形是二分的,着色算法将创建两组必需的点(一个红色和一个蓝色)

  • 该算法不是最优的,因为它不是在线性时间内运行的。通过在a或BFS中贪婪地着色图形的顶点,可以使用线性时间算法(
    O(E)
    E
    图形中的边数)