勵志

勵志人生知識庫

迪克斯特拉算法

迪傑斯特拉算法(Dijkstra)是由荷蘭計算機科學家狄克斯特拉於1959年提出的,用於解決有權圖中最短路徑問題。該算法採用貪心策略,從起始點開始,每次遍歷到始點距離最近且未訪問過的頂點的鄰接節點,直到擴展到終點為止。迪傑斯特拉的原始版本僅適用於找到兩個頂點之間的最短路徑,而更常見的變體是固定一個頂點作為源結點,然後找到該頂點到圖中所有其他結點的最短路徑,產生一個最短路徑樹。

迪傑斯特拉算法的輸入包含了一個有權重的有向圖G,以及G中的一個來源頂點S。算法可以找到S到G中所有其他頂點的最短路徑。該算法常用於路由算法或者作為其他圖算法的一個子模組。

在算法實現上,迪傑斯特拉算法是基於鄰接矩陣實現的。其核心思想是給賦權圖的每一個頂點記一個數,稱為頂點的標號:臨時標號T表示從始頂點到該標點的最短路長的上界,固定標號P表示從始頂點到該頂點的最短路長。

迪傑斯特拉算法的時間複雜度為O(n^2),其中n為圖的頂點個數。