อัลกอริทึมการค้นหาเส้นทางที่ทันสมัยสำหรับการเปลี่ยนกราฟ (D *, D * -Lite, LPA *, ฯลฯ ) แตกต่างกันอย่างไร


96

อัลกอริธึมการค้นพบเส้นทางจำนวนมากได้รับการพัฒนาในช่วงไม่กี่ปีที่ผ่านมาซึ่งสามารถคำนวณเส้นทางที่ดีที่สุดในการตอบสนองต่อการเปลี่ยนแปลงของกราฟได้เร็วกว่า A * พวกมันคืออะไรและแตกต่างกันอย่างไร? พวกเขาอยู่ในสถานการณ์ที่แตกต่างกันหรือไม่


นี่คือสิ่งที่ฉันได้ค้นพบ:

ฉันไม่แน่ใจว่าสิ่งใดที่นำไปใช้กับปัญหาเฉพาะของฉัน - ฉันจะอ่านพวกเขาทั้งหมดหากจำเป็น แต่มันจะช่วยฉันได้มากถ้ามีคนสามารถเขียนบทสรุป


ปัญหาเฉพาะของฉัน: ฉันมีตารางที่มีจุดเริ่มต้นเสร็จและผนังบางส่วน ปัจจุบันฉันใช้ A * เพื่อค้นหาเส้นทางที่ดีที่สุดตั้งแต่ต้นจนจบ

ภาพที่ 2

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

แม้ว่าฉันไม่จำเป็นต้องมองหาการเปลี่ยนแปลง A * - อาจเป็นอัลกอริทึมที่แยกจากกันโดยสิ้นเชิง


3
คุณดูที่ D * หรือไม่? มันเป็นอัลกอริธึมที่เพิ่มขึ้นและถ้าฉันจำได้ถูกต้องควรจัดการกับสถานการณ์อย่างนี้ ฉันเคยเห็นหุ่นยนต์ที่ใช้สำหรับหาเส้นทางที่มีคนเดินสุ่มในสภาพแวดล้อม
Juho

7
@Kaveh: ทำไมไม่ถามถึงภาพรวมของขั้นตอนวิธีการค้นหาเส้นทางแบบไดนามิก "ระดับการวิจัย" Field-D * น้อยกว่า 5 ปีและ LEARCH น้อยกว่า 3 ..
BlueRaja - Danny Pflughoeft

7
ฉันไม่แน่ใจว่าทำไมนี่ไม่ใช่คำถามที่เหมาะสมสำหรับฟอรัมนี้ นี้ไม่ได้เป็นหัวข้อที่มีการตัดสินและเก่า
Suresh Venkat

5
@ BlueRaja-DannyPflughoeft ฉันเองก็คิดว่านี่เป็นคำถามระดับดี ฉันจะเพิ่มคำตอบตามความคิดเห็นของฉันและขยายออกไปเล็กน้อย
Juho

4
@ BlueRaja-DannyPflughoeft มีการเชื่อมโยงกับ Reddit
U2EF1

คำตอบ:


77

ดังนั้นฉันอ่านผ่านกระดาษและนี่คือสิ่งที่ฉันเปล่งประกาย ถ้ามีใครมีความรู้มากขึ้นในเรื่องของโปรดถูกต้องฉันหากฉันผิด(หรือเพิ่มคำตอบของคุณเองและผมจะยอมรับมันแทน!)

