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


답변:


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.