python图的应用

一 图的结构


 
 

二 代码

  1. def searchGraph(graph,start,end):
  2. results =[]
  3. generatePath(graph,[start],end,results)
  4. results.sort(key =lambda x:len(x))
  5. return results
  6. def generatePath(graph,path,end,results):
  7. state = path[-1]
  8. if state == end:
  9. results.append(path)
  10. else:
  11. for arc in graph[state]:
  12. if arc notin path:
  13. generatePath(graph,path +[arc],end ,results)
  14. if __name__ =='__main__':
  15. Graph={'A':['B','C','D'],
  16. 'B':['E'],
  17. 'C':['D','F'],
  18. 'D':['B','E','G'],
  19. 'E':[],
  20. 'F':['D','G'],
  21. 'G':['E']}
  22. r = searchGraph(Graph,'A','E')
  23. print("******************")
  24. print(' path A to E')
  25. print("******************")
  26. for i in r:
  27. print(i)
 
三运行结果
******************
  path A to E
******************
['A', 'B', 'E']
['A', 'D', 'E']
['A', 'C', 'D', 'E']
['A', 'D', 'B', 'E']
['A', 'D', 'G', 'E']
['A', 'C', 'D', 'B', 'E']
['A', 'C', 'D', 'G', 'E']
['A', 'C', 'F', 'D', 'E']
['A', 'C', 'F', 'G', 'E']
['A', 'C', 'F', 'D', 'B', 'E']
['A', 'C', 'F', 'D', 'G', 'E']

猜你喜欢

转载自cakin24.iteye.com/blog/2382423