全域性路徑規劃 04 A 演算法

2022-10-04 03:06:13 字數 929 閱讀 6724

a*演算法是一種靜態路網中求解最短路徑最有效的直接搜尋方法。廣泛應用於室內機械人的路徑搜尋、遊戲動畫路徑搜尋等;

a*演算法結合了貪心演算法(深度優先)和dijkstra演算法(廣度優先),是一種啟發式的搜尋演算法;

路徑優劣評價公式為:\(f\left(n\right)=g\left(n\right)+h\left(n\right)\),\(g\left(n\right)\)是在狀態空間中從初始狀態到狀態\(n\)的實際代價,\(h\left(n\right)\)是從狀態\(n\)到目標狀態的最佳路徑的估計代價

a*演算法使用了兩個狀態表,分別稱為openlistcloselistopenlist儲存待考察的節點,closelist儲存已考察過的節點。

將地圖柵格化,把每乙個正方形格仔的**稱為節點;

確定柵格屬性,即每乙個格仔有兩種狀態:可走和不可走;

定義兩個列表集合:openlist和closelist,openlist可以儲存節點的g值;

確定起始節點和目標節點。

初始時,定義起始節點為父節點,移入closelist中;

逐個檢查與父節點i相鄰的周圍的節點\(j\),忽略不可走節點和已經存在於closelist中的節點:

計算openlist中所有節點的\(f\)值:\(f\left(n\right)=g\left(n\right)+h\left(n\right)\),從openlist中取出\(f\)值最小的節點,放到closelist中,並把它作為新的父節點\(i\);

重複步驟2和步驟3,不斷重複,直到搜尋到目標節點,完成路徑搜尋。搜尋出路徑的結果可以直接遍歷父節點得到。

待更新,後續會補到github上

全域性路徑規劃之 Dijkstra演算法

通過dijkstra計算圖g中的最短路徑時,需要指定起點s 即從頂點s開始計算 此外,引進兩個集合s和u。s的作用是記錄已求出最短路徑的頂點 以及相應的最短路徑長度 而u則是記錄還未求出最短路徑的頂點 以及該頂點到起點s的距離 初始時,s中只有起點s u中是除s之外的頂點,並且u中頂點的路徑是 起點...

全域性路徑規劃 01 Dijkstra演算法

應用場景 城市路網的路徑規劃 演算法流程 初始時,s集只包含起點s,u集包含除s外的其他節點,u集中的節點v與起點s相鄰,則該節點儲存值為距起點s的距離,若與起點s不相鄰,則距離為無限大 從u集中選出距離起點最短的節點k,並將節點k加入到s集中,同時從u集中移除節點k 更新u集中各個節點到起點s的距...

路徑規劃演算法 A 演算法

a a star 演算法是一種靜態路網中求解最短路徑最有效的直接搜尋方法,也是解決許多搜尋問題的有效演算法。演算法中的距離估算值與實際值越接近,最終搜尋速度越快 astar演算法是從起點開始一步步的往終點探索。他有兩個鍊錶open鍊錶和close鍊錶。每探索 本文稱之為 擴充套件 乙個點n時,就獲取...