A*算法(簡介)
曼哈頓距離
曼哈頓距離又稱馬氏距離(Manhattan distance),還見到過更加形象的,叫出租車距離的。具見上圖黃線,應該就能明白。
計算距離最簡單的方法是曼哈頓距離。假設,先考慮二維情況,只有兩個樂隊 x 和 y,用戶A的評價為(x1,y1),用戶B的評價為(x2,y2),那麽,它們之間的曼哈頓距離為
A*算法總結(Summary of the A* Method)
Ok ,現在你已經看完了整個的介紹,現在我們把所有步驟放在一起:
1. 把起點加入 open list 。
2. 重復如下過程:
a. 遍歷 open list ,查找 F 值最小的節點,把它作為當前要處理的節點。
b. 把這個節點移到 close list 。
c. 對當前方格的 8 個相鄰方格的每一個方格?
◆ 如果它是不可抵達的或者它在 close list 中,忽略它。否則,做如下操作。
◆ 如果它不在 open list 中,把它加入 open list ,並且把當前方格設置為它的父親,記錄該方格的 F , G 和 H 值。
◆ 如果它已經在 open list 中,檢查這條路徑 ( 即經由當前方格到達它那裏 ) 是否更好,用 G 值作參考。更小的 G 值表示這是更好的路徑。如果是這樣,把它的父親設置為當前方格,並重新計算它的 G 和 F 值。如果你的 open list 是按 F 值排序的話,改變後你可能需要重新排序。
d. 停止,當你
◆ 把終點加入到了 open list 中,此時路徑已經找到了,或者
◆ 查找終點失敗,並且 open list 是空的,此時沒有路徑。
3. 保存路徑。從終點開始,每個方格沿著父節點移動直至起點,這就是你的路徑。
參考資料:
http://blog.csdn.net/hitwhylz/article/details/23089415
A*算法(簡介)