ลิงค์ไปยังกระดาษแต่ละเรื่องสามารถพบได้ในคำถามโพสต์ข้างต้น

  • คำนวณใหม่อย่างง่าย
    • D * (aka Dynamic A * ) (1994): ในการเริ่มต้น D * จะทำงานคล้ายกับ A * มากค้นหาเส้นทางที่ดีที่สุดตั้งแต่ต้นจนจบอย่างรวดเร็ว อย่างไรก็ตามในขณะที่หน่วยเคลื่อนที่ตั้งแต่ต้นจนจบหากกราฟเปลี่ยนไป D * สามารถคำนวณเส้นทางที่ดีที่สุดจากตำแหน่งของหน่วยนั้นไปยังจุดสิ้นสุดได้อย่างรวดเร็วมากเร็วกว่าการวิ่ง A * จากตำแหน่งของหน่วยนั้นอีกครั้ง อย่างไรก็ตาม D * มีชื่อเสียงในด้านความซับซ้อนอย่างยิ่งและได้รับการล้าสมัยโดย D * -Lite ที่ง่ายกว่ามาก
    • โฟกัส D * (1995): การปรับปรุง D * เพื่อให้เร็วขึ้น / "เรียลไทม์มากขึ้น" ฉันไม่สามารถเปรียบเทียบการเปรียบเทียบกับ D * - Lite ได้ แต่เนื่องจากนี่เก่ากว่าและ D * - Lite ได้รับการพูดถึงมากขึ้นฉันถือว่า D * - Lite นั้นดีกว่า
    • DynamicSWSF-FP (1996): จัดเก็บระยะทางจากทุกโหนดถึง Finish-node มีการตั้งค่าเริ่มต้นขนาดใหญ่เพื่อคำนวณระยะทางทั้งหมด หลังจากเปลี่ยนแปลงกราฟแล้วจะสามารถอัปเดตเฉพาะโหนดที่ระยะทางเปลี่ยนไปเท่านั้น ไม่เกี่ยวข้องกับทั้ง A * และ D * มีประโยชน์เมื่อคุณต้องการค้นหาระยะทางจากหลาย ๆ โหนดจนจบหลังจากการเปลี่ยนแปลงแต่ละครั้ง มิฉะนั้น LPA * หรือ D * -Lite จะมีประโยชน์มากกว่า
    • LPA * / ที่เพิ่มขึ้น * (2001): LPA * (การวางแผนตลอดชีวิต *)ยังเป็นที่รู้จักเพิ่มขึ้น A * (และบางครั้งทำให้เกิดความสับสนขณะที่ "LPA" แม้ว่ามันจะมีความสัมพันธ์กับขั้นตอนวิธีการอื่น ๆ ที่มีชื่อ พ.ร.บ. คุ้มครองแรงงานไม่ได้)เป็น การรวมกันของ DynamicSWSF-FP และ A * ในการวิ่งครั้งแรกมันก็เหมือนกับ A * อย่างไรก็ตามหลังจากเปลี่ยนกราฟเล็กน้อยการค้นหาที่ตามมาจากคู่เริ่มต้น / สิ้นสุดเดียวกันสามารถใช้ข้อมูลจากการรันครั้งก่อนเพื่อลดจำนวนโหนดที่ต้องตรวจสอบอย่างมากเมื่อเทียบกับ A * นี่เป็นปัญหาของฉันอย่างแน่นอนดังนั้นดูเหมือน LPA * จะเหมาะที่สุดของฉัน LPA * แตกต่างจาก D * ซึ่งจะพบเส้นทางที่ดีที่สุดจากจุดเริ่มต้นเดียวกันไปจนถึงเส้นชัยเดียวกันเสมอ มันไม่ได้ใช้เมื่อจุดเริ่มต้นกำลังเคลื่อนที่(เช่นหน่วยเดินไปตามเส้นทางที่ดีที่สุดเริ่มต้น) อย่างไรก็ตาม ...
    • D * -Lite (2002): อัลกอริทึมนี้ใช้ LPA * เพื่อเลียนแบบ D *; นั่นคือมันใช้ LPA * เพื่อค้นหาพา ธ ที่ดีที่สุดสำหรับหน่วยในขณะที่มันเคลื่อนที่ไปตามพา ธ ที่ดีที่สุดเริ่มต้นและการเปลี่ยนแปลงของกราฟ D * -Lite นั้นถือว่าง่ายกว่า D * มากและเนื่องจากมันรันเร็วอย่างน้อยเท่ากับ D * มันจึงล้าสมัย D * อย่างสมบูรณ์ ดังนั้นจึงไม่มีเหตุผลใดที่จะใช้ D *; ใช้ D * -Lite แทน
  • การเคลื่อนไหวทุกมุม
    • Field D * (2007): ตัวแปรของ D * -Lite ซึ่งไม่ จำกัด การเคลื่อนไหวของกริด นั่นคือเส้นทางที่ดีที่สุดสามารถให้หน่วยเคลื่อนที่ตามมุมใด ๆ ไม่ใช่แค่องศา 45- (หรือ 90-) ระหว่างจุดตาราง ถูกใช้โดย NASA เพื่อค้นหาเส้นทางสำหรับยานสำรวจดาวอังคาร
    • Theta * (2007): ชุดตัวอักษร A * ที่ให้เส้นทางที่ดีกว่า (สั้นกว่า) มากกว่าฟิลด์ D * อย่างไรก็ตามเนื่องจากเป็นพื้นฐานของ A * แทนที่จะเป็น D * -Lite จึงไม่มีความสามารถในการทำซ้ำอย่างรวดเร็วที่ Field D * ทำ ดูเพิ่มเติม
    • Incremental Phi * (2009): ที่สุดของสองโลก เวอร์ชันของ Theta * ที่เพิ่มขึ้น(aka อนุญาตให้ทำการสแกนซ้ำอย่างรวดเร็ว)
  • การย้ายคะแนนเป้าหมาย
    • GAA * (2008): GAA * (Generalized Adaptive A *)เป็นตัวแปรของ A * ที่จัดการจุดเป้าหมายเคลื่อนที่ เป็นลักษณะทั่วไปของอัลกอริทึมก่อนหน้านี้ที่เรียกว่า "Moving Target Adaptive A *"
    • GRFA * (2010): GFRA * (Generalized Fringe-Retrieving A *)ปรากฏขึ้น (?) เพื่อเป็นลักษณะทั่วไปของ GAA * ไปยังกราฟโดยพลการ(เช่นไม่ จำกัด เพียง 2D)โดยใช้เทคนิคจากอัลกอริทึมอื่นที่เรียกว่า FRA *
    • MTD * -Lite (2010): MTD * -Lite (การย้ายเป้าหมาย D * -Lite)คือ "ส่วนขยายของ D * Lite ที่ใช้หลักการที่อยู่เบื้องหลัง Generalized Fringe-Retrieving A *" เพื่อทำการค้นหาเป้าหมายที่เคลื่อนไหวอย่างรวดเร็ว
    • Tree-AA * (2011): (???) ดูเหมือนจะเป็นอัลกอริทึมสำหรับการค้นหาภูมิประเทศที่ไม่รู้จัก แต่ขึ้นอยู่กับ Adaptive A * เช่นเดียวกับอัลกอริธึมอื่น ๆ ในส่วนนี้ดังนั้นฉันจึงวางมันไว้ที่นี่ ไม่แน่ใจว่าเปรียบเทียบกับคนอื่น ๆ ในส่วนนี้ได้อย่างไร
  • จาน / ย่อยที่ดีที่สุด
    • ทุกที่ทุกเวลา * D (2005): นี่คือ"ทุกที่ทุกเวลา"แตกต่างจาก D * -Lite ทำโดยการรวม D * -Lite ด้วยวิธีที่เรียกว่าทุกที่ทุกเวลาซ่อม A * อัลกอริทึม "ทุกเวลา" เป็นสิ่งที่สามารถทำงานภายใต้ข้อ จำกัด ของเวลา - มันจะค้นหาเส้นทางที่ไม่ดีอย่างรวดเร็วเริ่มต้นด้วยแล้วปรับปรุงเส้นทางนั้นยิ่งมีเวลามากขึ้น
    • HPA * (2004): HPA * (การค้นหาเส้นทางแบบลำดับชั้น A *) ใช้สำหรับการค้นหาเส้นทางจำนวนหน่วยบนกราฟขนาดใหญ่เช่นในวิดีโอเกมRTS (กลยุทธ์แบบเรียลไทม์) พวกเขาทั้งหมดจะมีสถานที่เริ่มต้นที่แตกต่างกันและสถานที่สิ้นสุดที่แตกต่างกัน HPA * แบ่งกราฟออกเป็นลำดับชั้นเพื่อค้นหาเส้นทาง"ใกล้เหมาะสมที่สุด"สำหรับหน่วยทั้งหมดเหล่านี้ได้เร็วกว่าการใช้ A * ในแต่ละรายการ ดูสิ่งนี้ด้วย
    • PRA * (2005): จากสิ่งที่ฉันเข้าใจ PRA * (การปรับแต่งบางส่วน A *)แก้ปัญหาเช่นเดียวกับ HPA * แต่แตกต่างกัน พวกเขาทั้งสองมี"ลักษณะการทำงานที่คล้ายกัน"
    • HAA * (2008): HAA * (Hierarchical Annotated A *)เป็นลักษณะทั่วไปของ HPA * ที่อนุญาตการข้ามผ่านของบางหน่วยในบางภูมิประเทศ (เช่นเส้นทางเล็ก ๆ ที่บางหน่วยสามารถเดินผ่านได้ หรือหลุมที่หน่วยการบินเท่านั้นที่สามารถข้ามได้เป็นต้น)
  • อื่น ๆ / ไม่ทราบ
    • LPA (1997): LPA (อัลกอริธึมการค้นหาเส้นทางแบบไม่ต้องห่วง)ดูเหมือนจะเป็นขั้นตอนวิธีการกำหนดเส้นทางเท่านั้นที่เกี่ยวข้องกับปัญหาเล็กน้อยที่อัลกอริทึมอื่น ๆ ที่นี่แก้ไข ฉันพูดถึงเพียงเพราะบทความนี้มีการอ้างอิง (และไม่ถูกต้อง) ที่สร้างความสับสนในหลายสถานที่บนอินเทอร์เน็ตเป็นกระดาษที่แนะนำ LPA * ซึ่งไม่ใช่
    • LEARCH (2009): LEARCH เป็นการผสมผสานระหว่างอัลกอริธึมการเรียนรู้ของเครื่องจักรซึ่งใช้ในการสอนหุ่นยนต์ถึงวิธีการค้นหาเส้นทางที่เหมาะสมที่สุดด้วยตนเอง ผู้เขียนแนะนำให้รวม LEARCH กับ Field D * เพื่อผลลัพธ์ที่ดีกว่า
    • BDDD * (2009): ??? ฉันไม่สามารถเข้าถึงกระดาษ
    • SetA * (2002): ??? เห็นได้ชัดว่านี่คือตัวแปรของ A * ที่ค้นหาในรูปแบบ "การตัดสินใจแบบไบนารี่ไดอะแกรม" (BDD) ของกราฟ? พวกเขาอ้างว่ามันทำงาน"หลายคำสั่งของขนาดเร็วกว่า A *"ในบางกรณี อย่างไรก็ตามถ้าฉันเข้าใจอย่างถูกต้องกรณีเหล่านี้คือเมื่อแต่ละโหนดบนกราฟมีขอบมากมาย?

