어떤 경로 찾기 알고리즘이 있습니까? [닫은]


답변:


33

일반적으로 길 찾기에 대해 연구하고 배우려면 하나 이상의 알고리즘을 배우는 것이 좋습니다. 전반적인 개념을 이해하고 있지만 현재 작업중인 모든 개념에 적용 할 수 있습니다. 알려진 길잡이에 기반을두고 있지만, 모든 길 찾기는 요구 사항이 다르지만 심각한 길 찾기를해야하는 대부분의 게임 개발자는 자신 만의 맞춤형 알고리즘을 작성하게됩니다.

A *, Dijkstra 's Algorithm, Depth 및 Breadth-First 검색과 같이 잘 알려진 몇 가지 방법을 읽어 보면서 시작하겠습니다. 인터넷에는 좋은 정보가 많이 있습니다. ( http://en.wikipedia.org/wiki/Pathfinding )

그것들을 읽는 동안 알고리즘이 작동 할 수있는 데이터 유형뿐만 아니라 각각의 접근법에 대한 단점과 단점이 무엇인지주의하십시오. 3 차원 경로에 적용 할 수 있습니까? 지도에서 지뢰를 피하려는 인간 AI를 설명하도록 수정할 수 있습니까?

길 찾기와 관련하여 A *는 모두가 사용하는 황금 티켓과 거의 같습니다. 작동 방식을 반드시 알아야합니다. ( http://en.wikipedia.org/wiki/A*_search_algorithm )

다음은 다른 크기의 엔티티를 고려해야하는 RTS 게임에 적용되는 A *의 좋은 예입니다. http://aigamedev.com/open/tutorials/clearance-based-pathfinding/

행운을 빕니다!


2
알려진 솔루션을 적응시키는 법을 배워야하는 프로그래머에 대해 +1. 이것은 많은 게임 개발자가 이해하지 못하는 것입니다.
엔지니어

22

경로 찾기 알고리즘은 기본적으로 그래프 검색 문제 해결 알고리즘입니다.

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
Amit +1 10 년 전 그의 웹 사이트에서 A *를 배웠습니다.
tenpn

훌륭한 삽화도 있습니다. 고품질.
monkey

5

길 찾기는 거의 모든 문제에서 언급했듯이 A *의 변형이 사용하는 것입니다.

나에게 가장 큰 도전은 당신의 을 어떻게 표현하고 싶은가 입니다. 그리드, 경로 노드, 내비 메시, 계층 그리드 또는 기타 복잡한 구조 등 사용

구체적인 참고 문헌은 없지만 AIGameDev 를 탐색 하면 거기에 무엇이 있는지에 대한 모든 종류의 아이디어가 제공됩니다.

각 표현에는 장단점이 있다는 것을 기억하십시오. '최고의 것'을 찾는 것이 아니라 게임 플레이에 가장 적합한 것을 찾는 것입니다 .



4

몇 가지 경로 찾기 알고리즘이 있습니다.

가장 인기있는 것 중 하나는 아마도 A * ( A-Star ) 일 것입니다. 목표에 도달하기위한 예상 비용을 제공 할 수있는 휴리스틱 함수가있는 경우 매우 유용한 알고리즘입니다 (예 : 목표까지의 가시 거리). A *는 시작점에서 끝점까지의 최단 경로를 찾는 데 매우 유용합니다.

그 외에도 Dijkstra의 알고리즘 도 있습니다. 이 알고리즘 은 여러 항목 중 가장 가까운 항목을 찾는 데 매우 유용합니다. 예 : 게임 캐릭터에 가장 가까운 파워 업 (또는 유사한)을 찾으려면.

몇 가지 다른 알고리즘이 있지만 A *가 가장 인기있는 알고리즘이라고 생각합니다. Mat Buckland는 Example by Book Programming Game AI 에서 Path-Finding에 대한 훌륭한 장을 가지고 있습니다. 나는 당신이 그것의 사본을 얻을 것을 강력히 권장합니다. 그렇지 않으면 "별 검색"을 검색하여 많은 정보를 온라인에서 찾을 수 있습니다.


어머. 내가 이것을 입력하는 동안 gazillion 시대에 대해 같은 대답이 주어졌습니다. 죄송합니다 :)
bummzack

언급 된 책은 Google 도서에도 있습니다 (완전하지는 않았지만). 여기에서 읽으십시오 : books.google.com/books?id=gDLpyWtFacYC
bummzack



2

이것은 입문서가 아니지만 2009 년 가을 알고리즘 클래스에서 그래프 알고리즘에 대해 광범위하게 논의했습니다.이 책을 사용했습니다.

알고리즘 소개, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest 및 Clifford Stein의 제 3 판

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

또한 MIT 수업에서 수강하는 YouTube 강의도 있습니다.

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의 [그래프 및 트리 검색 알고리즘]을 참조하십시오 . 그것들은 상태 공간 검색의 변형 일뿐입니다. 당신은이 모든 것들을 통과하여 그들이 다른 곳을 찾아야합니다.

Collaborative Diffusion 도 있는데 , 이는 이전에 언급 한 알고리즘 중 흥미로운 방식 중 하나입니다.


+1 Collaborative Diffusion에 관한 문서는 매우 흥미 롭습니다.
엔지니어

1
링크가 끊어진 것 같습니다. : 어쩌면이 올바른 하나입니다 scalablegamedesign.cs.colorado.edu/gamewiki/index.php/...
PEK는

-2

이것은 흥미있어 보인다 :

http://www.codeproject.com/Articles/455 A *보다 나은지 궁금합니다.


사이트에 오신 것을 환영합니다. 귀하가 제공 한 것을 링크 전용 답변이라고하며 권장하지 않습니다. 답변의 메소드 품질을 요약하는 것이 좋습니다. 그런 다음 텍스트에서 직접 숙고하기보다는 단순한 A *보다 나은지 논쟁 할 수 있습니다.
Seth Battin

이 질문에 대한 귀하의 답변이 다소 유감입니다 (불행한 것입니다). 나는 당신을 단념하려는 것이 아니며, 단지 첫 번째 게시물 검토 대기열에 항목을 전달했습니다 . 어쨌든 대답을 개선하는 것은 언제나 환영합니다.
Seth Battin

세스가 말한 것을 반복하겠습니다. 요약하다.
Gray
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.