繁体   English   中英

线性时间中深度优先搜索的时间复杂度

[英]Time complexity of the depth-first search in linear time

我对以下算法的时间复杂度感到困惑,是O(V)还是O(V + E)?

DFS(G,s,t):


vis[s] = true
        if s == t
            vis[s] = false, return 1
        cont = 0
        for v is adj(s)
            if vis[v] == false
                cont = cont + DFS(G,s,t)
        vis[s] = false
        return cont

在研究图复杂性理论时,有时更容易想到“我要处理每个边/顶点多少次”而不是此循环运行了多少次。 这是因为图中的循环具有可变的长度,并且随着重复发生,事情只会变得混乱。

最终,在DFS算法中,您将必须检查每个边的另一端是什么,并决定是否访问顶点。 您将仅对每个边缘执行一次,并且仅执行一次。 因此,您必须考虑每个方面。

由于每个顶点也仅被考虑(访问)一次,因此产生了O(V + E)复杂度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM