Là khoảng cách Manhattan đơn điệu khi được sử dụng như chức năng heuristic?


25

Tôi có một bản đồ dựa trên hình vuông. Chỉ cho phép di chuyển ngang và dọc (không có đường chéo). Chi phí di chuyển luôn là 1.

Tôi đang thực hiện thuật toán A * trên bản đồ đó, sử dụng khoảng cách Manhattan làm khoảng cách heuristic. Đây có phải là heuristic phù hợp? Tôi có thể tránh kiểm tra g(node)đối với các nút trong bộ ĐÓNG không?

Chỉnh sửa: Bằng cách nhất quán tôi có nghĩa là đơn điệu.


1
Nếu chi phí di chuyển của bạn là đồng nhất trên mỗi ô, bạn có thể thay thế A * bằng Tìm kiếm Điểm nhảy
Nick Caplinger

Này, thật tuyệt!
Emiliano

Câu trả lời:


10

Để thực sự trả lời câu hỏi của bạn: khoảng cách manhatten là nhất quán khi bạn bị hạn chế di chuyển theo chiều dọc / chiều dọc theo lưới không có trọng số (điều này có thể dễ dàng hiển thị theo định nghĩa trên wikipedia) . Vì vậy, có, trong trường hợp của bạn, bạn có thể tránh kiểm tra lại các nút trong tập đóng.

Tuy nhiên, một khi bạn cho phép di chuyển theo đường chéo hoặc bất kỳ góc nào, khoảng cách manhatten sẽ không thể chấp nhận được vì nó đánh giá quá cao chi phí đường chéo, điều này nhất thiết có nghĩa là nó không nhất quán.


Vâng, đây chính xác là loại câu trả lời tôi đang tìm kiếm. Sẽ thật tuyệt nếu biết điều gì sẽ xảy ra nếu hàm heuristic là h(x) = min(manhattan(p1), manhattan(p2))(tức là p1 hoặc p2 là điểm kết thúc tốt và tôi muốn đạt đến điểm gần nhất). Đây có h(x)còn là đơn điệu?
Emiliano

1
@happy_emi: Có, nếu h(x, p1)h(x, p2)nhất quán, thì min(h(x,p1), h(x,p2))cũng sẽ nhất quán. Điều này rất dễ thể hiện từ định nghĩa trên wikipedia (chúng ta sẽ cần chỉ ra rằng min(h(x, p1), h(x, p2)) <= distance(x,y) + min(h(y, p1), h(y, p2))đối với tất cả các nút xycó cạnh giữa chúng. Bây giờ giả sử đó h(x, p1)là mức tối thiểu; bạn có thể chỉ ra rằng đó chắc chắn <=là phía bên phải, sử dụng thực tế là cả hai heuristic đều nhất quán?)
BlueRaja - Danny Pflughoeft

31

Đúng, khoảng cách Manhattan giữa hai điểm luôn giống nhau, giống như khoảng cách thông thường giữa chúng. Bạn có thể nghĩ khoảng cách Manhattan là các thành phần X và Y của một đường chạy giữa hai điểm.

Hình ảnh này ( từ Wikipedia ) minh họa điều này tốt:

Khoảng cách Manhattan

Đường màu xanh là khoảng cách thực tế.

Các màu xanh , đỏvàng đều đại diện cho cùng một khoảng cách Manhattan (12 đơn vị). Cho dù bạn kết hợp các chuyển động lênphải từ điểm dưới cùng bên trái đến góc dưới bên phải, bạn sẽ có cùng khoảng cách Manhattan.


2
Câu trả lời tuyệt vời: ngắn gọn, ngọt ngào, chính xác và với một bức tranh đẹp.
Tom 'Blue' Piddock

1
Câu trả lời này gần, nhưng không chính xác. Hình ảnh này không cho thấy khoảng cách Manhattan là nhất quán (trên thực tế, nếu bạn coi đường màu xanh lá cây là khoảng cách, thì nó không nhất quán!) , Và lý do rằng anh ta không cần phải kiểm tra lại các nút vì "khoảng cách Manhattan giữa hai điểm luôn luôn giống nhau " không giữ (tuyên bố cũng đúng h(x) = 1000, rõ ràng là không nhất quán) . Anh ta có thể tránh kiểm tra lại các nút, nhưng chỉ vì khoảng cách Manhatten là phù hợp, mà câu trả lời này không hiển thị.
BlueRaja - Daniel Pflughoeft

2
Tôi tin theo định nghĩa bạn liên kết, khoảng cách Manhattan là nhất quán. Khoảng cách đường màu xanh lá cây sẽ được sử dụng một heuristic khác. Các đường Đỏ, Xanh lam và Vàng cho thấy khoảng cách giữa hai nút vẫn như nhau (khi sử dụng cùng một heuristic). Di chuyển gần hơn làm giảm heuristic và di chuyển xa hơn làm tăng heuristic. Điều này đáp ứng yêu cầu đơn điệu của OP. Khi biểu đồ được xây dựng, với một nút tại mỗi "giao lộ", khoảng cách Manhattan là nhất quán. Nếu đó là một kịch bản khác (như cho phép di chuyển chéo), heuristic sẽ là xấu.
MichaelHouse

