Phức tạp thuật toán

Một phần của tài liệu Chuyên đề thuật toán đồ thị trong lập trình căn bản (Trang 58 - 59)

Độ phức tạp thời gian của A* phụ thuộc vào đánh giá heuristic. Trong trường hợp xấu nhất, số nút được mở rộng theo hàm mũ của độ dài lời giải, nhưng nó sẽ là hàm đa thức khi hàm heuristic h thỏa mãn điều kiện sau:

trong đó là heuristic tối ưu, nghĩa là hàm cho kết quả là chi phí chính xác để đi từ tới đích. Nói cách khác, sai số của h không nên tăng nhanh hơn lôgarit của "heuristic hoàn hảo" - hàm trả về khoảng cách thực từ x tới đích (Russell và Norvig 2003, tr. 101).

Vấn đề sử dụng bộ nhớ của A* còn rắc rối hơn độ phức tạp thời gian. Trong trường hợp xấu nhất, A* phải ghi nhớ số lượng nút tăng theo hàm mũ. Một số biến thể của A* đã được phát triển để đối phó với hiện tượng này, một trong số đó là A* lặp sâu dần (iterative deepening A*), A* bộ nhớ giới hạn (memory-bounded A* - MA*) và A* bộ nhớ giới hạn đơn giản (simplified memory bounded A*).

Một thuật toán tìm kiếm có thông tin khác cũng có tính chất tối ưu và đầy đủ nếu đánh giá heuristic của nó là thu nạp được (admissible). Đó là tìm kiếm đệ quy theo lựa chọn tốt nhất (recursive best-first search - RBFS).

Tham khảo

• Hart, P. E.; Nilsson, N. J.; Raphael, B. (1968). “A Formal Basis for the Heuristic Determination of Minimum Cost Paths”. IEEE Transactions on Systems Science and Cybernetics SSC4 (2): pp. 100–107.

• Hart, P. E.; Nilsson, N. J.; Raphael, B. (1972). “Correction to "A Formal Basis for the Heuristic Determination of Minimum Cost Paths"”. SIGART Newsletter37: pp. 28–29.

• Nilsson, N. J. (1980). Principles of Artificial Intelligence. Palo Alto, California: Tioga Publishing Company. • Russell, S. J.; Norvig, P. (2003). Artificial Intelligence: A Modern Approach. tr. pp. 97–104.

• Amit's Thoughts on Path-Finding and A* [4]

• Sven Koenig's Demonstration of Lifelong Planning A* and A* [5]

• Tony Stentz's Papers on D* (Dynamic A*) Path-Finding [6]

• Remko Tronçon and Joost Vennekens's JSearch demo [7]: demonstrates various search algorithms, including A*. • Sune Trudslev's Path finding in C# article [8]

Chú thích

[1] http://web.archive.org/20000528203204/www.geocities.com/jheyesjones/astar.html [2] http://herbert.wikispaces.com/Pathfinder+A+Star

[3] http://www.policyalmanac.org/games/aStarTutorial.htm [4] http://theory.stanford.edu/~amitp/GameProgramming/ [5] http://idm-lab.org/applet.html

[6] http://www.frc.ri.cmu.edu/~axs/ [7] http://el-tramo.be/software/jsearchdemo/

[8] http://www.tanis.dk/wiki/index.php/Path_finding_in_C_sharp

Một phần của tài liệu Chuyên đề thuật toán đồ thị trong lập trình căn bản (Trang 58 - 59)