我试图理解在图中检测循环的某些有效方法的时间复杂度。
这里解释了两种方法。这里。我认为时间复杂度是以最坏情况为基础提供的。
第一种是并查集,据说具有O(Vlog E)的时间复杂度。
第二种使用基于DFS的方法,据说具有O(V+E)的时间复杂度。如果我没错,这比O(Vlog E)更高效即渐近复杂度更小。此外,基于DFS的方法对于有向和无向图都适用。
我的问题是我不明白如何认为第二种方法可以在O(V+E)时间内运行,因为DFS的时间复杂度是O(V+E),而且算法会检查已发现节点相邻的节点是否为起始节点。这肯定意味着该算法的运行时间是O(V2),因为对于每个已发现的节点,最多可能要遍历V-1个相邻节点?显然,不止一个节点需要遍历n-1个相邻节点是不可能的,但从我的理解来看,这仍将是运行时间的上限。
希望有人能理解我为什么这样想,并帮助我理解为什么复杂度是O(V+E)。
O(V)
的限制将不成立。更多信息请参见:https://mathoverflow.net/questions/61869/is-that-possible-to-find-an-algorithm-with-complexity-of-on-to-find-an-acyclic - HEKTO