对于无向图,如果我们需要查找环,我们使用深度优先搜索,如这个旧问题所述,这是一种众所周知的方法,也是最优的。但是对于有向图,这个其他问题建议使用拓扑排序。我的问题是,为什么我们不能使用与无向图相同的技术,在有向图中检查循环?我已经考虑了各种情况,算法似乎总是一致的。有人能否提供一些示例有向图,在其中DFS无法找到循环,但拓扑排序可以?
似乎您的问题是:在无向图中,您是否可以使用深度优先搜索来检测循环,还是应该使用拓扑排序?答案是两种方法都可以。如果有一个有向图中有一个循环,则可以通过对图运行深度优先搜索来检测到此循环。只要您从循环中的节点开始搜索,就保证最终会发现循环。事实证明,拓扑排序和DFS密切相关,具体如下:如果在图中运行DFS并且没有找到循环,则将每个节点标记为完全探索的相反顺序将给出图的拓扑排序。换句话说,“使用拓扑排序”的解决方案和“使用DFS”的解决方案可以被认为是极其相似的算法,因为一种实现拓扑排序的方法是使用DFS。希望这可以帮助您!