Ho bisogno di aiuto per capire l'algoritmo Triangle A * (TA *) che è descritto da Demyen nel suo paper Efficient Triangulation-Based Pathfinding , alle pagine 76-81.
Descrive come adattare l'algoritmo A * normale alla triangolazione, per cercare altri percorsi forse più ottimali, anche dopo che il nodo finale è stato raggiunto / espanso. Il normale A * si interrompe quando il nodo finale viene espanso, ma questo non è sempre il percorso migliore quando viene utilizzato in un grafico triangolato. Questo è esattamente il problema che sto riscontrando.
Il problema è illustrato a pagina 78, Figura 5.4:
Capisco come calcolare i valori ge h presentati nel documento (pagina 80).
E penso che la condizione di arresto della ricerca sia:
if (currentNode.fCost > shortestDistanceFound)
{
// stop
break;
}
dove currentNode è il nodo di ricerca spuntato dall'elenco aperto (coda di priorità), che ha il punteggio f più basso. shortestDistanceFound è la distanza effettiva del percorso più breve trovato finora.
Ma come posso escludere i percorsi precedentemente trovati dalle ricerche future? Perché se faccio di nuovo la ricerca, troverà ovviamente lo stesso percorso. Devo ripristinare l'elenco chiuso? Ho bisogno di modificare qualcosa, ma non so che cosa devo cambiare. Il documento manca di pseudocodice, quindi sarebbe utile.