2
Tôi đã nói rằng Manhatten Khoảng cách là phù hợp, nhưng không phải vì những lý do bạn đề cập. Câu trả lời của bạn không thể hiện sự nhất quán, cũng như lập luận của bạn trong các bình luận. "Heuristic nhất quán / đơn điệu" có một định nghĩa chính xác (được đưa ra trong liên kết trên của tôi) , không giống như một chức năng đơn điệu mà bạn dường như đang nhầm lẫn nó. Nói rằng "di chuyển gần hơn làm giảm heuristic và di chuyển xa hơn làm tăng heuristic" là không đủ để cho thấy nó nhất quán, ví dụ. 2*manhattenthỏa mãn điều đó, nhưng không nhất quán
BlueRaja - Daniel Pflughoeft

3
Tôi không biết tại sao bạn nói không chính xác , bạn dường như khẳng định câu trả lời này không đầy đủ . Bằng chứng trong câu trả lời của bạn có vẻ yếu như sau: "khoảng cách manhatten là phù hợp ...", sau đó bạn tiếp tục nhắc lại các thông số kỹ thuật ban đầu của câu hỏi, theo cách nó sẽ không được chấp nhận nếu kịch bản khác . Tôi không cảm thấy như thể câu trả lời đảm bảo một bằng chứng toán học đầy đủ. Nếu bạn cảm thấy câu hỏi này đòi hỏi điều đó, thì vui lòng đưa nó vào câu trả lời của bạn và tôi sẽ bỏ phiếu. Cảm ơn những lời chỉ trích mang tính xây dựng.
MichaelHouse

6

Để mở rộng câu trả lời của Byte56, tôi muốn chỉ ra rằng, trong bộ dữ liệu cụ thể của bạn, sử dụng Khoảng cách Manhattan làm chức năng heuristic của bạn sẽ thực sự luôn là một heuristic hoàn hảo theo nghĩa là nó sẽ luôn trả về chi phí đường dẫn thực tế (giả sử là có không có gì "chặn" các đường dẫn).

Bạn cũng cần lưu ý rằng tất cả các nút theo đúng hướng (theo chiều dọc hoặc theo chiều dọc) sẽ mang lại khoảng cách mong đợi như nhau (vì có nhiều đường dẫn ngắn bằng nhau đến mục tiêu). Bạn nên lưu ý rằng hàng đợi ưu tiên của bạn (bộ mở) nên, trong trường hợp có mức độ ưu tiên bị ràng buộc, hãy loại bỏ nút được thêm mới nhất trước (LIFO - Lần cuối ra mắt trước). Bằng cách làm như vậy, bạn sẽ chỉ kiểm tra các nút sẽ kết thúc trong đường dẫn tối ưu . Nếu bạn kiểm tra các nút phù hợp như nhau theo cách thức của FIFO (First In First Out), bạn sẽ kiểm tra hiệu quả tất cả các nút là một phần của đường dẫn tốt nhất. Vấn đề này phát sinh vì có nhiều đường dẫn tốt như nhau đến nút mục tiêu.


"(giả sử không có gì chặn đường đi)" - đó là một giả định khá lớn. Nếu không có gì chặn đường dẫn, thì không cần phải bắt đầu thuật toán tìm đường!
BlueRaja - Daniel Pflughoeft

@ BlueRaja-DannyPflughoeft: Đó là sự thật, đó chỉ là một ý nghĩ xuất hiện khi nhìn vào hình ảnh của Byte56. Phần còn lại là đúng dù sao.
Thorkil Holm-Jacobsen

4

Tôi không chắc ý của bạn là "luôn luôn" nhất quán. Là khoảng cách Manhattan trên một lưới cố định độc lập với đường dẫn? Vâng, như câu trả lời của Byte56 đã nói.

Tuy nhiên, ví dụ, khoảng cách Manhattan không phải là bất biến dưới các phép quay. Ví dụ, khoảng cách Manhattan ( L1-Norm ) giữa điểm gốc và điểm (10,10)|10-0| + |10-0| = 20. Tuy nhiên, nếu bạn xoay tọa độ 45 độ (vì vậy bây giờ điểm cố định của bạn nằm dọc theo một trong các hướng của lưới), bây giờ bạn sẽ thấy điểm tương tự hiện tại (10sqrt(2),0), do đó, có khoảng cách Manhattan với điểm gốc 10sqrt(2)~14.14.


+1 để chỉ ra điều này; OTOH, khoảng cách Manhattan bất biến dưới các góc quay 90 độ, đây thực sự là những thứ duy nhất có thể được tạo ra "nhất quán" trên một lưới rời rạc.
Steven Stadnicki

1
Bắt tốt, mặc dù ông đã đề cập rằng chỉ cho phép chuyển động ngang và dọc.
Thorkil Holm-Jacobsen

1
Câu hỏi ban đầu là về sự nhất quán như trong đơn điệu.
Emiliano
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.