我試圖在python中使用dfs來實現一個圖來查找從'A'到'F'的所有可能路徑。 圖爲:dfs來實現一個圖,python
graph = {'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']}
而下面是我的代碼:
def dfs_path(graph,start,end):
res = []
dfs(graph,start,end,[],res)
return res
def dfs(graph,start,end,path,res):
path+=[start]
if start == end:
res+=[path]
elif not graph.has_key(start):
return
else:
for node in graph[start]:
if node not in path:
dfs(graph,node,end,path,res)
print dfs_path(graph,'A','F')
被處理的打印,我沒有得到我想要的東西,而是我得到[['A', 'B', 'D', 'E', 'F', 'C']]
燦任何人都會告訴我我的代碼有什麼問題,如果可能,我想知道使用相同格式編寫此代碼的正確方法。 謝謝
感謝您的回覆,你知道如何解決它? – younger
我的建議是使用'set'來跟蹤你所訪問的節點。在'dfs'的開頭添加'start'。當遍歷'start'的後繼者時,跳過屬於該集合成員的後繼者。否則遞歸,如果找到解決方案返回'[開始] +解決方案'。如果你退出循環而不返回,返回'None' –