Thuật toán A*:
Cấu trúc dữ liệu:
- P: tập các trạng thái chờ quyết định và được tổ chức ở dạng stack
- Q: tập hợp các trạng thái đã phát triển
- Biến found
- Hàm father
Thuật toán:
Input data: Đồ thị ẩn G(u0, R), hàm giá k(u,v): U x U R+
Hàm h: U R+
1. P {u0}; Q Ø; found false;
2. While (P ≠ Ø) and (not found) do
2.1. Loại trạng thái u ở đỉnh khỏi stack P và lưu nó vào Q:
Pop(P,u);
Add(u,Q);
2.2. If u ϵ T then found true else
if S(u) ≠ Ø then for v ϵ S(u) do
if v P Q ∉ ⋃ or (g(u) + k(u,v) < g(v)) then
2.2.1. g(v) g(u) + k(u,v);
2.2.2. f(v) g(v) + h(v);
2.2.3. father(v) u;
2.2.4. đưa v vào P theo trật tự tăng của hàm f rồi giảm của
hàm g