จากทั้งหมดนี้ปรากฏว่าLPA *เหมาะสมที่สุดสำหรับปัญหาของฉัน


อืม .. ฉันยังพบบทความนี้โดย @lhriosซึ่งเปรียบเทียบอัลกอริทึมบางอย่าง
mg007

ฉันรู้ว่านี่เก่า แต่ฉันคิดว่ามันควรค่าแก่การสังเกตเห็นข้อบกพร่องเล็ก ๆ น้อย ๆ ในคำอธิบาย Field D * ของคุณ ปกติ D * ไม่ได้ถูก จำกัด ให้เป็น "กริด" แต่ถูก จำกัด ให้กราฟแยก ประเด็นที่กระดาษทำคือเพื่อให้ A *, D * ทำงาน ฯลฯ คุณต้องแยกพื้นที่ว่างอย่างต่อเนื่องเป็นชิ้น ๆ ซึ่ง จำกัด มุมที่คุณสามารถเคลื่อนที่ได้ ฟิลด์ D * กำจัดข้อ จำกัด นั้นและอนุญาตให้คุณปฏิบัติต่อสถานะผู้สืบทอดในแบบต่อเนื่องแทนที่จะเป็นแบบแยก (มากกว่าหรือน้อยกว่านั้นมีการใช้เล่ห์เหลี่ยม) มันใช้กริด 2 มิติเป็นตัวอย่าง D * / A * และอื่น ๆ นั้นไม่ได้ จำกัด อยู่กับกริด
LinearZoetrope

ฉันควรจะพูดถึงว่า Field D * นั้น จำกัด อยู่ที่ตาราง แต่กระดาษก็ระบุว่าพวกเขาใช้งานได้ในเวอร์ชัน 3D นี่คือสาเหตุของการแก้ไขที่ใช้ ยังคงเห็นได้ว่า A * และ D * ทำงานบนกราฟที่มีจำนวนผู้สืบทอดโดยพลการ Field D * เป็นเพียงการปรับปรุงสำหรับสถานการณ์ที่ D * ใช้การวางแผนแบบอิงกริด
LinearZoetrope

ความแตกต่างที่สำคัญระหว่าง Field D * และ Theta * / Incremental Phi * คือ Field D * สามารถมีน้ำหนักที่ไม่ซ้ำกันสำหรับแต่ละตารางในขณะที่ Theta * และ Phi ที่เพิ่มขึ้น * ถูก จำกัด ให้มีน้ำหนักเท่ากันสำหรับสี่เหลี่ยมทั้งหมดที่สามารถเข้าชมได้ ดังนั้นพีพีที่เพิ่มขึ้นจึงไม่เหนือกว่าฟิลด์ D *
HelloGoodbye

1
@Jsor: นี่คือ 3D Field รุ่น D *: 3D Field D - JPL Robotics
HelloGoodbye

16

มีข้อแม้ขนาดใหญ่เมื่อใช้ D *, D * -Lite หรืออัลกอริธึมที่เพิ่มขึ้นใด ๆ ในหมวดหมู่นี้ (และเป็นที่น่าสังเกตว่าคำเตือนนี้ไม่ค่อยได้กล่าวถึงในวรรณคดี) อัลกอริทึมประเภทนี้ใช้การค้นหาแบบย้อนกลับ นั่นคือพวกเขาคำนวณค่าใช้จ่ายภายนอกจากโหนดเป้าหมายเช่นระลอกกระจายออกไปด้านนอก เมื่อค่าใช้จ่ายของการเปลี่ยนแปลงขอบ (เช่นคุณเพิ่มหรือลบกำแพงในตัวอย่างของคุณ) พวกเขาทั้งหมดมีกลยุทธ์ที่มีประสิทธิภาพมากมายสำหรับการอัปเดตชุดย่อยของโหนดสำรวจ (aka 'เยี่ยมชม') ที่ได้รับผลกระทบจากการเปลี่ยนแปลง

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

เมื่อข้อมูลค่าใช้จ่ายที่เปลี่ยนแปลงอยู่ใกล้กับขอบเขตของส่วนขยายการค้นหา (ภูมิภาค 'เข้าเยี่ยมชม') จะต้องเปลี่ยนเส้นทางบางเส้นทางและการปรับปรุงแบบเพิ่มหน่วยจะรวดเร็ว ตัวอย่างที่เกี่ยวข้องคือหุ่นยนต์เคลื่อนที่ที่มีเซ็นเซอร์ติดอยู่กับร่างกาย เซ็นเซอร์มองเห็นโลกใกล้กับหุ่นยนต์เท่านั้นดังนั้นการเปลี่ยนแปลงจึงอยู่ในภูมิภาคนี้ ภูมิภาคนี้เป็นจุดเริ่มต้นของการค้นหาไม่ใช่เป้าหมายดังนั้นทุกอย่างทำงานได้ดีและอัลกอริทึมมีประสิทธิภาพมากในการปรับปรุงเส้นทางที่เหมาะสมที่สุดเพื่อแก้ไขการเปลี่ยนแปลง

