2013-06-11 2 views
0

노드 이웃을 찾는 방법은 무엇입니까? 특정 노드를 다른 노드의 이웃으로 만드는 것은 무엇입니까? 내가 루아Dijkstra의 알고리즘에서 이웃을 어떻게 찾습니까?

의 코드 A *와
+4

"특정 노드를 다른 노드의 이웃으로 만드는 이유는 무엇입니까?" 두 노드 사이의 가장자리. –

+0

@DanielFischer가 말한 내용은 더 자세한 설명을 위해 그래프/격자를 어떻게 표현하는지에 대한 예제를 제공합니다 (사각형 격자 인 경우 대각선 이동을 허용합니까) – catwell

+0

3 차원 환경이므로 시도 중입니다. 노드 블록으로 시작과 끝 사이의 최단 거리를 찾으십시오. – Nightlock32

답변

1

을 쓰고 있어요 그건 그렇고, 당신은 세 가지를 정의

  1. 주어진 노드와 사이에 다른
  2. 의 거리에 하나 개의 인접 노드에서 이동의 비용 목표는 주어진 노드

-

  • 노드에 인접한 노드 그 중 첫 번째는 같은 단순하거나 복잡한 당신이 원하는입니다 수 있습니다. 모든 노드가 동일한 거리만큼 떨어져있는 간단한 그리드 기반 길 찾기를 수행 할 때 매우 단순한 찾기를 위해 항상 1을 반환합니다.

    는 다 익스트라의 알고리즘은 실제로 단지

    0을 반환하여, 일반적으로, 그 중 두 번째를 포함하지만 당신의 질문은 세 번째 일에 대해 다음과 같습니다

    당신이 그리드에이 일을한다면

    , 그냥 찾을 수 격자 공간의 유클리드 이웃입니다. 즉, 그리드 공간 x2y2의 경우 유클리드 공간에서 이웃은 x1y2, x3y2, x2y1 및 x2y3입니다.

    그리드를 다루지 않는다면, 당신이하고 싶은 일은 세계에 배치하거나 직후에 배치 할 때 각 노드의 형제 데이터를 채우고 저장하는 것입니다. 해당 노드와 연관된 목록에서. 한 노드에서 다른 모든 노드까지의 거리를 계산하고 그 중 가장 짧은 것을 찾거나 그와 비슷한 것을 찾을 수 있습니다. 매우 비쌀 수 있지만 처음 시작할 때 한 번만 수행하므로 노드가 동적이지 않으면 잘해야합니다.