เส้นทางการค้นหาอัลกอริทึมนั้นมีอะไรบ้าง [ปิด]


48

ฉันต้องการอ่านอัลกอริธึมในการค้นหาเส้นทาง มีสีรองพื้นหรือวัสดุหรือแบบฝึกหัดใด ๆ บนอินเทอร์เน็ตที่จะเป็นการเริ่มต้นที่ดีสำหรับฉัน


คำตอบ:


33

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

ฉันจะเริ่มต้นด้วยการอ่านวิธีการที่เป็นที่รู้จักมากขึ้นเช่น A * การค้นหาอัลกอริทึมของ Dijkstra ความลึกและการค้นหาความกว้างแรก มีข้อมูลมากมายเกี่ยวกับอินเทอร์เน็ตในแต่ละสิ่งเหล่านี้ ( http://en.wikipedia.org/wiki/Pathfinding )

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

เมื่อพูดถึงการชี้ทาง A * เป็นตั๋วทองคำที่ทุกคนใช้ แน่นอนคุณควรรู้ว่ามันทำงานอย่างไร ( http://en.wikipedia.org/wiki/A*_search_algorithm )

นี่คือตัวอย่างที่ดีของ A * เนื่องจากมันใช้กับเกม RTS ซึ่งต้องคำนึงถึงเอนทิตีที่มีขนาดแตกต่างกัน: http://aigamedev.com/open/tutorials/clearance-based-pathfinding/

โชคดี!


2
+1 เล็กน้อยสำหรับโปรแกรมเมอร์ที่ต้องเรียนรู้ที่จะปรับใช้โซลูชันที่รู้จัก นี่คือสิ่งที่ผู้พัฒนาเกมจะไม่เข้าใจ
วิศวกร

22

อัลกอริธึม Pathfinding นั้นเป็นปัญหาการค้นหากราฟที่แก้อัลกอริทึม

http://en.wikipedia.org/wiki/Pathfinding#Algorithms

เป็นที่รู้จักกันดีว่าเป็นอัลกอริทึมของ Djikstra: http://en.wikipedia.org/wiki/Dijkstra's_algorithm

และอัลกอริธึมการค้นหา A * ที่แตกต่าง: http://en.wikipedia.org/wiki/A*


2
ลิงก์สุดท้ายใช้งานไม่ได้เนื่องจาก * ไม่เห็นเป็นส่วนหนึ่งของมัน: en.wikipedia.org/wiki/A%2A
Hendrik Brummermann

fixx0r3d ทั้งสองลิงก์
tenpn

อัลกอริธึมการค้นหากราฟอย่างง่ายเป็นเพียงข้อมูลเบื้องต้นสำหรับการค้นหาเส้นทาง
martinkunev

13

นี่เป็นแหล่งข้อมูลเริ่มต้นที่ดีที่จะตรวจสอบทุกแง่มุมของการค้นหาเส้นทางในวิธีการย่อยที่ง่ายมาก

หมายเหตุของ Amit เกี่ยวกับการค้นหาเส้นทาง

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


1
+1 สำหรับ Amit ฉันเรียนรู้ A * จากเว็บไซต์ของเขาเมื่อ 10 ปีก่อน
tenpn

ภาพประกอบยอดเยี่ยมเช่นกัน คุณภาพสูง.
ลิง

5

Pathfinding เป็นปัญหาที่แก้ไขได้ ... ตามที่กล่าวไว้ในเกือบทุกคำตอบที่นี่การเปลี่ยนแปลงของ A * จะเป็นสิ่งที่คุณใช้

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

ฉันไม่มีการอ้างอิงที่เฉพาะเจาะจง แต่การสำรวจAIGameDevจะให้ความคิดทุกอย่างแก่คุณเกี่ยวกับสิ่งที่อยู่ข้างนอก

เพียงจำไว้ว่าตัวแทนแต่ละคนมีข้อดีและข้อเสีย มันไม่ได้เกี่ยวกับการหา 'ดีที่สุด' มันเป็นเรื่องของการหาคนที่เป็นแบบที่ดีที่สุดสำหรับการเล่นเกมของคุณ


5

มีรายการที่ดีใน Wikipedia: Pathfinding

เท่าที่ฉันรู้ A * และ D * เป็นที่นิยมอย่างมาก


+1 สำหรับการกล่าวถึงพลวัต A * รู้ดีว่าเป็น D *
David Young

4

มีหลายเส้นทางในการค้นหาอัลกอริธึมที่นั่น

หนึ่งในสิ่งที่ได้รับความนิยมมากที่สุดน่าจะเป็น A * ( A-Star ) มันเป็นอัลกอริทึมที่มีประโยชน์มากหากคุณมีฟังก์ชั่นการวิเคราะห์พฤติกรรมที่สามารถให้ค่าใช้จ่ายโดยประมาณในการบรรลุเป้าหมาย (ตัวอย่างเช่นระยะทางที่มองเห็นถึงเป้าหมาย) A * มีประโยชน์มากในการค้นหาเส้นทางที่สั้นที่สุดจากจุดเริ่มต้นไปยังจุดสิ้นสุด

นอกเหนือจากนั้นยังมี อัลกอริทึมของ Dijkstraซึ่งมีประโยชน์มากในการค้นหารายการที่ใกล้ที่สุดจากหลายรายการ เช่น. หากคุณต้องการทราบว่าตัวเสริมพลัง (หรือคล้ายกัน) ตัวไหนใกล้เคียงกับตัวละครในเกมของคุณ

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


พุทโธ่. ในขณะที่ฉันกำลังพิมพ์สิ่งนี้คำตอบเดียวกันนั้นได้รับประมาณพันล้านครั้ง ขออภัย :)
bummzack

เพิ่งสังเกตเห็นว่าหนังสือที่กล่าวถึงนี้ยังอยู่ใน Google-Books (แม้ว่าจะไม่สมบูรณ์) อ่านได้ที่นี่: books.google.co.th/books?id=gDLpyWtFacYC
bummzack



2

นี่ไม่ใช่ไพรเมอร์มากนัก แต่เราได้พูดถึงอัลกอริธึมกราฟอย่างกว้างขวางในคลาสอัลกอริทึมของเราเมื่อฤดูใบไม้ร่วงปี 2009 เราใช้หนังสือเล่มนี้

รู้เบื้องต้นเกี่ยวกับอัลกอริทึมรุ่นที่สามโดย Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest และ Clifford Stein

http://mitpress.mit.edu/algorithms/

และมันยังมาพร้อมกับการบรรยาย youtube จากคลาส MIT

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/

บทที่ 17, 18 และ 19 จัดการกับเส้นทางที่สั้นที่สุด


2

ดู [อัลกอริทึมการค้นหากราฟและต้นไม้] ใน Wikipedia 1 1พวกเขาเป็นเพียงรูปแบบของการค้นหาสเปซพื้นที่คุณต้องผ่านสิ่งเหล่านี้และค้นหาว่าพวกเขาแตกต่างกันอย่างไร

นอกจากนี้ยังมีการประสานการทำงานร่วมกันซึ่งเป็นหนึ่งในอัลกอริทึมที่กล่าวถึงก่อนหน้านี้ทำวิธีที่น่าสนใจ


+1 เอกสารเกี่ยวกับ Collaborative Diffusion นั้นค่อนข้างน่าสนใจ
วิศวกร

1
ฉันคิดว่าลิงก์เสีย บางทีนี่อาจเป็นสิ่งที่ถูกต้อง: scalablegamedesign.cs.colorado.edu/gamewiki/index.php/…
pek

-2

อันนี้ดูน่าสนใจ:

http://www.codeproject.com/Articles/455 ฉันสงสัยว่ามันดีกว่า A * หรือไม่


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

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

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