Ich brauche Hilfe beim Verständnis des Triangle A * (TA *) -Algorithmus, den Demyen in seinem Artikel Efficient Triangulation-Based Pathfinding auf den Seiten 76-81 beschrieben hat.
Er beschreibt, wie der reguläre A * -Algorithmus für die Triangulation angepasst werden kann, um nach anderen möglicherweise optimaleren Pfaden zu suchen, selbst nachdem der endgültige Knoten erreicht / erweitert wurde. Normales A * stoppt, wenn der letzte Knoten erweitert wird. Dies ist jedoch nicht immer der beste Pfad, wenn er in einem triangulierten Diagramm verwendet wird. Das ist genau das Problem, das ich habe.
Das Problem ist auf Seite 78, Abbildung 5.4 dargestellt:
Ich verstehe, wie man die in der Arbeit dargestellten g- und h-Werte berechnet (Seite 80).
Und ich denke, die Suchstoppbedingung ist:
if (currentNode.fCost > shortestDistanceFound)
{
// stop
break;
}
Dabei ist currentNode der Suchknoten, der aus der offenen Liste (Prioritätswarteschlange) mit dem niedrigsten f-Score entfernt wurde. shortestDistanceFound ist die tatsächliche Entfernung des kürzesten bisher gefundenen Pfades.
Aber wie schließe ich die zuvor gefundenen Pfade von zukünftigen Suchvorgängen aus? Denn wenn ich die Suche erneut durchführe, wird offensichtlich derselbe Pfad gefunden. Setze ich die geschlossene Liste zurück? Ich muss etwas ändern, aber ich weiß nicht, was ich ändern muss. Dem Papier fehlt der Pseudocode, das wäre also hilfreich.
quelle