python資料結構與演算法——圖的最短路徑(Floyd-Warshall演算法)

來源:互聯網
上載者:User

標籤:

使用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]

 

python資料結構與演算法——圖的最短路徑(Floyd-Warshall演算法)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.