1. 程式人生 > >Dijkstra演算法和A*演算法的比較

Dijkstra演算法和A*演算法的比較

Dijkstra演算法A*演算法都是最短路徑問題的常用演算法,下面就對這兩種演算法的特點進行一下比較。
1.Dijkstra演算法計算源點到其他所有點的最短路徑長度,A*關注點到點的最短路徑(包括具體路徑)。
2.Dijkstra演算法建立在較為抽象的圖論層面,A*演算法可以更輕鬆地用在諸如遊戲地圖尋路中。
3.Dijkstra演算法的實質是廣度優先搜尋,是一種發散式的搜尋,所以空間複雜度和時間複雜度都比較高。對路徑上的當前點,A*演算法不但記錄其到源點的代價,還計算當前點到目標點的期望代價,是一種啟發式演算法,也可以認為是一種深度優先的演算法。
4.由第一點,當目標點很多時,A*演算法會帶入大量重複資料和複雜的估價函式,所以如果不要求獲得具體路徑而只比較路徑長度時,Dijkstra演算法會成為更好的選擇。