เมื่อข้อมูลค่าใช้จ่ายที่เปลี่ยนแปลงอยู่ใกล้กับเป้าหมายของการค้นหา (หรือสถานการณ์ของคุณเห็นตำแหน่งการเปลี่ยนแปลงเป้าหมายไม่ใช่เพียงแค่จุดเริ่มต้น) อัลกอริทึมเหล่านี้จะประสบกับการชะลอตัวของภัยพิบัติ ในสถานการณ์สมมตินี้ข้อมูลที่บันทึกไว้เกือบทั้งหมดต้องได้รับการอัปเดตเนื่องจากภูมิภาคที่เปลี่ยนแปลงอยู่ใกล้กับเป้าหมายที่เส้นทางที่คำนวณไว้ล่วงหน้าเกือบทั้งหมดผ่านการเปลี่ยนแปลงและต้องได้รับการประเมินอีกครั้ง เนื่องจากมีค่าใช้จ่ายในการจัดเก็บข้อมูลพิเศษและการคำนวณเพื่อทำการปรับปรุงเพิ่มเติมการประเมินซ้ำในระดับนี้ช้ากว่าการเริ่มต้นใหม่

เนื่องจากสถานการณ์ตัวอย่างของคุณปรากฏขึ้นเพื่อให้ผู้ใช้ย้ายกำแพงที่ต้องการคุณจะประสบปัญหานี้หากคุณใช้ D *, D * -Lite, LPA * เป็นต้นประสิทธิภาพเวลาของอัลกอริทึมของคุณจะแปรผันตามผู้ใช้ อินพุต โดยทั่วไป "นี่คือสิ่งที่ไม่ดี" ...

ตัวอย่างเช่นกลุ่มของ Alonzo Kelly ที่ CMU มีโปรแกรมที่ยอดเยี่ยมชื่อ PerceptOR ซึ่งพยายามรวมหุ่นยนต์ภาคพื้นดินกับหุ่นยนต์ทางอากาศข้อมูลการแบ่งปันการรับรู้ทั้งหมดแบบเรียลไทม์ เมื่อพวกเขาพยายามที่จะใช้เฮลิคอปเตอร์เพื่อแจ้งราคาต้นทุนแบบเรียลไทม์กับระบบการวางแผนของยานพาหนะภาคพื้นดินพวกเขาประสบกับปัญหานี้เพราะเฮลิคอปเตอร์สามารถบินไปข้างหน้าของยานพาหนะภาคพื้นดินได้เห็นการเปลี่ยนแปลงราคาใกล้เป้าหมาย อัลกอริทึมของพวกเขาลง พวกเขาอภิปรายการสังเกตที่น่าสนใจนี้หรือไม่? ไม่ได้ในที่สุดสิ่งที่ดีที่สุดที่พวกเขาทำได้คือให้เฮลิคอปเตอร์บินเหนือพื้นดินโดยตรงทำให้เป็นเสาเซ็นเซอร์ที่แพงที่สุดในโลก แน่นอนว่าฉันเป็นคนขี้โกง แต่มันเป็นปัญหาใหญ่ที่ไม่มีใครอยากพูดถึง - และพวกเขาควร

