gpt4 book ai didi

algorithm - 非递归 DFS 代码的复杂性

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:03 27 4
gpt4 key购买 nike

我认为这段代码的复杂度是:时间 : O(v) : v 是顶点Space: O(v) : v是顶点

public void dfs() {
Stack<Integer> stack = new Stack<Integer>();
stack.add(source);

while (!stack.empty()) {
int vertex = stack.pop();
System.out.println(" print v: " + vertex);
for (int v : graph.adj(vertex)) {
if (!visited[v]) {
visited[v] = true;
stack.add(v);
edgeTo[v] = vertex;
}
}
}
}

如有错误请指正

最佳答案

假设 graph.adj() 总是产生有限数量的顶点(可能只有一个),那么你是对的。

但是,如果它以任何方式取决于系统中存在的顶点总数,则不是。如果这种依赖是线性的,那么算法就是 O(n^2)。

一般来说,如果 f(n) 是每个顶点 graph.adj() 的平均数,那么答案就是 O(n*f(n))。

关于algorithm - 非递归 DFS 代码的复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18326363/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com