Які алгоритми пошуку шляхів існують? [зачинено]


Відповіді:


34

Якщо ви шукаєте дослідження та дізнаєтесь про загальну перевірку маршрутів взагалі, я б точно запропонував вивчити більше, ніж один алгоритм. Ви хочете зрозуміти загальні поняття, але зможете застосувати їх до того, над чим ви працюєте. Більшість розробників ігор, які потребують будь-яких серйозних прослуховувань, закінчують написання власних власних алгоритмів, хоча на основі відомих рішень кожна гра є різною і матиме різні вимоги.

Я б почав з читання деяких більш відомих методів, таких як A *, Алгоритм Дейкстри, Глибина та Шіст-Перший. В Інтернеті є багато хорошої інформації про кожне з них. ( http://en.wikipedia.org/wiki/Pathfinding )

Читаючи їх, зверніть увагу на те, які переваги та недоліки мають кожен підхід, а також тип даних, якими може працювати алгоритм. Чи можна його застосувати до тривимірних контурів? Чи можна його змінити, щоб врахувати наш людський ШІ, який хоче уникати мін на карті?

Що стосується шляху пошуку, 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

Найбільш відомий алгоритм Джикстри: http://en.wikipedia.org/wiki/Dijkstra's_algorithm

та його варіант A алгоритм пошуку: http://en.wikipedia.org/wiki/A*


2
Останнє посилання розірвано, тому що * не розглядається як його частина: en.wikipedia.org/wiki/A%2A
Хендрік Бруммерманн

fixx0r3d обидва посилання
tenpn

Прості алгоритми пошуку графіків - це лише основи проходження маршруту.
мартінкунев

13

Це чудовий початковий ресурс, який розглядає всі аспекти пошуку шляху в дуже легкому для засвоєння підході.

Примітки Аміта про пошук шляху

... Pathfinding вирішує проблему пошуку хорошого шляху від вихідної точки до мети ― уникнення перешкод, уникнення ворогів та мінімізація витрат (палива, часу, відстані, обладнання, грошей тощо). Рух вирішує проблему проходження шляху і руху по ньому. Можна витратити свої зусилля лише на одне з них. В одному крайньому випадку, витончений дорожник у поєднанні з тривіальним алгоритмом руху ...


1
+1 для Amit. Я дізнався A * з його веб-сайту 10+ років тому.
tenpn

Чудові ілюстрації теж. Висока якість.
мавпа

5

Pathfinding є досить вирішеною проблемою ... як згадується майже у кожній відповіді тут, деяка зміна на A * буде тим, що ви використовуєте.

Велике завдання для мене - це те, як ви хочете представляти свій шлях . Використання сітки, коди шляху, навмеші, ієрархічні сітки або інші складні структури тощо.

Я не маю на увазі конкретних посилань, але вивчаючи AIGameDev дасть вам усілякі ідеї щодо того, що там є.

Просто пам’ятайте, що у кожного представництва є свої плюси і мінуси; справа не в пошуку «найкращого», а в пошуку того, який найкраще підходить для вашого ігрового процесу .



4

Існує кілька алгоритмів пошуку шляхів.

Один з найпопулярніших - це, мабуть, A * ( A-Star ). Це дуже корисний алгоритм, якщо у вас є евристична функція, яка може забезпечити ваші передбачувані витрати для досягнення мети (наприклад, відстань прямої огляду до цілі). * * Дуже корисно, щоб знайти найкоротший шлях від початку до кінцевої точки.

Крім цього, існує також алгоритм Діккстри, який дуже корисний для пошуку найближчого елемента з декількох елементів. Напр. якщо ви хочете дізнатися, яке джерело живлення (або подібне) найближче до вашого ігрового персонажа.

Існує декілька інших алгоритмів, але я думаю, що A * є на сьогодні найбільш популярним. Мат Бакленд має чудову главу про пошук шляху у своїй грі програмування AI за прикладом . Я настійно рекомендую вам отримати його копію. Інакше ви знайдете безліч інформації в Інтернеті, шукаючи "Зоряний пошук".


О Боже. Поки я набирав це, таку ж відповідь було дано приблизно в газільйон разів. Вибачте :)
bummzack

Щойно зауважив, що згадана книга також є в Google-книгах (хоча і не повною). Прочитайте його тут: books.google.com/books?id=gDLpyWtFacYC
bummzack



2

Це не багато грунтовки, але ми обговорили графічні алгоритми в нашому класі алгоритмів минулої осені 2009 року. Ми використовували цю книгу,

Вступ до алгоритмів, третє видання Томаса Х. Кормена, Чарльза Е. Лейерсона, Рональда Л. Рівеста та Кліффорда Штейна

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

Див. [Алгоритми пошуку графіків та дерев] у Вікіпедії 1 . Вони в основному є лише варіантами державного космічного пошуку. Вам просто потрібно пройти все це і знайти там, де вони відрізняються.

Існує також спільна дифузія , яка є одним із згаданих раніше алгоритмів, зробленим цікавим способом.


+1 Цей документ про спільну дифузію є досить цікавим.
Інженер

1
Я думаю, що ланка розірвана. Можливо, це правильний варіант: scalablegamedesign.cs.colorado.edu/gamewiki/index.php/…
pek

-2

Це виглядає цікаво:

http://www.codeproject.com/Articles/455 Цікаво, що це краще за A *?


Ласкаво просимо на сайт. Те, що ви дали, відоме як відповідь лише на посилання, яка не перешкоджає. Краще було б узагальнити якості методу у своїй відповіді. Тоді ви можете заперечити, чи краще це від простого A *, а не просто роздумувати над текстом.
Сет Беттін

Я бачу, що ваша відповідь на це питання є рівною чи меншою (що прикро). Я не маю на увазі вас виділяти, я просто передав вашу запис у черзі на огляд перших публікацій . Незважаючи на те, покращення вашої відповіді завжди вітається.
Сет Беттін

Я просто повторю те, що сказав Сет. Підсумуйте.
Сірий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.