มีเพียงไม่กี่เอกสารที่พูดถึงเรื่องนี้ส่วนใหญ่โดยฉัน จากบทความที่เขียนโดยผู้เขียนหรือนักเรียนของผู้เขียนเอกสารต้นฉบับที่ระบุไว้ในคำถามนี้ฉันสามารถคิดได้ว่ามีเพียงหนึ่งเดียวที่กล่าวถึงปัญหานี้จริง ๆ Likhachev และ Ferguson ขอแนะนำให้พยายามประเมินขนาดของการอัปเดตที่จำเป็นและล้างข้อมูลที่เก็บไว้หากการอัปเดตที่เพิ่มขึ้นคาดว่าจะใช้เวลานานกว่าการเริ่มต้นใหม่ นี่เป็นวิธีแก้ปัญหาที่สมเหตุสมผล แต่มีคนอื่นด้วย ปริญญาเอกของฉันพูดถึงแนวทางที่คล้ายกันในปัญหาการคำนวณที่หลากหลายและอยู่เหนือขอบเขตของคำถามนี้อย่างไรก็ตามคุณอาจพบว่าการอ้างอิงมีประโยชน์เนื่องจากมีภาพรวมโดยละเอียดของอัลกอริธึมเหล่านี้และอื่น ๆ ดูhttp://db.acfr.usyd.edu.au/download.php/Allen2011_Thesis.pdf?id=2364 สำหรับรายละเอียด


