1. 程式人生 > >A*演算法步驟

A*演算法步驟

步驟如下:

先設定兩個集合,open集,close集

1、將起始點加入open集(設定父親節點為空)

2、在open集中選著一個F值最小的節點作為當前節點

2.1 將其新增到close集,並從open集中移除!

2.2 如果為終點節點,那麼結束搜尋

2.3 處理當前節點的所有鄰接節點

如果不在open集中,那麼就將其新增到open集,(最好設定該節點的父節點為當前節點,以便確定路徑);

如果已經新增到open集中,重新計算G值,如果G值小於先前的G值,那麼就跟新此值(同時跟新父節點);

如果該節點不可通過或者已經被新增到close集,那麼不予處理;

3、如果open集不為空,那麼轉到步驟2繼續執行。

需要注意的是:

1、如果搜尋結束,當open集為空,可能獲得一條路徑,也可能搜尋失敗!

2、如果搜尋結束,如果open集不為空,那麼必定找到一條路徑

3、如果搜尋成功,對於close集中的每一個節點,可能屬於路徑上的一個節點,也可能不屬於路徑上的一個節點!

4、如果搜尋成功,如何確定這一條路徑:從最後一個節點起,根據節點的父親節點依次往前確定這條路徑!