具有重叠环的有向图的图像
一共需要检测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/