0
def _all_simple_paths_graph(G, source, target, cutoff=None):
if cutoff < 1:
return
visited = [source]
stack = [iter(G[source])]
while stack:
children = stack[-1]
child = next(children, None)
if child is None:
stack.pop()
visited.pop()
elif len(visited) < cutoff:
if child == target:
yield visited + [target]
elif child not in visited:
visited.append(child)
stack.append(iter(G[child]))
else: #len(visited) == cutoff:
if child == target or target in children:
yield visited + [target]
stack.pop()
visited.pop()
我在此link上找到該代碼。棧[-1]在僞代碼中意味着什麼?
但不明白某些語句,如下
children = stack[-1]
//是什麼stack[-1]
意思?child = next(children, None)
//是孩子列表還是孩子列表?stack = [iter(G[source])]
//什麼是iter
?如果孩子是None://猜測孩子是否爲空(孩子是一個列表)。
visited = [source]
//這是什麼?yield visited + [target]
//收益?
任何人都可以向我解釋嗎?我想重寫它在C.
你能解釋一下最後兩個行? – arslan
@alim,我認爲它是模塊本身定義的東西之一。它不是語言的一部分。 – Haris
非常感謝,我沒有意識到它是python。 – arslan