zoukankan      html  css  js  c++  java
  • 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]
  • 相关阅读:
    eclipse 插件编写(三)(转)
    eclipse 插件编写(二)
    eclipse 插件编写(一)(转)
    js 中的 this 关键字
    js中创建对象的几种方式
    js 如何中如何理解对象?
    项目中的小技巧
    王国维的诗
    uni-app 基础组件
    登庐山 毛
  • 原文地址:https://www.cnblogs.com/hanahimi/p/4692631.html
Copyright © 2011-2022 走看看