标签列表
为什么在无向图中,检测循环的DFS时间复杂度是O(|V|),而不是O(|V| + |E|)?
algorithm
graph
depth-first-search
5
5
请问有人能详细解释一下,为什么并且如何使用深度优先搜索(DFS)在无向图中检测一个循环的上限是O(|V|)吗?
-
Sazz
1
个回答
9
9
没有循环的图最多只有|V|-1条边(称为
森林
)。因此,如果DFS发现|V|条边或更多,则已经找到了一个循环并终止。运行时间因此受到O(|V|)的限制。
-
Yakov Galka
2
点赞 :) 一个没有环的图最多只有|V|-1条边。也许这就是你的意思,因为后面你说“如果DFS发现|V|条边或更多……”
- Paul Hankin
@PaulHankin:谢谢,我没有注意到常数(问题是关于渐近的)。 :)
- Yakov Galka
回答链接
网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接
相关问题
3
为什么图的邻接表的时间复杂度是(V + E)而不是(V^2)?
3
给定一个多重图的邻接表,计算等价(简单)无向图的邻接表,时间复杂度为O(|V|+|E|)。
9
为什么TreeSet迭代的时间复杂度是O(n),而不是O(n*logn)?
16
为什么在邻接矩阵中DFS的复杂度是O(V^2),而在邻接表表示中是O(V+E)?
23
为什么BFS的复杂度是O(V+E)而不是O(V*E)?
19
为什么BFS/DFS的时间复杂度不仅仅是O(E),而是O(E+V)?
7
在一张图中,O(|E|*|V|)的复杂度被认为是多项式还是非多项式?
3
在仅有两种代价的图中寻找最短路径,时间复杂度为O(V + E)。
4
为什么DAG的拓扑排序时间复杂度为O(V+E),而不仅是O(V)?
3
使用O(V + E)验证Dijkstra算法