使用这样的函数:
def simple_paths(start, length, visited=[]):
if length==0:
yield(visited + [start])
else:
for child in children(start):
if child not in visited:
for path in simple_paths(child, length-1, visited + [start]):
yield(path)
Run Code Online (Sandbox Code Playgroud)
您可以通过调用列出长度为 4 的所有简单路径
for start in nodes():
for path in simple_paths(start, 4):
print path
Run Code Online (Sandbox Code Playgroud)
上面假设nodes()返回图中所有节点的可迭代,并children(x)返回节点的子节点的可迭代x。

正确地将函数应用simple_paths()到上图会得到:
['5', '9', '3', '1', '0']
['6', '5', '9', '3', '1']
['6', '5', '3', '1', '0']
['9', '5', '3', '1', '0']
Run Code Online (Sandbox Code Playgroud)
这表明该函数:
['6', '5', '1', '3', '9'])['6', '5', '3', '1', '5'])