Lý thuyết
A* (A-star) là thuật toán tìm đường đi ngắn nhất trong một đồ thị có trọng số dương, ví dụ như bản đồ, mê cung, hay lưới ô vuông (grid).
Nó là sự kết hợp giữa hai hướng tiếp cận:
-
Dijkstra (tìm đường ngắn nhất tuyệt đối)
-
Greedy Best-First Search (ưu tiên hướng đến đích nhanh hơn)
Công thức đánh giá: Mỗi node có giá trị: Trong đó:
- : Chi phí thực tế từ điểm bắt đầu → node hiện tại
- : Ước lượng chi phí từ node hiện tại → đích (Heuristic)
- : Tổng chi phí ước lượng (mục tiêu là tìm node có f nhỏ nhất)
Heuristic
-
Manhattan distance:
→ dùng khi chỉ được đi 4 hướng (trái, phải, lên, xuống)
-
Euclidean distance:
→ dùng khi được đi chéo
Nếu heuristic h tốt, A* sẽ rất nhanh và chính xác.
Xây dựng dự án
get_neighbors()
