演算法研究:最短路徑之迪傑斯特拉演算法

來源:互聯網
上載者:User

對於網圖來說,最短路徑,是指兩頂點之間經過的邊上權值之和最少的路徑,並且我們稱路徑上的第一個頂點為源點, 最後一個頂點為終點。最短路徑的演算法主要有迪傑斯特拉(Dijkstra)演算法和弗洛伊德(Floyd)演算法。本文先來講第一種, 從某個源點到其餘各頂點的最短路徑問題。

這是一個按路徑長度遞增的次序產生最短路徑的演算法,它的大致思路是 這樣的。

比如說要求圖7-7-3中頂點v0到v1的最短路徑,顯然就是1。由於頂點v1還與v2,v3,v4連線,所以此時我們 同時求得了v0->v1->v2 = 1+3 = 4, v0->v1->v3 = 1 +7 = 8, v0->v1->v4 = 1+5 = 6。

現在我 們可以知道v0到v2的最短距離為4而不是v0->v2 直接連線的5,如圖7-7-4所示。由於頂點v2還與v4,v5連線,所以同時我 們求得了v0->v2->v4其實就是v0->v1->v2->v4 = 4+1=5,v0->v2->v5 = 4+7 = 11,這裡v0->v2 我們用的是剛才計算出來的較小的4。此時我們也發現v0->v1->v2->v4 = 5要比v0->v1->v4 = 6還要小,所 以v0到v4的最短距離目前是5,如圖7-7-5所示。

當我們要求v0到v3的最短路徑時,通向v3的三條邊,除了v6沒有研 究過外,v0->v1->v3 = 8, 而v0->v4->v3 = 5 +2 = 7,因此v0到v3的最短路徑為7,如圖7-7-6所示。

如上所示,這個演算法並不是一下子就求出來v0到v8的最短路徑,而是一步步求出它們之間頂點的最短距離,過程中都是基於 已經求出的最短路徑的基礎上,求得更遠頂點的最短路徑,最終得到想要的結果。

聯繫我們

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