เป็นระยะทางแมนฮัตตันระยะทางเดียวเมื่อใช้เป็นฟังก์ชั่นแก้ปัญหาหรือไม่?


25

ฉันมีแผนที่รูปสี่เหลี่ยม อนุญาตให้มีการเคลื่อนไหวในแนวนอนและแนวตั้งเท่านั้น (ไม่มีเส้นทแยงมุม) ราคาการเคลื่อนไหวอยู่เสมอ 1

ฉันกำลังใช้อัลกอริทึม A * บนแผนที่นั้นโดยใช้ระยะทางแมนฮัตตันเป็นฮิวริสติกระยะทาง ฮิวริสติกนี้สอดคล้องกันหรือไม่? ฉันสามารถหลีกเลี่ยงการตรวจสอบg(node)กับโหนดที่อยู่ในชุดปิดได้หรือไม่

แก้ไข: โดยความสอดคล้องฉันหมายถึง monotonic


1
หากค่าการเคลื่อนที่ของคุณเท่ากันทุกไทล์คุณสามารถแทนที่ A * ด้วยการค้นหาจุดกระโดด
Nick Caplinger

เฮ้มันดีจัง!
Emiliano

คำตอบ:


10

ที่จริงการตอบคำถามของคุณ: ระยะทาง manhatten เป็นที่สอดคล้องกันเมื่อคุณกำลังบีบบังคับให้ย้ายแนวตั้ง / horizonally พร้อมตารางชั่ง(นี้สามารถแสดงให้เห็นได้อย่างง่ายดายโดยมีความหมายเกี่ยวกับวิกิพีเดีย) ใช่ในกรณีของคุณคุณสามารถหลีกเลี่ยงการตรวจสอบซ้ำโหนดในชุดปิด

อย่างไรก็ตามเมื่อคุณอนุญาตให้มีการเคลื่อนไหวในแนวทแยงหรือมุมใด ๆ ระยะทาง manhatten จะไม่สามารถยอมรับได้เพราะจะประเมินค่าใช้จ่ายในแนวทแยงซึ่งเกินความจำเป็นซึ่งหมายความว่ามันไม่สอดคล้องกัน


ใช่นี่เป็นคำตอบที่ฉันต้องการ มันจะเป็นการดีถ้ารู้ว่าจะเกิดอะไรขึ้นถ้าฟังก์ชันฮิวริสติกคือh(x) = min(manhattan(p1), manhattan(p2))(เช่น p1 หรือ p2 เป็นจุดสิ้นสุดที่ดีและฉันต้องการไปยังจุดที่ใกล้ที่สุด) นี่h(x)ยังคงเป็นเสียงเดียวหรือไม่
Emiliano

1
@happy_emi: ใช่ถ้าh(x, p1)และh(x, p2)มีความสอดคล้องกันก็min(h(x,p1), h(x,p2))จะสอดคล้องกัน นี่เป็นเรื่องง่ายที่จะแสดงจากคำจำกัดความของวิกิพีเดีย(เราจะต้องแสดงให้เห็นว่าmin(h(x, p1), h(x, p2)) <= distance(x,y) + min(h(y, p1), h(y, p2))สำหรับทุกโหนดxและyมีขอบระหว่างพวกเขาทีนี้สมมติว่าh(x, p1)มันน้อยที่สุดคุณสามารถแสดงให้เห็นว่ามันเป็น<=ด้านขวามือโดยใช้ข้อเท็จจริงที่ว่า การวิเคราะห์พฤติกรรมทั้งสองสอดคล้องกันหรือไม่)
BlueRaja - Danny Pflughoeft

31

ใช่ระยะทางแมนฮัตตันระหว่างจุดสองจุดจะเท่ากันเสมอเหมือนระยะห่างปกติระหว่างจุดทั้งสอง คุณสามารถนึกถึงระยะทางแมนฮัตตันว่าเป็นองค์ประกอบ X และ Y ของเส้นตรงที่วิ่งระหว่างสองจุด

ภาพนี้ ( จาก Wikipedia ) แสดงให้เห็นถึงสิ่งนี้:

ระยะทางแมนฮัตตัน

สีเขียวสายเป็นระยะทางจริง

เส้นสีน้ำเงิน , สีแดงและสีเหลืองล้วนแสดงถึงระยะทางแมนฮัตตันเดียวกัน (12 หน่วย) ว่าสิ่งที่รวมกันของการเคลื่อนไหวไม่ขึ้นและขวาคุณวาดจากจุดล่างซ้ายไปที่ด้านล่างขวาคุณจะได้รับระยะทางที่แมนฮัตตันเดียวกันทั้งหมด


