삼각 분할 A * (TA *) 경로 찾기 알고리즘


11

Demyen이 자신의 논문 Efficient Triangulation-Based Pathfinding ( 76-81 페이지)에 설명한 Triangle A * (TA *) 알고리즘을 이해하는 데 도움이 필요합니다 .

또한 최종 노드에 도달 / 확장 한 후에도 삼각 분할을 위해 일반 A * 알고리즘을 조정하고 다른 최적 경로를 검색하는 방법에 대해 설명합니다. 최종 노드가 확장되면 일반 A * 가 중지되지만 삼각 그래프에서 사용될 때 항상 최상의 경로는 아닙니다. 이것은 내가 겪고있는 문제입니다.

문제는 78 페이지의 그림 5.4에 설명되어 있습니다. 여기에 이미지 설명을 입력하십시오

논문에 제시된 g 및 h 값을 계산하는 방법을 이해했습니다 (80 페이지).

그리고 검색 중지 조건은 다음과 같습니다.

if (currentNode.fCost > shortestDistanceFound)
{
    // stop
    break;
}

여기서 currentNode는 f- 점수가 가장 낮은 열린 목록 (우선 순위 큐)에서 검색된 검색 노드입니다. shortestDistanceFound는 지금까지 찾은 최단 경로의 실제 거리입니다.

그러나 향후 검색에서 이전에 찾은 경로를 어떻게 제외합니까? 다시 검색하면 동일한 경로를 찾을 수 있기 때문입니다. 닫힌 목록을 재설정합니까? 나는 무언가를 수정해야하지만 그것이 무엇이 바뀌어야하는지 모르겠습니다. 이 종이에는 의사 코드가 없으므로 도움이 될 것입니다.

답변:


3

나는 이것을 구현하지 않았지만 그것을 읽을 때 나는 당신이 다음과 같은 것을 할 것이라고 생각한다.

shortestDistance = infinity
do A* with modified g cost
    if node.fCost > shortestDistance (section 5.5)
        don't open node
    if node.isGoal()
        run funnel algorithm (string pulling)
        update shortestDistance

차이점은 목표에 대한 경로를 찾더라도 반드시 최단 경로 일 필요는 없다는 것 입니다. 그러나 최단 경로에서 상한을 계속 향상 시키므로 모든 노드를 열 필요는 없습니다. 결국 열린 세트는 비어 있어야하며 지금까지 찾은 최고의 경로는 가장 짧아야합니다.

그가 설명하는 수정 된 g 비용은 과소 평가되는 것처럼 보이므로 실제로 얼마나 잘 작동하는지에 대해서는 회의적입니다.


흠, 나는 틀릴 수 있지만 열린 목록에 추가하기위한 조건이 아니라 중지 조건으로 해석하고 있습니다. 다음은 열린 목록에 추가하기위한 조건과 비슷합니다. "보조적으로, 해당 삼각형에 해당하는 상태가 해당 상태의 조상 인 경우 특정 인접 삼각형에 대해 검색 상태의 자식이 생성되지 않습니다. Theorem 4.3.4에 명시된 것처럼 최적의 경로를 제거 할 수 없기 때문에 제외 할 수있다.
Morrowless
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.