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()