1. 程式人生 > >A*算法(簡介)

A*算法(簡介)

應該 pen 簡單 出租車 close 移動 sum hat 排序

曼哈頓距離    

曼哈頓距離又稱馬氏距離(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*算法(簡介)