1
ขอบคุณสำหรับการเพิ่มรายละเอียดเหล่านี้ :) ในแอปพลิเคชันของฉันกำแพงจะถูกเคลื่อนย้ายไปยังจุดเริ่มต้นบ่อยครั้งจนจบ ฉันใช้ BFS, A * และ LPA *; จริง ๆ แล้ว A * ช้ากว่า BFS เล็กน้อย(ช่องว่างของฉันมักจะถูก จำกัด ดังนั้น A * จะค้นหาโหนดน้อยกว่า BFS เพียงเล็กน้อยเท่านั้นในขณะที่ BFS ต้องการเพียงคิวเท่านั้น การใช้ LPA * โดยเฉลี่ยจะเร็วกว่าสองเท่า
BlueRaja - Danny Pflughoeft

9

แนวคิดหลักคือการใช้อัลกอริธึมที่เพิ่มขึ้นซึ่งสามารถใช้ประโยชน์จากการคำนวณก่อนหน้านี้เมื่อเส้นทางการคำนวณเริ่มต้นถูกบล็อก สิ่งนี้มักถูกตรวจสอบในบริบทของหุ่นยนต์การนำทางและการวางแผน

Koenig & Likkachev, การแทนที่อย่างรวดเร็วสำหรับการนำทางในภูมิประเทศที่ไม่รู้จัก, ธุรกรรม IEEE บนหุ่นยนต์, ฉบับที่ 21, ฉบับที่ 3, มิถุนายน 2005แนะนำ D * Lite ดูเหมือนปลอดภัยที่จะบอกว่า D * ล้าสมัยในแง่ที่ว่า D * Lite เร็วกว่า D * เสมอ นอกจากนี้ D * ยังมีความซับซ้อนเข้าใจยากวิเคราะห์และขยายได้ รูปที่ 9 ให้ pseudocode สำหรับ D * Lite และตารางที่ 1 แสดงผลการทดลองกับ D * Lite เทียบกับ BFS, A, Backward A *, Forward A *, DynamicSWSF-P และ D *

ฉันไม่รู้จักอัลกอริทึมที่ใหม่กว่าที่คุณแสดง (ทุกเวลา D *, ฟิลด์ D *, เรียนรู้) เมื่อเร็ว ๆ นี้ฉันเห็นหุ่นยนต์ที่ใช้ D * Lite สำหรับการวางแผนในสภาพแวดล้อมที่มีวอล์กเกอร์แบบสุ่มอยู่ภายใน ในแง่นี้ฉันไม่คิดว่า D * Lite ล้าสมัยไปแล้ว สำหรับปัญหาในทางปฏิบัติของคุณฉันคิดว่าไม่มีอันตรายใด ๆ ในการลองวิธีการทางวิศวกรรมแบบปกติ: ใช้วิธีการบางอย่างและถ้ามันไม่ตรงกับความต้องการของคุณลองสิ่งอื่น (ซับซ้อนกว่า)


4

ฉันต้องการเพิ่มบางสิ่งเกี่ยวกับต้นไม้ที่สุ่มสำรวจอย่างรวดเร็วหรือ RRT แนวคิดพื้นฐานมีการสนทนาที่ดีทั่วอินเทอร์เน็ต แต่อาจจะปลอดภัยที่จะเริ่มต้นด้วยลิงก์จากหน้า Wikipedia และด้วยเอกสารต้นฉบับของ Kuffner และ LaValle ในหัวข้อ

คุณสมบัติที่สำคัญที่สุดของ RRTs คือพวกเขาสามารถจัดการกับพื้นที่ที่มีคุณค่าจริงในมิติที่สูงมากโดยไม่สำลัก พวกเขาสามารถจัดการกับการเปลี่ยนแปลงไม่เหมาะสม แต่น่าจะเสร็จสมบูรณ์ (รับประกันว่าจะประสบความสำเร็จหากเป็นไปได้เมื่อเวลาในการคำนวณสิ้นสุดลง) และมีความสามารถในการจัดการกับเป้าหมายที่เคลื่อนไหว มีส่วนขยายบางส่วนที่ให้พวกเขาทำงานในพื้นที่ที่ไม่คงที่ซึ่งส่วนมากจะเป็นงาน RRT ของ Multipartite ที่ฉันได้ลิงก์ไว้ด้านล่าง


0

โครงสร้างข้อมูลที่เรียกว่าoracle ระยะทางจัดการกับปัญหาดังกล่าว อย่างไรก็ตามผลการวิจัยส่วนใหญ่ใช้สำหรับกราฟคงที่เท่านั้น

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

เส้นทางที่สั้นที่สุดที่แน่นอน:

Jittat Fakcharoenphol, Satish Rao: กราฟระนาบ, ขอบน้ำหนักลบ, เส้นทางที่สั้นที่สุดและใกล้กับเวลาเชิงเส้น เจคอมพิวเตอร์ Syst วิทย์ 72 (5): 868-889 (2549)

เส้นทางที่สั้นที่สุดโดยประมาณ:

Philip N. Klein, Sramam Subramanian: โครงการประมาณไดนามิกแบบไดนามิกสำหรับเส้นทางที่สั้นที่สุดในกราฟระนาบ อัลกอริทึม 22 (3): 235-249 (1998)

Ittai Abraham, Shiri Chechik, Cyril Gavoille: ออราเคิลระยะทางแบบไดนามิกโดยประมาณอย่างเต็มที่สำหรับกราฟระนาบผ่านฉลากระยะทางที่ต้องห้าม STOC 2012: 1199-1218


ขออภัย แต่ถ้าพวกเขาใช้งานได้เฉพาะกับกราฟแบบคงที่คุณหมายถึงอะไร "พวกเขาจัดการกับปัญหาดังกล่าว" ปัญหาถามเฉพาะเกี่ยวกับกราฟไม่คงที่
BlueRaja - Danny Pflughoeft

ให้ฉันเปลี่ยนความสำคัญ: ผลลัพธ์ส่วนใหญ่ใช้สำหรับกราฟแบบคงที่เท่านั้น มีโครงสร้างข้อมูลแบบไดนามิกอยู่บ้าง ตามด้วยรายการของโครงสร้างข้อมูลแบบไดนามิกเหล่านั้น
Christian Sommer

0

ในโรงเรียนผมขลุกอยู่กับการเพิ่มประสิทธิภาพอาณานิคมมด ในบางตำรามันถูกขนานนามว่าเป็นคำตอบสำหรับกราฟที่เปลี่ยนแปลงอย่างต่อเนื่อง, เครือข่ายเส้นทาง, ฯลฯ มันไม่ใช่วิธีการออกแบบเชิงวิศวกรรม แต่เป็นการดัดแปลงจากวิธีที่มดนำทางไปรอบ ๆ สิ่งกีดขวางโดยการแพร่กระจายฟีโรโมนเพื่อทำเครื่องหมายเส้นทางที่ดีและไม่ดี ฉันไม่รู้ว่ามันใช้ได้กับปัญหาของคุณหรือไม่ แต่ฉันคิดว่ามันเป็นมุมมองที่น่าสนใจ

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