用于計算圖中各個頂點之間的最短路徑
稍微對概念做個梳理:
弗洛伊德是三層循環(huán),第一層是中轉(zhuǎn)點,第二層是起點,第三層是終點
弗洛伊德是一種DP,簡單來說,當(dāng)我們只在考慮i、j和k三點時,i到k的最短距離應(yīng)該是
min(Dijk, Dik)
,這里解釋下,Dijk
是從i出發(fā)經(jīng)過j最后到達(dá)k的距離,Dik
則是從i出發(fā)直接到達(dá)k的距離。
弗洛伊德算法的實現(xiàn):弗洛伊德通過對兩個矩陣的維護(hù)來實現(xiàn)最后的結(jié)果,其中第一個矩陣是記錄點i和點j之間距離的距離矩陣,第二個矩陣則是記錄點i到點j之間中轉(zhuǎn)的點k的中轉(zhuǎn)點矩陣。
為什么說是各個頂點之間的最短路徑呢?因為從最后的兩個表里面,可以得到所有點和點之間的最短路徑。
代碼不上了