La respuesta corta es sí, hay situaciones en las que A * no es el mejor algoritmo para resolver un problema. Sin embargo, hay una serie de formas de evaluar qué constituye el mejor algoritmo para encontrar una solución.
Si usted está considerando mejor en términos de rendimiento de múltiples búsquedas de una sola fuente a muchos destinos, entonces usted debe considerar el uso de un enfoque más adecuado (Dijkstra's algorithm).
Si usted está considerando mejor en términos de rendimiento , a continuación, en algunos casos especiales DFS y BFS superará significativamente A *. De la experiencia pasada, esto ocurre para gráficos muy pequeños, casi triviales, pero requeriría pruebas cuidadosas y perfiles para hacer una declaración más fuerte.
Si usted está considerando mejor en términos de la longitud del recorrido, que es el tiempo que la ruta final producido por el algoritmo es, entonces A * es equivalente a cualquier otro algoritmo de búsqueda óptima.
Si usted está considerando mejor en términos de integridad , es decir, el algoritmo será siempre encontrar un camino hacia la meta, si existe tal camino. Si es así, entonces A * es equivalente a cualquier otro algoritmo completo (por ejemplo, búsqueda de ancho primero).
Si usted está considerando mejor en los casos en que algunos de los pesos en el gráfico son negativos, entonces usted tendrá que utilizar un algoritmo especial para resolver esos problemas (por ejemplo bellman-ford)
Si están considerando mejor en los casos en que la sin heurística es disponible entonces se debe recurrir a h(x,y)=0 forall states x and y
. En este caso, A * es equivalente a la mejor primera búsqueda.
Si usted está considerando mejor en casos relacionados con la planificación de movimientos en espacio de configuración continuas, entonces A * puede trabajar adecuadamente en las dimensiones bajas, pero el almacenamiento de la gráfica de búsqueda empieza a ser poco práctico en altas dimensiones, y el necesitará utilizar algoritmos probabilísticamente completos aumenta (por ejemplo RRT, Bi-RRT, RDT)
Si está pensando en mejor en los casos en que la gráfica es parcialmente observable, sólo se conoce un subconjunto de todos los posibles vértices y bordes dentro del gráfico en una ny el tiempo, y hay que cambiar de estado para observar más de la gráfica, entonces necesita un algoritmo alternativo diseñado para ello (por ejemplo, planificación de toda la vida de Keonig *, * LPA, hace exactamente esto).
Si usted está considerando mejor en los casos donde el gráfico cambios en el tiempo, lo cual ocurre con frecuencia en la robótica al incorporar obstáculos en movimiento, entonces usted necesita un algoritmo que está diseñado para esto (por ejemplo Stentz de D* o Koenig & D * -Lite de Likhachev).
Vale la pena señalar que el truco de multiplicar la heurística por una constante hará que la heurística sea inadmisible, y como resultado, la búsqueda ya no será óptima. –
Sí, pero como se indicó anteriormente, existen límites comprobables sobre el tipo de aproximación del resultado óptimo que esto producirá. En particular, para una constante, c, la ruta resultante no será más de c veces más larga que la ruta óptima. – sjdlgjsljg