我正在尝试制作一个小型的公共交通路线应用程序。
我的数据以以下结构表示:
graph = {'A': {'B':3, 'C':5},
'B': {'C':2, 'D':2},
'C': {'D':1},
'D': {'C':3},
'E': {'F':8},
'F': {'C':2}}
其中:
- 图字典中的键是节点
- 子字典中的键是两个节点之间的边
- 子字典中的值是边的权重
我曾使用在这里描述的find_shortest_path算法 https://www.python.org/doc/essays/graphs/,但由于递归而且不支持权重,所以它相当慢。
因此,我转向Davide Epstein在这里描述的算法 http://code.activestate.com/recipes/119466-dijkstras-algorithm-for-shortest-paths/ (在评论中甚至可以找到更好的实现与heapq的用法)
它运行得很好,非常快,但我只得到了最佳路线而不是所有可能路线的列表。那就是我卡住的地方。
请问有人能帮我解决这个问题吗,或者至少给一个方向?我不太擅长图形最短路径算法。
谢谢!