2
คำตอบที่ดี: สั้นหวานตรงประเด็นและมีภาพสวย
Tom 'Blue' Piddock

1
คำตอบนี้ปิด แต่ไม่ถูกต้อง ภาพนี้ไม่แสดงว่าระยะทางแมนฮัตตันนั้นสอดคล้องกัน (อันที่จริงถ้าคุณพิจารณาว่าเส้นสีเขียวเป็นระยะทางนั้นไม่สอดคล้องกัน!)และเหตุผลที่ทำให้เขาไม่จำเป็นต้องตรวจสอบโหนดอีกครั้งเพราะ"ระยะห่างระหว่างแมนฮัตตันระหว่าง สองจุดเป็นแบบเดียวกันเสมอ"ไม่ได้ถือ(งบยังเป็นจริงของh(x) = 1000ซึ่งจะเห็นได้ชัดไม่สอดคล้อง) เขาสามารถหลีกเลี่ยงการตรวจสอบซ้ำโหนด แต่เพียงเพราะระยะทาง Manhatten มีความสอดคล้องซึ่งคำตอบนี้จะไม่แสดง
BlueRaja - Danny Pflughoeft

2
ฉันเชื่อตามนิยามที่คุณเชื่อมโยงระยะทางแมนฮัตตันนั้นสอดคล้อง ระยะทางของสายสีเขียวจะใช้การวิเคราะห์พฤติกรรมแบบต่างกัน เส้นสีแดงสีน้ำเงินและสีเหลืองแสดงให้เห็นว่าระยะห่างระหว่างสองโหนดยังคงเหมือนเดิม (เมื่อใช้ฮิวริสติกเดียวกัน) การขยับเข้ามาใกล้จะช่วยลดฮิวริสติกและการเคลื่อนที่ไกลออกไปจะเป็นการเพิ่มฮิวริสติก สิ่งนี้เป็นไปตามข้อกำหนดเรื่องเสียงโมโนของ OP เมื่อกราฟถูกสร้างขึ้นโดยมีโหนดที่ "จุดตัด" แต่ละจุดระยะทางแมนฮัตตันนั้นคงที่ หากเป็นสถานการณ์ที่แตกต่าง (เช่นอนุญาตให้มีการเคลื่อนไหวในแนวทแยง) ฮิวริสติกจะไม่ดี
MichaelHouse

2
ฉันพูดไปแล้วว่า Manhatten Distance นั้นสอดคล้องกัน แต่ไม่ใช่ด้วยเหตุผลที่คุณพูดถึง คำตอบของคุณไม่แสดงความสม่ำเสมอและไม่โต้แย้งในความคิดเห็น "ฮิวริสติกที่สอดคล้องกัน / โมโนโทน" มีคำจำกัดความที่แม่นยำ(ที่ระบุในลิงก์ด้านบนของฉัน)ซึ่งไม่เหมือนกับฟังก์ชันโมโนโทนที่คุณดูเหมือนจะสับสน การระบุว่า "การขยับเข้ามาใกล้จะช่วยลดฮิวริสติกและการเคลื่อนที่ออกไปอีกระยะจะเป็นการเพิ่มฮิวริสติก"ไม่เพียงพอที่จะแสดงว่ามันสอดคล้องกันเช่น 2*manhattenทำให้พอใจ แต่ไม่สอดคล้องกัน
BlueRaja - Danny Pflughoeft

3
ผมไม่ทราบว่าทำไมคุณบอกว่ามันไม่ถูกต้องคุณดูเหมือนจะยืนยันคำตอบนี้เป็นที่ไม่สมบูรณ์ หลักฐานในคำตอบของคุณดูเหมือนจะอ่อนแอ: "ระยะ manhatten นั้นสอดคล้องกัน ... " จากนั้นคุณจะต้องย้ำถึงข้อกำหนดดั้งเดิมของคำถามตามด้วยวิธีการที่จะยอมรับได้หากสถานการณ์แตกต่างกัน . ฉันไม่รู้สึกเหมือนคำตอบที่รับประกันการพิสูจน์ทางคณิตศาสตร์เต็มรูปแบบ หากคุณรู้สึกว่าคำถามนี้ต้องการสิ่งนั้นโปรดรวมไว้ในคำตอบของคุณและฉันจะโหวตให้ ขอบคุณสำหรับคำวิจารณ์ที่สร้างสรรค์
MichaelHouse

