您的当前位置:首页正文

python数据结构与算法——图的最短路径(Floyd-Warshall算法)

2023-06-20 来源:爱go旅游网
python数据结构与算法——图的最短路径(Floyd-Warshall算

法)

使⽤Floyd-Warshall算法 求图两点之间的最短路径不允许有负权边,时间复杂度⾼,思路简单

1 # 城市地图(字典的字典)

2 # 字典的第1个键为起点城市,第2个键为⽬标城市其键值为两个城市间的直接距离 3 # 将不相连点设为INF,⽅便更新两点之间的最⼩值 4 INF = 99999

5 G = {1:{1:0, 2:2, 3:6, 4:4}, 6 2:{1:INF, 2:0, 3:3, 4:INF}, 7 3:{1:7, 2:INF, 3:0, 4:1}, 8 4:{1:5, 2:INF, 3:12, 4:0} 9 }10

11 # 算法思想:

12 # 每个顶点都有可能使得两个顶点之间的距离变短

13 # 当两点之间不允许有第三个点时,这些城市之间的最短路径就是初始路径14

15 # Floyd-Warshall算法核⼼语句

16 # 分别在只允许经过某个点k的情况下,更新点和点之间的最短路径

17 for k in G.keys(): # 不断试图往两点i,j之间添加新的点k,更新最短距离18 for i in G.keys():

19 for j in G[i].keys():

20 if G[i][j] > G[i][k] + G[k][j]:21 G[i][j] = G[i][k] + G[k][j]22 23

24 for i in G.keys():25 print G[i].values()

结果:

[0, 2, 5, 4][9, 0, 3, 4][6, 8, 0, 1][5, 7, 10, 0]

因篇幅问题不能全部显示,请点此查看更多更全内容