如何应用动态编程来计算图中的最短路径?

时间:2018-11-28 04:31:08

标签: python graph dynamic-programming shortest-path planning

我正在尝试使用Python中的动态编程来计算最短路径。我将所有数据正确地存储为图形的加权线段(道路)和节点(城市),所以这不是问题,因为我能够实现经典算法(BFS,DFS ...),但情况是我没有知道如何应用动态编程来解决此问题。我只知道从A到B,我必须将问题划分为子问题,但是我不知道如何创建有效的算法,我的意思是算法应该遵循的步骤以及如何划分问题遇到小问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

根据建议,您可以看一下Bellman Ford算法。如果您想自己实现,维基百科提供了一个不错的伪代码:https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm

否则,您可以在Python(https://de.wikipedia.org/wiki/Bellman-Ford-Algorithmus#Software)中使用networkx软件包。

import networkx as nx
G = nx.Graph()
e = [('a', 'b', 3), ('b', 'c', 9), ('a', 'c', 5), ('c', 'd', 12)]
G.add_weighted_edges_from(e)
print(nx.bellman_ford_path(G, 'a', 'd'))
print(nx.bellman_ford_path_length(G, 'a', 'd'))