Floyd演算法介紹

Download Report

Transcript Floyd演算法介紹

Floyd演算法介紹
M0224005 劉奕顯
1
Floyd演算法(1/8)

完全最短路徑問題(All-pairs shortest-paths problem):
找到每個節點到其他所有節點的最短距離

距離矩陣:記錄最短路徑的長度
2
Floyd演算法(2/8)
生成距離矩陣

代表從第i個節點到第j個節點的最短路徑的長度,

且路徑中經過的中間節點數量不大於k
當

3
時
Floyd演算法(3/8)
4
Floyd演算法(4/8)
5
i
j
2
3
2+3=5
4
3
6+3=9
Floyd演算法(5/8)
6
Floyd演算法(6/8)
7
Floyd演算法(7/8)
8
Floyd演算法(8/8)
Floyd(W [1..n, 1..n])
//輸入:圖形的加權矩陣W
//輸出:最短路徑長度的距離矩陣D
D←W
for k ← 1 to n do
for i ← 1 to n do
for j ← 1 to n do
D[i,j] ← min{ D[i,j] , D[i,k]+D[k,j] }
return D
9