Giả sử rằng có một người muốn đi từ điểm A tới điểm B. Giả định rằng một bức tường ngăn cách hai điểm. Điều này được minh họa bằng hình dưới
đây, với màu xanh lá cây là một điểm khởi đầu A, và màu đỏ là kết thúc điểm B và hình chữ nhật màu xanh là bức tường ở giữa (hình 3.2).
Hình 3.2
Ở đây chúng tôi đã phân chia khu vực tìm kiếm thành 1 lưới ô vuông như hình vẽ để đơn giản hóa khu vực tìm kiếm, đây là bước đầu tiên.
Phương pháp này đặc biệt làm giảm diện tích để tìm kiếm một mảng hai chiều đơn giản. Mỗi mục trong mảng đó đại diện cho một trong các hình vuông trên khu vực tìm kiếm, và tình trạng của nó được ghi lại như di chuyển hoặc đứng yên. Đường đi được tìm thấy khi xuất hiện các ô vuông liên tiếp đi từ A đến B.
Các ô vuông trên đường đi gọi là các “nút”. Các nút có thể được đặt ở bất cứ đâu trên khu vực tìm kiếm.
a. Bắt đầu tìm kiếm
Khi chúng ta đã đơn giản hóa khu vực tìm kiếm và quản lý được các “nút”, bước tiếp theo cần làm là tìm kiếm đường đi ngắn nhất từ A đến B, bắt đầu từ A, kiểm tra các hình vuông liền kề và tìm kiếm cho đến khi tìm thấy B.
- Bắt đầu từ A, sau đó thêm vào một danh sách mở các hình vuông liền kề A. Về cơ bản đây là danh sách các ô vuông cần kiểm tra để tìm ra đường đi đến B.
- Tất cả các hình vuông có thể truy cập hoặc di chuyển giáp với A, hình 3.1 hoặc các điểm không thuận lợi, thêm chúng vào danh sách mở. A là mốc quan trọng để theo dõi đường đi đến B.
- Chọn 1 điểm vuông trong danh sách mở làm điểm bắt đầu tiếp theo và đưa vào “danh sách đóng” khi F là nhỏ nhất.
Hình dưới đây minh họa cho công việc trên.
Hình 3.3
Chìa khóa xác định hình vuông để tìm ra con đường ngắn nhất là phương trình sau đây:
FGH Trong đó:
+ G là chi phí di chuyển để di chuyển từ A đến điểm khởi đầu cho một hình vuông trên khu vực tìm kiếm.
+ H là chi phí ước tính để di chuyển, từ đó đưa ra điểm vuông trên khu vực tìm kiếm đến đích cuối cùng. Chúng ta thực sự không biết khoảng cách thực tế cho đến khi tìm thấy con đường đi đến B.
Con đường được tìm thấy khi đi qua nhiều danh sách mở và hình vuông được chọn khi F là nhỏ nhất.
Trong ví dụ này, ta quy ước G=10 với di chuyển ngang, dọc và G=14 với di chuyển chéo (ta sử dụng 10 và 14 bởi vì khoảng cách thực tế để di chuyển theo đường chéo là căn bậc hai của 2, hay khoảng 1,414 lần chi phí di chuyển theo chiều ngang hoặc theo chiều dọc).
H có thể được tính bằng nhiều cách. Ở đây chúng tôi chọn phương pháp Manhattan. Với phương pháp này có thể tính được tổng số hình vuông di chuyển theo chiều ngang, dọc để đến đích mà không tính đến các chướng ngại vật, sau đó nhân tổng đó với 10.
Hình 3.4
Tiếp tục tìm kiếm
Để tiếp tục tìm kiếm chúng ta chọn ra hình vuông có F nhỏ nhất trong danh sách mở. So với hình vuông đã chọn, ta làm như sau:
- Đưa hình vuông được chọn từ danh sách mở vào danh sách đóng. - Kiểm tra tất cả các ô vuông kề bỏ qua những hình vuông có trong danh sách đóng hoặc không di chuyển (bức tường hình 3.2). Thêm hình vuông vào danh sách mở nếu như nó chưa có trong danh sách mở.
- Nếu một hình vuông liền kề đã được vào danh sách mở, kiểm tra G cho hình vuông đó là thấp hơn. Nếu không, không làm bất cứ điều gì. Mặt khác,
nếu chi phí G của các đường dẫn mới là thấp hơn, thay đổi các vuông kề bên vuông lựa chọn. Cuối cùng, tính toán lại cả F và G điểm của hình vuông đó.
Các bước trên được minh họa bằng hình vẽ dưới đây:
Hình 3.5
Hình 3.7
Cuối cùng ta tìm ra được đường đi từ A→B theo thuật toán A* như hình 3.8.
Hình 3.8
b. Tóm lược thuật toán A*
Từ giải thích chi tiết bằng ví dụ trên ta tóm lược lại được phương pháp A* như sau:
- Lặp lại như sau:
+ Chọn hình vuông F chi phí thấp nhất trong danh sách mở. + Chuyển nó vào danh sách đóng.
- Đối với mỗi ô vuông 8 cạnh vuông này.
- Nếu nó không di chuyển hoặc nếu nó nằm trong danh sách đóng cửa, bỏ qua nó. Nếu không làm như sau:
+ Nếu nó không có trong danh sách mở, thêm nó vào danh sách mở… Làm cho hiện tại khu vực tìm kiếm chính của hình vuông này bản ghi F, G, H và chi phí của nó.
+ Nếu đó là trong danh sách đã được mở, kiểm tra xem đường dẫn này để mà vuông là tốt hơn, bằng cách sử dụng G chi phí như là thước đo... Một G thấp hơn chi phí có nghĩa rằng đây là một con đường tốt hơn. Nếu vậy, thay đổi các vuông chính của khu vực tìm kiếm vào vuông hiện tại và tính toán lại các G và điểm F của khu vực tìm kiếm.
- Dừng khi:
+ Thêm các mục tiêu vuông vào danh sách đóng cửa, trong đó đường dẫn trường hợp đã được tìm thấy.
+ Không tìm thấy những vuông mục tiêu và danh sách mở trống. Trong trường hợp này, không có đường dẫn.