单根有向无环图循环检测

时间:2016-07-11 11:59:32

标签: java algorithm graph topological-sort

图表只有一个根。它以以下格式保存:

0 -> 1,
0 -> 2,
1 -> 3,
1 -> 4,
2 -> 4,
2 -> 5,
4 -> 5,
5 -> 2 (This is the cycle)

使用Java检测图中是否存在至少一个循环的最有效方法是什么?谢谢!

example

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,可能是某种类似DFS的

SET isCyclic to false
DFS(node)
   IF isCyclic is true THEN 
       RETURN
   FOR each neighbor in node.neighbors
       IF node.visited is true THEN
           SET isCyclic to true
           RETURN
       SET neighbor.visited to true
       DFS(neighbor)