戴克斯特拉算法

戴克斯特拉算法 （ Dijkstra's algorithm ） ， 又譯迪傑斯特拉算法 ， 亦可不音譯而稱爲Dijkstra算法 ， 是由荷蘭計算機科學家艾茲赫爾 · 戴克斯特拉在1956年發現的算法 ， 並於3年後在期刊上發表 。 戴克斯特拉算法使用類似廣度優先搜索的方法解決賦權圖的單源最短路徑問題 。 該算法存在很多變體 ： 戴克斯特拉的原始版本僅適用於找到兩個頂點之間的最短路徑 ， 後來更常見的變體固定了一個頂點作爲源結點然後找到該頂點到圖中所有其它結點的最短路徑 ， 產生一個最短路徑樹 。 該算法解決了圖 上帶權的單源最短路徑問題 。 具體來說 ， 戴克斯特拉算法設置了一頂點集合 ， 在集合中所有的頂點與源點之間的最終最短路徑權值均已確定 。 算法反覆選擇最短路徑估計最小的點並將加入中 。 該算法常用於路由算法或者作爲其他圖算法的一個子模塊 。 舉例來說 ， 如果圖中的頂點表示城市 ， 而邊上的權重表示城市間開車行經的距離 ， 該演算法可以用來找到兩個城市之間的最短路徑 。 應當注意 ， 絕大多數的戴克斯特拉算法不能有效處理帶有負權邊的圖 。 戴克斯特拉算法在計算機科學的人工智能等領域也被稱爲均一開銷搜索 ， 並被認爲是的一個特例 。