6

ในส่วนขยายของคำตอบ Byte56 ของผมอยากจะชี้ให้เห็นว่าในชุดข้อมูลเฉพาะของคุณโดยใช้แมนฮัตตันระยะทางเป็นฟังก์ชั่นการแก้ปัญหาของคุณจะเป็นจริงเสมอจะเป็นแก้ปัญหาที่สมบูรณ์แบบในแง่ที่ว่ามันจะกลับค่าใช้จ่ายเส้นทางจริง (สมมติว่ามี ไม่มีการ "ปิดกั้น" เส้นทาง)

คุณควรทราบด้วยว่าโหนดทั้งหมดในทิศทางที่ถูกต้อง (ไม่ว่าจะเป็นแบบแนวตั้งหรือแนวตั้ง) จะให้ระยะทางที่คาดหวังเท่ากัน คุณควรทราบว่าคิวลำดับความสำคัญของคุณ (ชุดเปิด) ควรจัดลำดับความสำคัญของคิวในกรณีที่มีลำดับความสำคัญที่เพิ่มเข้ามาล่าสุดโหนดแรก (LIFO - Last In First Out) โดยการทำเช่นนั้นคุณจะตรวจสอบโหนดที่จะสิ้นสุดในเส้นทางที่ดีที่สุดเท่านั้น หากคุณตรวจสอบโหนดที่เหมาะสมอย่างเท่าเทียมกันในลักษณะ FIFO (เข้าก่อนออกก่อน) คุณจะตรวจสอบโหนดทั้งหมดอย่างมีประสิทธิภาพซึ่งเป็นส่วนหนึ่งของเส้นทางที่ดีที่สุด ปัญหานี้เกิดขึ้นเนื่องจากมีเส้นทางที่ดีหลายเส้นทางไปยังโหนดเป้าหมาย


"(สมมติว่าไม่มีสิ่งใดขวางเส้นทาง)" - เป็นข้อสันนิษฐานที่ใหญ่มาก หากไม่มีสิ่งใดขวางเส้นทางไม่จำเป็นต้องใช้อัลกอริทึมการค้นหาพา ธ เพื่อเริ่มต้น!
BlueRaja - Danny Pflughoeft

@ BlueRaja-DannyPflughoeft: นั่นเป็นความจริงมันเป็นเพียงความคิดที่โผล่ขึ้นมาเมื่อมองดูภาพของ Byte56 ส่วนที่เหลือเป็นความจริงอย่างไรก็ตาม
Thorkil Holm-Jacobsen

4

ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "เสมอ" ที่สอดคล้องกัน ระยะทางแมนฮัตตันบนกริดคงที่เป็นอิสระจากเส้นทางที่ได้หรือไม่? ใช่ตามคำตอบของ Byte56

อย่างไรก็ตามตัวอย่างเช่นระยะทางแมนฮัตตันไม่คงที่ภายใต้การหมุน เช่นระยะทางที่แมนฮัตตัน ( L1-บรรทัดฐาน ) ระหว่างที่มาและจุดที่เป็น(10,10) |10-0| + |10-0| = 20แต่ถ้าคุณหมุนพิกัดของคุณโดย 45 องศา (ดังนั้นตอนนี้จุดโกหกคงที่ของคุณพร้อมเป็นหนึ่งในเส้นทางของตาราง) คุณจะพบว่าตอนนี้จุดเดียวกันคือตอนนี้จึงมีระยะทางที่แมนฮัตตันที่มาของ(10sqrt(2),0)10sqrt(2)~14.14


+1 สำหรับการชี้สิ่งนี้; OTOH ระยะทางของแมนฮัตตันนั้นไม่เปลี่ยนแปลงภายใต้การหมุน 90 องศาซึ่งจริงๆแล้วเป็นสนามเดียวที่สามารถสร้าง 'สม่ำเสมอ' บนกริดแบบแยก
Steven Stadnicki

1
จับดีแม้ว่าเขาจะพูดถึงว่าอนุญาตให้มีการเคลื่อนไหวในแนวนอนและแนวตั้งเท่านั้น
Thorkil Holm-Jacobsen

1
คำถามเดิมเป็นเรื่องเกี่ยวกับความสอดคล้องเช่นเดียวกับในเดียว
Emiliano
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.