因此,DFS 应该检测有向图中的循环。如果它到达一个之前已经访问过的节点,即它找到一个后边,那么我们就有一个循环。
我发现了一个图表,其中我看不到这是怎么回事。我知道我的思维方式一定有缺陷,所以如果有人能帮助我,那就太好了。
所以这是带有邻接列表的图表(绘制它并不完全有效......):
一个 | B
B | C, D
C | F
D | E
E |
F | 乙
假设 DFS 从 A 开始,到达 B 后,将 C 先于 D 入栈,然后先到达节点 E,然后标记为已访问。然后它会弹出节点C,到F,然后在F的邻接表中找到E,并且E已经被访问过,从而给出一个循环。但是图中确实没有循环。
我推理的缺陷在哪里?