重念一次早該補起來的「資料結構與演算法」。這篇筆記下圖形演算法的 Floyd-Warshall 演算法。
課程相關資訊
[連結]:https://hiskio.com/courses/572/lectures/29899
本篇範圍:Chapter 10
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
Floyd-Warshall 演算法是用來找出具有方向性且有權重的 Graph 其的最短路徑
1. 權重正負數皆可
2. 它可用於 Dynamic Programming 動態規劃
程式碼概念
1. 它擁有 O (n^3) 的時間複雜度,n 代表 0 到 n-1 個節點來進行循環
2. 它是一個 nested 的循環結構
2-1. 先製作一個 Table,Node i -> Node j 的相對權重表格。自己到自己為 0;其餘預設為無限大;將單項道的權重寫入
2-2. Node k 要用 i->k + k->j 的權重,與直接抵達的區別。如過前者比較近,那就把表格的對應值修改掉