1. 程式人生 > >只有五行的算法--floyd-warshall

只有五行的算法--floyd-warshall

道路 image 圖的存儲 src sharp 空間 算法 .cn log

floyd-warshall算法用來求最短路徑(即動態規劃)求任意兩點的最短距離

時間復雜度為O(N3),空間復雜度為O(N2)。

到達目的地有兩種方法,一:直接點對點,沒有中轉站。二:經過中轉站直接到達。

在求最短路徑前,先談談地圖的存儲

技術分享

技術分享

技術分享

如圖,使用二元數組存儲。圖中無窮大代表沒有道路,e[1][2]=2代表1城市到2城市的路徑

核心代碼

   for (int k = 0; k <= 3; k++)
            for (int i = 0; i < 4; i++)
                for (int j = 0; j < 4; j++) {
                    if (map[i][j] > map[i][k] + map[k][j]) {
                        map[i][j] = map[i][k] + map[k][j];
                    }
                }
  

  就五行。

只有五行的算法--floyd-warshall