最短路徑演算法 Dijkstra演算法 Floyd演算法 簡述_dijkstra

來源:互聯網
上載者:User
Dijkstra演算法

又稱迪傑斯特拉演算法,是一個經典的最短路徑演算法,主要特點是以起始點為中心向外層層擴充,直到擴充到終點為止,使用了廣度優先搜尋解決賦權有向圖的單源最短路徑問題,演算法最終得到一個最短路徑樹。時間複雜度為O(N^2)
執行動畫:

執行個體:



抽象步驟:

1.將起點A放入集合中,A點的權值為0,因為A->A=0。

2.與起點A相連的所有點的權值設定為A->點的距離,串連不到的設定為無窮。並且找出其中最小權值的B放入集合中(此時A->B必定為最小距離)。

3.與B點相連的所有點的權值設定為B->點的距離,並且找出其中最小權值的C點放入集合中(此時C的權值必定為其最小距離)。

4.重複步驟3,直至所有點加入集合中。便能得到所有點與A點的最短距離。


Floyd演算法

全稱Floyd-Warshall演算法,又稱佛洛依德演算法,是解決任意兩點間的最短路徑的一種演算法,但是時間複雜度比迪傑斯特拉要高,時間複雜度為O(N^3)嗎,空間複雜度為O(N^2)。 簡單案例:

步驟:

1.將圖轉化成矩陣:

2.選擇V0點作為第一個中間點:

3.進行V0中間點是否能縮短另外兩點間距離的判斷:簡而言之就是非對角線處(紅箭頭處)進行加法判斷,<則替換。

4.對後續點進行步驟2-3相應的操作。


範例:

INF表示無窮大。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.