Tại sao tìm kiếm heuristic A * tối ưu ngay cả khi nó đánh giá thấp chi phí?


8

Một tìm kiếm * tìm ra giải pháp tối ưu cho các vấn đề miễn là heuristic có thể được chấp nhận, điều đó có nghĩa là nó không bao giờ đánh giá quá cao chi phí của đường dẫn đến từ bất kỳ nút nào (và nhất quán nhưng chúng ta hãy tập trung vào việc có thể chấp nhận được vào lúc này).

Nhưng tại sao nó luôn tìm ra giải pháp tối ưu nếu heuristic đánh giá thấp? Ví dụ, nếu nó đánh giá thấp một con đường không tối ưu hơn nhiều so với con đường mà nó đánh giá thấp con đường tối ưu, thì điều đó có tương đương với việc ước tính quá mức không?


2
Bạn đã làm nghiên cứu gì? Hầu hết các sách giáo khoa sẽ có một lời giải thích tại sao A * là chính xác, điều này sẽ trả lời câu hỏi của bạn.
DW

2
Xem xét các heuristic luôn luôn bằng 0 bất kể các nút đang được xem xét. Thuật toán này sẽ luôn đánh giá thấp đường dẫn không tối ưu hơn đường dẫn tối ưu. Bạn có thể chỉ ra rằng A*với heuristic này là tối ưu? Điều này có cung cấp cho bạn cái nhìn sâu sắc về lý do tại sao A*với một heuristic tốt hơn là tối ưu?
Eric Lippert

Câu trả lời:


19

A * duy trì hàng đợi ưu tiên của các tùy chọn mà nó đang xem xét, được sắp xếp theo mức độ tốt của chúng. Nó tiếp tục tìm kiếm cho đến khi tìm thấy một lộ trình đến mục tiêu tốt đến mức không có lựa chọn nào khác có thể làm cho nó tốt hơn. Làm thế nào tốt một sự thay thế có thể được dựa trên heuristic và chi phí thực tế được tìm thấy cho đến nay.

Nếu các heuristic đánh giá thấp, các tùy chọn khác sẽ trông tốt hơn so với thực tế. A * nghĩ rằng các tùy chọn khác đó có thể cải thiện tuyến đường, vì vậy nó sẽ kiểm tra chúng. Nếu heuristic chỉ đánh giá thấp một chút, có thể một số tuyến đường đó sẽ trở nên hữu ích. Mặt khác, nếu heuristic đánh giá quá cao, A * có thể nghĩ rằng các giải pháp thay thế cho tuyến đường đã có tất cả là khủng khiếp, vì vậy sẽ không bận tâm khi xem xét chúng. Nhưng các heuristic đánh giá quá cao để họ có thể tốt hơn nhiều so với họ có vẻ.

Ví dụ: giả sử bạn đang cố lái xe từ Chicago đến New York và heuristic của bạn là những gì bạn bè của bạn nghĩ về địa lý. Nếu người bạn đầu tiên của bạn nói: "Này, Boston gần với New York" (đánh giá thấp), thì bạn sẽ lãng phí thời gian để xem các tuyến đường qua Boston. Chẳng bao lâu, bạn sẽ nhận ra rằng bất kỳ tuyến đường hợp lý từ Chicago đến Boston đã được khá gần với New York trước khi đến Boston và đó thực sự sẽ qua Boston chỉ bổ sung thêm nhiều dặm. Vì vậy, bạn sẽ ngừng xem xét các tuyến đường qua Boston và bạn sẽ chuyển sang tìm tuyến đường tối ưu. Người bạn đánh giá thấp của bạn tiêu tốn của bạn một chút thời gian lập kế hoạch, nhưng cuối cùng, bạn đã tìm đúng lộ trình.

Giả sử rằng một người bạn khác nói, "Indiana là từ New York một triệu dặm!" Không nơi nào khác trên trái đất là từ New York hơn 13.000 dặm như vậy, nếu bạn nghe theo lời khuyên của người bạn theo nghĩa đen, bạn thậm chí sẽ không xem xét bất kỳ tuyến đường qua Indiana. Điều này làm cho bạn lái xe lâu hơn gần gấp đôi và khoảng cách hơn 50% . Giáo sư.


4

Đúng là nếu nó đánh giá thấp một con đường không tối ưu hơn là đánh giá thấp con đường tối ưu, thì nó sẽ khám phá những con đường đó trước khi khám phá con đường tối ưu. Điều quan trọng, và đây là điều mà sự chấp nhận đảm bảo, là trong khi nó đang khám phá những con đường không tối ưu đó, nó sẽ không tìm thấy mục tiêu và kết thúc tìm kiếm trước khi khám phá con đường tối ưu. Điều này là do khi nó đi xuống những đường dẫn không tối ưu đó, mặc dù lúc đầu chúng có vẻ tuyệt vời, chi phí / chiều dài của chúng sẽ bắt đầu cộng lại và đến một lúc nào đó, thuật toán sẽ quay trở lại để khám phá đường dẫn tối ưu. Nếu chúng ta được phép đánh giá quá cao chi phí cho mục tiêu và thực hiện theo con đường tối ưu, thì chúng ta thực sự có thể đi xuống con đường không tối ưu và tìm mục tiêu (chấm dứt tìm kiếm,


Chào mừng đến với trang web! Tôi hy vọng bạn tìm thấy nó hữu ích và dính xung quanh. Chuyến tham quan ngắn của chúng tôi cung cấp một số thông tin về cách sử dụng hiệu quả các trang web Stack Exchange.
David Richerby

2

Sự khác biệt quan trọng giữa A * và Tìm kiếm đầu tiên tốt nhất là A * kết hợp giá trị được cung cấp bởi hàm ước tính e với độ dài của đường dẫn (ngắn nhất hiện được biết) đến nút đang xem xét.

Giả sử đường dẫn tối ưu của bạn đến mục tiêu có độ dài k; thì ước tính cho trạng thái bắt đầu của bạn nhiều nhất làkvà cho Tôi-th nút dọc theo đường dẫn tối ưu, ước tính nhiều nhất k-Tôi. Điều này đưa ra một ràng buộc về việc thuật toán sẽ đi theo bất kỳ con đường giả nàop; ngay sau khi bạn đã thực hiện nhiều hơnk bước cùng p, tiền tố hiện đang được khám phá của đường dẫn tối ưu sẽ trông tốt hơn và p sẽ bị bỏ rơi

Về cơ bản, tìm kiếm A * nằm ở giữa Breadth-First (không xác định, được đảm bảo để tìm ra con đường ngắn nhất, nhưng chậm) và Best-First (được hướng dẫn bởi chức năng ước tính, có khả năng nhanh, nhưng rất phụ thuộc vào chất lượng của ước tính).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.