我正在嘗試進行深度優先搜索以查找所有路徑的列表,然後確定最短和最長的路徑。找到沒有指定結束節點的所有路徑?
Python文檔(https://www.python.org/doc/essays/graphs/)具有以下,這需要一個端節點:
def find_all_paths(graph, start, end, path=[]):
path = path + [start]
if start == end:
return [path]
if not graph.has_key(start):
return []
paths = []
for node in graph[start]:
if node not in path:
newpaths = find_all_paths(graph, node, end, path)
for newpath in newpaths:
paths.append(newpath)
return paths
我的問題是如何能夠找到一個(有向無環)圖中的所有路徑,而無需指定端節點?我的開始節點在任何時候都會保持不變。
我可以在開始時使用for循環並遍歷節點。但這並不像是最有效的方式,因爲如果我可以使用相同的路徑來重新訪問節點,那將會浪費計算時間。
for node in nodeList:
find_all_paths(graph, 0, node)