Tôi cần trợ giúp để hiểu thuật toán Tam giác A * (TA *) được mô tả bởi Demyen trong bài viết Tìm đường dẫn dựa trên tam giác hiệu quả , trên trang 76-81.
Ông mô tả cách điều chỉnh thuật toán A * thông thường cho tam giác, để tìm kiếm các đường dẫn khác có thể tối ưu hơn, ngay cả sau khi nút cuối cùng được mở rộng / mở rộng. A * thông thường dừng khi nút cuối cùng được mở rộng, nhưng đây không phải luôn là đường dẫn tốt nhất khi được sử dụng trong biểu đồ tam giác. Đây chính xác là vấn đề tôi gặp phải.
Vấn đề được minh họa ở trang 78, Hình 5.4:
Tôi hiểu cách tính giá trị g và h được trình bày trong bài báo (trang 80).
Và tôi nghĩ điều kiện dừng tìm kiếm là:
if (currentNode.fCost > shortestDistanceFound)
{
// stop
break;
}
trong đó currentNode là nút tìm kiếm xuất hiện từ danh sách mở (hàng đợi ưu tiên), có điểm f thấp nhất. shortestDistanceFound là khoảng cách thực tế của con đường ngắn nhất được tìm thấy cho đến nay.
Nhưng làm cách nào để loại trừ các đường dẫn được tìm thấy trước đó khỏi các tìm kiếm trong tương lai? Bởi vì nếu tôi thực hiện tìm kiếm lại, rõ ràng nó sẽ tìm thấy cùng một đường dẫn. Tôi có thiết lập lại danh sách đã đóng không? Tôi cần sửa đổi một cái gì đó, nhưng tôi không biết tôi cần thay đổi cái gì. Bài báo thiếu mã giả, vì vậy sẽ rất hữu ích.