java - 如何使用深度优先搜索 (DFS) 检测有向图中的多个重叠循环?

标签 java algorithm depth-first-search cycle directed-graph

具有重叠环的有向图的图像

enter image description here

一共需要检测8个cycle:-

1-2-3-4-5-1
1-2-3-6-5-1
1-2-7-6-5-1
1-2-7-4-5-1

1-8-7-6-5-1
1-8-7-4-5-1
1-8-3-4-5-1
1-8-3-6-5-1

我了解如何使用 WHITE、GRAY 和 BLACK SETS 以及 boolean 访问数组/堆栈,但我仍在为逻辑而苦苦挣扎。感谢任何帮助,我不需要详细描述如何编码,只需要如何使用算法(修改后的 DFS)和伪代码。再次感谢您抽出宝贵时间。

最佳答案

有向图中检测循环的关键是灰色(这意味着正在探索节点及其邻居)。
如果这些邻居中的一个与灰色节点有另一个连接,则您有一个循环。
因此,如果一个已探索的节点有一个灰色的邻居,那么你就有了一个循环。
换句话说,如果一个节点在它的所有邻居都被探索之前被重新访问,那么你就有了一个循环。

关于java - 如何使用深度优先搜索 (DFS) 检测有向图中的多个重叠循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624615/

相关文章:

algorithm - 断开连接的图形上的 DFS

java - 如何在 Python 中使用 tensorflow 训练图像分类器模型并在 Java 应用程序中使用训练后的模型?

java ioException错误=24打开的文件太多

java - 自定义比较器,用于对州、县和邮政编码列表进行排序

java - 二维数组的水容量

java - Java 中的递归搜索

java - Jboss AS7 连接池不会重新连接

java - 如何在 Fedora 中保留类似于 Windows 的 Java GUI 外观

python - 如何在剔除不良序列的同时生成排列?

java - 如何找到数组中唯一不出现两次的数字