Necesito ayuda para entender el algoritmo Triángulo A * (TA *) que describe Demyen en su trabajo Efficient Triangulation-Based Pathfinding , en las páginas 76-81.
Describe cómo adaptar el algoritmo A * regular para la triangulación, para buscar otras rutas posiblemente más óptimas, incluso después de alcanzar / expandir el nodo final. El A * normal se detiene cuando el nodo final se expande, pero esta no siempre es la mejor ruta cuando se usa en un gráfico triangulado. Este es exactamente el problema que estoy teniendo.
El problema se ilustra en la página 78, Figura 5.4:
Entiendo cómo calcular los valores g y h presentados en el documento (página 80).
Y creo que la condición de detención de búsqueda es:
if (currentNode.fCost > shortestDistanceFound)
{
// stop
break;
}
donde currentNode es el nodo de búsqueda extraído de la lista abierta (cola de prioridad), que tiene la puntuación f más baja. shortestDistanceFound es la distancia real de la ruta más corta encontrada hasta ahora.
Pero, ¿cómo excluyo las rutas encontradas previamente de futuras búsquedas? Porque si vuelvo a buscar, obviamente encontrará la misma ruta. ¿Restablezco la lista cerrada? Necesito modificar algo, pero no sé qué es lo que necesito cambiar. El documento carece de pseudocódigo, por lo que sería útil.
fuente