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席)