def findAllPath(graph,start,end,path=[]):
path = path +[start]
if start == end:
return [path]
paths = []
for node in graph[start]:
if node not in path:
newpaths = findAllPath(graph,node,end,path)
for newpath in newpaths:
paths.append(newpath)
return paths
def findShortestPath(graph,start,end,path=[]):
path = path +[start]
if start == end:
return path
shortestPath = []
for node in graph[start]:
if node not in path:
newpath = findShortestPath(graph,node,end,path)
if newpath:
if not shortestPath or len(newpath)<len(shortestPath):
shortestPath = newpath
return shortestPath
search1=input(“请输入起点:”)
search2=input(“请输入终点:”)
graph = {‘A’: [‘B’, ‘C’,‘G’,‘F’],
‘B’: [ ‘A’,‘D’,‘E’,‘F’],
‘C’: [‘A’,‘D’,‘G’],
‘D’: [‘C’,‘B’,‘E’],
‘E’: [‘B’,‘D’,‘F’],
‘F’:[‘A’,‘B’,‘E’],
‘G’:[‘A’,‘C’]}
allpath = findAllPath(graph,search1,search2)
print(’\n所有路径:’,allpath)
shortpath = findShortestPath(graph,search1,search2)
print(’\n最短路径:’,shortpath)