繁体   English   中英

检测无向图中是否存在循环

[英]Detect if there exists a cycle in an undirected graph

我的问题是关于检测是否存在循环。 我不关心循环发生在哪里,但只有在存在循环的情况下。 特别是,我正在研究(最大)生成树算法的实现。 我按降序对边缘进行了排序,然后我选择了一条边并将其放入图形边缘IFF的集合中,它不会导致循环。

我发现,对于无向图,只能检查是否no_of_edges> no_of_vertices - 1 这是正确的吗? 我试图找到一个不真实的案例,但我不能。 当然,这并不意味着这是正确的。

谢谢

只需运行DFS搜索; 它会自动检测循环,因为这是DFS的停止条件 - 当你进入一个已经在堆栈中的节点时就停止了,当你找到一个循环时就停止了。

如果图形断开连接,或者两个给定节点之间有多个边缘,那么您的想法就会失败。 如果您规定任何两个节点之间最多只有一条边,那么您仍然需要检查连通性。

但是,是的,如果连接图中的边数<=顶点数-1,那么就没有周期。

基本上说你的想法是正确的。 但可能存在一些陷阱:

1)首先运行DFS并找到所有连接的组件,检查所有连接组件中的条件no_of_edges <= no_of_vertices - 1

2)检查每个连接的组件是否包含多个边。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM