我正在尝试制作一个小型公共交通路线应用程序。
我的数据以以下结构表示:
graph = {'A': {'B':3, 'C':5},
'B': {'C':2, 'D':2},
'C': {'D':1},
'D': {'C':3},
'E': {'F':8},
'F': {'C':2}}
在哪里:
- 图 dict 键是一个节点
- subdict 键是 2 个节点之间的一条边
- subdict 值是边缘权重
我正在使用这里描述的 find_shortest_path 算法https://www.python.org/doc/essays/graphs/但由于递归而相当慢并且不支持权重。
所以我转向大卫爱泼斯坦描述的算法http://code.activestate.com/recipes/119466-dijkstras-algorithm-for-shortest-paths/(甚至更好的实现可以在评论中找到使用堆)
它工作得很好,真的很快,但我只得到最好的路线,而不是所有可能路线的列表。这就是我坚持的地方。
有人可以帮我解决这个问题,或者至少给一个方向吗?我在图最短路径算法方面不是很好。
提前致谢!