在本文中,我們將主要介紹Dijkstra算法和A*算法,從成本計算的角度出發,并逐步展開討論。我們將從廣度優先搜索開始,然后引入Dijkstra算法,與貪心算法進行比較,最終得出A*算法。
成本計算
在路徑規劃中,成本計算的一個主要因素是距離。距離可以作為一種衡量路徑長短的度量指標,通常使用歐幾里得距離、曼哈頓距離或其他合適的距離度量方法來計算。本文主要介紹歐幾里得距離與曼哈頓距離。
![【自動駕駛】路徑規劃算法Dijkstra與A](http://www.1jiwang.com/uploads/image/2024/0505/164P139D0.jpg)
![【自動駕駛】路徑規劃算法Dijkstra與A](http://www.1jiwang.com/uploads/image/2024/0505/164P136471.png)
![【自動駕駛】路徑規劃算法Dijkstra與A](http://www.1jiwang.com/uploads/image/2024/0505/164P31W02.jpg)
![【自動駕駛】路徑規劃算法Dijkstra與A](http://www.1jiwang.com/uploads/image/2024/0505/164P35U63.png)
廣度優先搜索
廣度優先搜索(Breadth First Search,BFS )是一種圖遍歷算法,按照廣度方向逐層遍歷所有可達節點。
BFS的基本思想是通過維護一個隊列,逐層訪問節點。具體步驟如下:
1.將起始節點放入隊列中,并標記為已訪問。
2.當隊列非空時,執行以下步驟:
- 從隊列中取出一個節點,記為當前節點,并標記為已訪問。
- 如果該節點是目標節點,則返回結果。
- 將當前節點的所有未訪問過的鄰居節點放入隊列中。
3.如果隊列為空,則表示已經遍歷完所有可達節點,算法結束。
算法框圖
![【自動駕駛】路徑規劃算法Dijkstra與A](http://www.1jiwang.com/uploads/image/2024/0505/164P3F224.png)