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