J'ai besoin d'aide pour comprendre l'algorithme Triangle A * (TA *) décrit par Demyen dans son article Efficient Triangulation-Based Pathfinding , pages 76-81.
Il décrit comment adapter l'algorithme A * régulier pour la triangulation, pour rechercher d'autres chemins éventuellement plus optimaux, même après que le nœud final soit atteint / développé. Un A * régulier s'arrête lorsque le nœud final est développé, mais ce n'est pas toujours le meilleur chemin lorsqu'il est utilisé dans un graphique triangulé. C'est exactement le problème que j'ai.
Le problème est illustré à la page 78, figure 5.4:
Je comprends comment calculer les valeurs g et h présentées dans le document (page 80).
Et je pense que la condition d'arrêt de la recherche est:
if (currentNode.fCost > shortestDistanceFound)
{
// stop
break;
}
où currentNode est le nœud de recherche extrait de la liste ouverte (file d'attente prioritaire), qui a le score f le plus bas. shortestDistanceFound est la distance réelle du chemin le plus court trouvé jusqu'à présent.
Mais comment exclure les chemins trouvés précédemment des recherches futures? Car si je refais la recherche, il trouvera évidemment le même chemin. Dois-je réinitialiser la liste fermée? Je dois modifier quelque chose, mais je ne sais pas ce que je dois changer. Le papier manque de pseudocode, ce serait donc utile.
la source