Algorithm 如何检查无向图是否有奇数长度圈
我试图找到一个O(| V |+| E |)时间算法来检查一个 无向图是否有奇数长度的圈 我正在考虑在图上进行广度优先搜索,并尝试将顶点标记为黑色和白色,以便没有两个标记为相同颜色的顶点相邻Algorithm 如何检查无向图是否有奇数长度圈,algorithm,graph,Algorithm,Graph,我试图找到一个O(| V |+| E |)时间算法来检查一个 无向图是否有奇数长度的圈 我正在考虑在图上进行广度优先搜索,并尝试将顶点标记为黑色和白色,以便没有两个标记为相同颜色的顶点相邻 有没有已知的更简洁的算法可以在线性时间内解决这个问题?你的方法是正确的。你做得再好不过了 工作的原因是,如果在执行BFS时按顶点的深度标记顶点,则所有边都会连接相同的标签或相差一个的标签。很明显,如果有一条边连接相同的标签,那么就有一个奇数周期。如果没有,我们可以将所有奇数标签涂成白色,将所有偶数标签涂成黑色
有没有已知的更简洁的算法可以在线性时间内解决这个问题?你的方法是正确的。你做得再好不过了
工作的原因是,如果在执行BFS时按顶点的深度标记顶点,则所有边都会连接相同的标签或相差一个的标签。很明显,如果有一条边连接相同的标签,那么就有一个奇数周期。如果没有,我们可以将所有奇数标签涂成白色,将所有偶数标签涂成黑色。也可以使用DFS和顶点编号来完成
i) Explore(v)
ii) clock=Num[u]
在初始化过程中,还需要将Num[s]=0