Wikipedia dice en A * complejidad lo siguiente (link here):¿Por qué la complejidad de A * exponencial en la memoria?
más problemática que la complejidad del tiempo es el uso de memoria A *’s. En el peor de los casos, también debe recordar un número exponencial de nodos.
no veo que esto es correcto porque:
decir que exploran el nodo A, con sucesores B, C y D. A continuación, añadir B, C y D a la lista de nodos abiertos, cada uno acompañado por una referencia a A, y movemos A desde los nodos abiertos a los nodos cerrados.
Si en algún momento encontramos otra ruta a B (por ejemplo, a través de Q), es mejor que la ruta a A, entonces todo lo que se necesita es cambiar la referencia de B a A para apuntar a Q y actualizar su real costo, g (y lógicamente f).
Por lo tanto, si almacenamos en un nodo su nombre, su nombre de nodo de referencia y sus puntajes g, h y f, entonces la cantidad máxima de nodos almacenados es la cantidad real de nodos en el gráfico, no es ¿eso? Realmente no puedo ver por qué en algún momento el algoritmo necesitaría almacenar una cantidad de nodos en la memoria que sea exponencial a la longitud de la ruta óptima (más corta).
Podría alguien explicar por favor?
edición como lo entiendo ahora la lectura de sus respuestas, que estaba razonando desde el punto de vista equivocado del problema. Yo daba por sentado un gráfico dado , mientras que la complejidad exponencial se refiere a un un gráfico conceptual que se define únicamente por un "factor de ramificación".
Breve, conciso, y me hizo comprender mi error de inmediato. Buena respuesta. – Paul
De hecho, el texto en la Wikipedia ahora dice "En el peor de los casos, la cantidad de nodos expandidos es exponencial en la longitud de la solución (la ruta más corta)". –
@ziggystar Estoy trabajando con el algoritmo A * y no estoy seguro de cómo encontrar la complejidad del algoritmo en tiempo de ejecución. Tengo una grilla 2D con obstáculos y busco el camino más corto entre dos puntos. Aquí están los detalles http://stackoverflow.com/questions/16141678/how-to-compute-the-running-time-of-a-star-algorithm. ¿Cómo sé el tiempo de ejecución de una estrella? Gracias. – Kraken