Có một sự cảnh báo lớn khi sử dụng D *, D * -Lite hoặc bất kỳ thuật toán gia tăng nào trong danh mục này (và đáng chú ý là cảnh báo này hiếm khi được đề cập trong tài liệu). Các loại thuật toán sử dụng một tìm kiếm đảo ngược. Đó là, họ tính toán chi phí từ nút mục tiêu, giống như một gợn sóng lan ra bên ngoài. Khi chi phí của các cạnh thay đổi (ví dụ: bạn thêm hoặc xóa tường trong ví dụ của mình), tất cả chúng đều có các chiến lược hiệu quả khác nhau để chỉ cập nhật tập hợp con của các nút được khám phá (còn gọi là 'đã truy cập') bị ảnh hưởng bởi các thay đổi.
Nhắc nhở lớn là vị trí của những thay đổi này liên quan đến vị trí mục tiêu tạo ra sự khác biệt rất lớn đối với hiệu quả của các thuật toán. Tôi đã trình bày trong nhiều bài báo và luận điểm của mình rằng hiệu suất trong trường hợp xấu nhất của bất kỳ thuật toán gia tăng nào là tồi tệ hơn việc vứt bỏ tất cả thông tin và bắt đầu từ một thứ không tăng dần như A * cũ.
Khi thông tin chi phí thay đổi gần với chu vi của mặt trận tìm kiếm mở rộng (vùng 'đã truy cập'), một vài đường dẫn phải thay đổi và các cập nhật gia tăng nhanh chóng. Một ví dụ thích hợp là một robot di động với các cảm biến được gắn vào cơ thể của nó. Các cảm biến chỉ nhìn thấy thế giới gần robot, và do đó những thay đổi nằm ở khu vực này. Vùng này là điểm bắt đầu của tìm kiếm, không phải là mục tiêu và vì vậy mọi thứ đều hoạt động tốt và các thuật toán rất hiệu quả trong việc cập nhật đường dẫn tối ưu để điều chỉnh các thay đổi.
Khi thông tin chi phí thay đổi gần với mục tiêu tìm kiếm (hoặc kịch bản của bạn nhìn thấy các vị trí thay đổi mục tiêu, không chỉ là bắt đầu), các thuật toán này phải chịu sự chậm chạp thảm khốc. Trong kịch bản này, hầu hết tất cả các thông tin đã lưu cần được cập nhật, vì vùng thay đổi rất gần với mục tiêu mà hầu như tất cả các đường dẫn được tính toán trước đều đi qua các thay đổi và phải được đánh giá lại. Do chi phí lưu trữ thêm thông tin và tính toán để thực hiện cập nhật gia tăng, việc đánh giá lại trên thang đo này chậm hơn so với khởi đầu mới.
Vì kịch bản ví dụ của bạn xuất hiện để cho phép người dùng di chuyển bất kỳ bức tường nào họ muốn, bạn sẽ gặp phải vấn đề này nếu bạn sử dụng D *, D * -Lite, LPA *, v.v. Hiệu suất thời gian của thuật toán của bạn sẽ thay đổi, phụ thuộc vào người dùng đầu vào. Nói chung, "đây là một điều xấu" ...
Lấy ví dụ, nhóm của Alonzo Kelly tại CMU đã có một chương trình tuyệt vời có tên là PerceptOR, cố gắng kết hợp robot mặt đất với robot trên không, tất cả đều chia sẻ thông tin nhận thức trong thời gian thực. Khi họ cố gắng sử dụng một máy bay trực thăng để cung cấp cập nhật chi phí thời gian thực cho hệ thống kế hoạch của một phương tiện mặt đất, họ đã gặp phải vấn đề này vì máy bay trực thăng có thể bay phía trước phương tiện mặt đất, thấy chi phí thay đổi gần mục tiêu hơn và do đó làm chậm xuống thuật toán của họ. Họ đã thảo luận về quan sát thú vị này? Cuối cùng, điều tốt nhất họ quản lý là để chiếc trực thăng bay thẳng trên đầu của phương tiện mặt đất - biến nó thành cột cảm biến đắt nhất thế giới. Chắc chắn, tôi đang nhỏ mọn. Nhưng đó là một vấn đề lớn mà không ai muốn nói đến - và họ nên,
Chỉ có một số ít các bài báo thảo luận về điều này, chủ yếu là do tôi. Trong số các bài báo được viết bởi các tác giả hoặc sinh viên của các tác giả của các bài báo gốc được liệt kê trong câu hỏi này, tôi chỉ có thể nghĩ về một bài viết thực sự đề cập đến vấn đề này. Likhachev và Ferguson đề nghị cố gắng ước tính quy mô của các cập nhật cần thiết và xóa thông tin được lưu trữ nếu cập nhật gia tăng được ước tính sẽ mất nhiều thời gian hơn một khởi đầu mới. Đây là một cách giải quyết khá hợp lý, nhưng cũng có những người khác. Tiến sĩ của tôi khái quát một cách tiếp cận tương tự trên một loạt các vấn đề tính toán và đang vượt ra ngoài phạm vi của câu hỏi này, tuy nhiên bạn có thể thấy các tài liệu tham khảo hữu ích vì nó có cái nhìn tổng quan về hầu hết các thuật toán này và hơn thế nữa. Xem http://db.acfr.usyd.edu.au/doad.php/ ALLen2011_Tribution.pdf? Id = 364 để biết chi tiết.