노드 이웃을 찾는 방법은 무엇입니까? 특정 노드를 다른 노드의 이웃으로 만드는 것은 무엇입니까? 내가 루아Dijkstra의 알고리즘에서 이웃을 어떻게 찾습니까?
의 코드 A *와
0
A
답변
1
을 쓰고 있어요 그건 그렇고, 당신은 세 가지를 정의
- 주어진 노드와 사이에 다른
- 의 거리에 하나 개의 인접 노드에서 이동의 비용 목표는 주어진 노드
-
는 다 익스트라의 알고리즘은 실제로 단지
0을 반환하여, 일반적으로, 그 중 두 번째를 포함하지만 당신의 질문은 세 번째 일에 대해 다음과 같습니다
당신이 그리드에이 일을한다면, 그냥 찾을 수 격자 공간의 유클리드 이웃입니다. 즉, 그리드 공간 x2y2의 경우 유클리드 공간에서 이웃은 x1y2, x3y2, x2y1 및 x2y3입니다.
그리드를 다루지 않는다면, 당신이하고 싶은 일은 세계에 배치하거나 직후에 배치 할 때 각 노드의 형제 데이터를 채우고 저장하는 것입니다. 해당 노드와 연관된 목록에서. 한 노드에서 다른 모든 노드까지의 거리를 계산하고 그 중 가장 짧은 것을 찾거나 그와 비슷한 것을 찾을 수 있습니다. 매우 비쌀 수 있지만 처음 시작할 때 한 번만 수행하므로 노드가 동적이지 않으면 잘해야합니다.
"특정 노드를 다른 노드의 이웃으로 만드는 이유는 무엇입니까?" 두 노드 사이의 가장자리. –
@DanielFischer가 말한 내용은 더 자세한 설명을 위해 그래프/격자를 어떻게 표현하는지에 대한 예제를 제공합니다 (사각형 격자 인 경우 대각선 이동을 허용합니까) – catwell
3 차원 환경이므로 시도 중입니다. 노드 블록으로 시작과 끝 사이의 최단 거리를 찾으십시오. – Nightlock32