當前位置:首頁 » 操作系統 » 貪心演算法單源最短路徑

貪心演算法單源最短路徑

發布時間: 2024-12-19 22:18:54

『壹』 直觀理解:單源點最短路徑——Dijkstra演算法

  Dijkstra演算法是由荷蘭計算機科學家 Edsger Wybe Dijkstra於1959年提出的單源點最短路徑演算法(SSSP:Single Souce Shortest Path)。是一個解決加權圖(不含負權重的邊)中從一個頂點到其餘各個頂點最短路徑問題的演算法。Dijkstra演算法是一個集 貪心演算法 , 廣度優先搜索(BFS) 和 動態規劃 於一身的最短路徑演算法。Dijkstra演算法的主要特點是從起源點開始,採用貪心演算法的策略,每次遍歷到始點距離最近且未訪問過的頂點的鄰接頂點,直到擴展到終點為止。
  Dijkstra演算法通過維護兩個集合: (已求出最短路徑的頂點)和 (未求出最短路徑的頂點),每次迭代地從 中移除路徑距離最小的點到集合 中,並通過這個新移入的點來更新 中各個頂點到源點的最短路徑,直到集合 為空。下面我們通過一個例子來簡單描述Dijkstra演算法的過程。
  假設我們有如下的圖,其中頂點A未此次演算法的起點:

  首先我們需要初始化兩個集合 和 ,以及 中每個頂點到源點的距離,若不直接於A相鄰,結果置為正無窮∞。

   Step 1: 從集合 中挑選出距離最小的點,這里會挑選出頂點F,集合 和 變更為: , ,根據最新的 ,重新計算 中頂點到源點A的最短距離。

   Step 2:: 從集合 中挑選出距離最小的點,這里會挑選出頂點E,集合 和 變更為: , ,根據最新的 ,重新計算 中頂點到源點A的最短距離。

   Step 3: 從集合 中挑選出距離最小的點,這里會挑選出頂點C,集合 和 變更為: , ,根據最新的 ,重新計算 中頂點到源點A的最短距離。

   Step 4: 從集合 中挑選出距離最小的點,這里會挑選出頂點D,集合 和 變更為: , ,根據最新的 ,重新計算 中頂點到源點A的最短距離。

   Step 5: 從集合 中挑選出距離最小的點,這里會挑選出頂點B,集合 和 變更為: , ,根據最新的 ,重新計算 中頂點到源點A的最短距離。

   Step 6: 從集合 中挑選出距離最小的點,這里會挑選出頂點G,集合 和 變更為: , ,由於集合 為空,演算法停止迭代,輸出結果。

  以上就是對Dijkstra演算法的計算過程的簡單描述。

熱點內容
java中的默認值 發布:2025-07-03 22:11:34 瀏覽:749
岳姓三才配置怎麼分 發布:2025-07-03 22:10:26 瀏覽:664
演算法需求分析 發布:2025-07-03 22:00:45 瀏覽:144
單片機的交叉編譯 發布:2025-07-03 22:00:45 瀏覽:859
滑鼠存儲 發布:2025-07-03 21:43:54 瀏覽:101
unity3d腳本打包 發布:2025-07-03 21:36:05 瀏覽:862
伺服器獨享寬頻怎麼樣 發布:2025-07-03 21:35:58 瀏覽:837
重慶哪裡有安卓手機專賣店 發布:2025-07-03 21:21:42 瀏覽:378
上傳ftp亂碼linux 發布:2025-07-03 21:20:26 瀏覽:333
多線程下載java 發布:2025-07-03 21:15:30 瀏覽:718