定義:綠色節點為a
紅色節點為b
a右邊為c
dst:使用兩點距離計算公式
表op :儲存節點用 (開放列表)
表cl :儲存節點用 (開放列表)
節點的上級節點 名為 fn
gl : 節點屬性 用於儲存與a的距離
下述計算過程定義為 過程1
strat
計算 c 與 b 的距離( dst ) 結果為 h
計算 c 與 a 的距離( dst ) 結果為 g
f=h+g
將 c 加入 表op
c 的 fn = a
c 的 gl = fn 的 gl + c與a的距離
end把 a 周圍的節點都使用 過程1 計算一遍(不包含 表cl 裡的節點,及不可通過節點),選擇 f 較小的做為新節點(定義:新節點=n)
將 a 加入 表cl,n 加入 表cl,從 表op 移除 n
將 n 當成 a 以 過程1 計算 直至找到 b。
對於 表op 裡的節點的使用:
表op 裡的節點有時會包含 n 周圍的節點,包含時這個節點定義為 m
計算 m 的 fn 離 a 近 還是將 n 當為 m 的 fn 離 a 近 (主要使用了 gl)
結果路線為 b 的 fn 的 fn 直到a
迷宮尋路(A星尋路演算法)
題目 假設我們有乙個7 5大小的迷宮,如下圖所示,綠色格仔表示起點,紅色的格仔表示終點,中間的3個深灰色格仔表示障礙物。請找到一條從起點到終點最短的路徑。解題思路 需要引入兩個集合和乙個公式,如下 具體步驟 把起點放入openlist 檢查openlist中是否有值,如果沒有則無法到達終點,結束尋路...
python尋路 A 尋路演算法 python實現
coding utf 8 import math import cv2 as cv class point object def init self,position,parent self.position position self.parent parent self.f 0 self.g 0...
A 尋路演算法
問題 由於遊戲中尋路出了個小問題 玩家尋路到乙個死角後在那邊不停的來回跑,就是無法越過障礙物,就研究了下a 尋路演算法以解決這個問題 研究了幾天,自己寫了個demo這裡給出總結 原理 a 演算法給出的是權值最優的路徑而不是最短路徑 權值有f g h來表示 啟發式函式如下 f p g p h p h值...