Recursion 图的深度优先遍历递归函数的时间复杂度

Recursion 图的深度优先遍历递归函数的时间复杂度,recursion,time-complexity,python-3.6,Recursion,Time Complexity,Python 3.6,我是学习递归函数和时间复杂性的初学者。 我有一个递归函数: def walk(g, visited_Set): if g is None or g in visited: return visited_Set.add(g) ### mark as visited print(g.value) ### process before visiting outgoing edges for node in g.edges: walk(node, visi

我是学习递归函数和时间复杂性的初学者。 我有一个递归函数:

def walk(g, visited_Set):
    if g is None or g in visited: return
    visited_Set.add(g) ### mark as visited
    print(g.value) ### process before visiting outgoing edges
    for node in g.edges:
        walk(node, visited_Set) ### walk all outgoing edge targets
在最坏的情况下,如果每个节点都连接到其他节点。
这是n^n时间复杂度还是n^2时间复杂度?

如果最坏的情况是每个节点都会命中n^2以外的其他节点

对于每n(n次),我们将再次点击n(n次)。所以我们会打n,n次

想象一下,如果您有一个包含5项的数组:

[A、B、C、D、E]

如果将每个索引与我们的其他索引进行比较:

A与A、B、C、D、E的比较(5倍)

B与A、B、C相比。。。。(5次)

E与A、B、C、D、E相比(5倍)


如果n=5,则假设集合查找和插入是
O(1)
,则图形遍历将是
O(n+e)
,其中
n
是节点数,
e
是边数

<如果你认为A是最坏的情况,它有<代码> n(n-1)/2 < /COD>边,这会造成时间复杂度<>代码> o(n+n(n-1)/2)< /> > ->代码> o(n席)