Làm thế nào để một heuristic chấp nhận đảm bảo một giải pháp tối ưu?


16

Khi sử dụng A * (hoặc bất kỳ thuật toán tìm đường tốt nhất nào khác), chúng tôi nói rằng heuristic được sử dụng phải được chấp nhận , nghĩa là không bao giờ nên đánh giá quá cao độ dài (hoặc di chuyển của đường dẫn giải pháp thực tế).

Làm thế nào để một heuristic chấp nhận đảm bảo một giải pháp tối ưu? Tôi tốt nhất là tìm kiếm một lời giải thích trực quan.

Nếu bạn muốn bạn có thể giải thích bằng cách sử dụng heuristic khoảng cách Manhattan của câu đố 8.


2
@Ashwin Trực giác bởi vì khi thuật toán tìm thấy một đường dẫn có độ dài , nó đã thử mọi đường dẫn khác có thể có độ dài tối đa k . Đó là lý do tại sao chức năng heuristic của bạn phải không bao giờ đánh giá quá cao chi phí cho mục tiêu. Hãy thử nó bằng cách thực hiện một chức năng heuristic có thể đánh giá quá cao. kk
Pål GD

Câu trả lời:


7

Trong khi câu trả lời Anton được hoàn toàn hoàn hảo cho tôi cố gắng cung cấp một câu trả lời khác: là phương tiện có thể chấp nhận rằng heuristic không đánh giá quá cao các nỗ lực để đạt được mục tiêu, tức là cho tất cả n trong không gian trạng thái (trong câu đố 8, điều này có nghĩa là chỉ cho bất kỳ hoán vị nào của các ô và mục tiêu bạn hiện đang xem xét) trong đó h ( n ) là chi phí tối ưu để đạt được mục tiêu.h(n)h(n)nh(n)

Tôi nghĩ câu trả lời hợp lý nhất để xem tại sao cung cấp giải pháp tối ưu nếu h ( n ) là chấp nhận được becauase nó sắp xếp tất cả các nút trong MỞ trong thứ tự tăng dần của f ( n ) = g ( n ) + h ( n ) và cũng , bởi vì nó không dừng lại khi tạo mục tiêu mà khi mở rộng nó:Ah(n)f(n)=g(n)+h(n)

  1. Vì các nút được mở rộng theo thứ tự tăng dần của bạn biết rằng không có nút nào khác hứa hẹn hơn nút hiện tại. Hãy nhớ rằng: h ( n ) được chấp nhận để có f ( n ) thấp nhất có nghĩa là nó có cơ hội đạt được mục tiêu thông qua một con đường rẻ hơn mà các nút khác trong OPEN không có. Và điều này đúng trừ khi bạn có thể chứng minh điều ngược lại, tức là bằng cách mở rộng nút hiện tại.f(n)h(n)f(n)
  2. chỉ dừng lại khi nó tiến hành mở rộng nút mục tiêu (như được mở để dừng khi tạo nó), bạn chắc chắn (từ điểm đầu tiên ở trên) rằng không có nút nào khác dẫn qua đường dẫn rẻ hơn tới nó.A

Và đây là, về cơ bản, tất cả những gì bạn sẽ tìm thấy trong bằng chứng ban đầu của Nilsson et al.

Hi vọng điêu nay co ich,


3
Cảm ơn. Nó đã giúp đỡ. Bạn đã tham khảo một số bằng chứng của Nilsson et al. Đó là ai? Và tôi có thể tìm thấy bằng chứng ở đâu?
Ashwin

1
@Ashwin Xem cuốn sách " Nguyên tắc của trí tuệ nhân tạo " (khoảng trang 80) của Nils J. Nilsson (1982).
nbro

11

Nếu hàm heuristic không được chấp nhận, thì chúng ta có thể có ước tính lớn hơn chi phí đường dẫn thực tế từ một số nút đến một nút mục tiêu. Nếu ước tính chi phí đường dẫn cao hơn này nằm trên đường dẫn chi phí thấp nhất (mà chúng tôi đang tìm kiếm), thuật toán sẽ không khám phá nó và nó có thể tìm thấy đường dẫn khác (không phải chi phí thấp nhất) đến mục tiêu.

Nhìn vào ví dụ đơn giản này.

nhập mô tả hình ảnh ở đây

AGh(N)NGNc(N,Xi)NXiNi=1..mmlà số lượng lân cận của (nghĩa là một hàm trả về chi phí của cạnh giữa nút N và một trong các lân cận của nó).NN

Hãy để các heuristic là

  • h(B)= =3

  • h(C)= =4

Chẩn đoán này hoạt động là không thể chấp nhận được, bởi vì h ( C ) = 4 > c ( C , G ) = 2H

h(C)= =4>c(C,G)= =2

Một*MộtBGMộtBG4MộtCG3


Đồng ý. Nhưng làm thế nào để một heuristic được chấp nhận đảm bảo một giải pháp tối ưu?
Ashwin

Có thể xảy ra rằng - h (b) <h (c) với cả h (b) và h (c) đều được chấp nhận, nhưng thực tế_cost (b)> fact_cost (c) phải không? Vì vậy, b sẽ được chọn là con đường tiếp theo trong đó trong thực tế c sẽ đưa ra con đường tốt nhất.
Ashwin

Đối với nhận xét thứ nhất: các heuristic được chấp nhận đảm bảo tìm ra con đường ngắn nhất. Bản thân giải pháp là tối ưu nếu heuristic phù hợp .
Anton

Đối với nhận xét thứ 2: nếu heuristic được chấp nhận A-> B có thể được chọn cho nút tiếp theo để mở rộng, nhưng sau đó A * sẽ chọn A-> C chứ không phải A-> B-> G. Và cuối cùng, nó sẽ kết thúc với A-> C-> G.
Anton

1
Bởi vì A * hoạt động như thế này. Nó mở rộng nút với tổng khoảng cách tối thiểu đến nút đó + ước lượng heuristic từ nút đó. d (A, G) + h (G) = 4 + 0 = 4 và d (A, C) + h (C) = 1 + một cái gì đó <= 2 (vì nó được chấp nhận). Vì vậy, C có tổng tiền thấp hơn và A * sẽ chọn nó. Cách tương tự nó sẽ mở rộng G và tìm đường đi ít nhất.
Anton
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.