Se dice generalmente que Un* es el mejor algoritmo de la búsqueda de caminos para resolver problemas.

¿Hay alguna situación en la que Un* es no el mejor algoritmo para encontrar la solución?

¿Cómo de bueno es Un* en comparación con BFS, DFS, UCS, etc?

InformationsquelleAutor Zombie | 2012-03-01

4 Comentarios

  1. 75

    La respuesta corta es sí, hay situaciones en las que* no es el mejor algoritmo para resolver un problema. Sin embargo, hay un número de maneras de evaluar lo que constituye la mejor algoritmo para encontrar una solución.

    Si usted está considerando mejor en términos de de rendimiento de varias búsquedas a partir de una sola fuente para muchos destinos, entonces usted debería considerar el uso de un método más adecuado (El algoritmo de Dijkstra).

    Si usted está considerando mejor en términos de rendimiento, a continuación, en algunos casos especiales DFS y BFS va a mejorar significativamente el rendimiento de Un*. A partir de la experiencia pasada, esta se produce por muy pequeñas, casi trivial gráficas, pero requeriría una cuidadosa pruebas y perfiles para hacer una declaración más fuerte.

    Si usted está considerando mejor en términos de de la longitud del recorrido, que es cómo de larga es la ruta final producido por el algoritmo, entonces a* a es equivalente a cualquier otro óptima del algoritmo de búsqueda.

    Si usted está considerando mejor en términos de integridad, es decir, el algoritmo siempre encuentra un camino a la meta, si tal existe una ruta. Si es así, entonces a* a es equivalente a cualquier otra completa algoritmo (por ejemplo, anchura de búsqueda).

    Si usted está considerando mejor en los casos en donde algunos de los pesos en el gráfico son negativos, entonces usted tendrá que utilizar un algoritmo especial para resolver los problemas (por ejemplo bellman-ford)

    Si usted está considerando mejor en los casos donde la no heurística está disponible, a continuación, debe volver a caer en h(x,y)=0 forall states x and y. En este caso, Un* es equivalente a la mejor primera búsqueda.

    Si usted está considerando mejor en los casos relacionados con el movimiento de la planificación en la continua de la configuración de los espacios, entonces A* puede funcionar adecuadamente en dimensiones bajas, pero el almacenamiento de la búsqueda gráfica empieza a ser poco práctico en altas dimensiones, y la necesidad de utilizar probabilísticamente completa algoritmos aumenta (por ejemplo TSR, Bi-TSR, RDT)

    Si usted está considerando mejor en los casos donde la gráfica es parcialmente observable, sólo se conoce un subconjunto de todos los posibles vértices y aristas dentro de la gráfica en cualquier momento, y usted necesita para cambiar su estado para observar más de la gráfica, entonces usted necesita un algoritmo alternativo diseñado para ello (por ejemplo, Keonig Permanente de la Planificación de UN*, LPA*, hace exactamente esto).

    Si usted está considerando mejor en los casos donde la gráfica cambios a través del tiempo, que se produce con frecuencia en la robótica cuando se incorporan los obstáculos en movimiento, entonces usted necesita un algoritmo, el cual está diseñado para ello (por ejemplo Stentz del D* o Koenig & Likhachev D*-Lite).

    • +1, aunque su descripción de la LPA* es incorrecta. LPA* es como Un*, pero en varios ejecuta después de que pequeños cambios en la gráfica de (modificado borde de pesos, la adición/eliminación de vértices), se puede calcular la mejor ruta de principio a fin mucho más rápido que la ejecución de Un nuevo*. Inicio/fin están siempre en el mismo lugar; esto contrasta con la D*-Lite (el cual ha sido superado D* completamente), en el que el «nodo de inicio» (que representa el movimiento del robot, o lo que sea) está en constante movimiento a lo largo de la mejor ruta entre cálculos. Véase también.
  2. 8

    Un* es especial porque puede ser transformado en otro camino-algoritmos de búsqueda, jugando con la forma en que evalúa los nodos y la heurística que utiliza. Usted puede hacer esto para simular Djikstra s, best-first-búsqueda, la amplitud de primera búsqueda, y la profundidad de búsqueda.

    Además, es a menudo fácil de acelerar. Por ejemplo, si se multiplica una heurística admisible por una constante, c, usted puede garantizar que el costo resultante de la secuencia de nodos que no es más que c veces el resultado óptimo.

    Por ejemplo este impresionante papel por Ian Davis (escrito para Star Trek Armada). Un* se utiliza con un conjunto jerárquico de los puntos de control, lo que resulta en un camino áspero. A CONTINUACIÓN, con el fin de allanar el camino, corren Un* de nuevo en un nuevo, genera el gráfico que contiene los nodos en el camino y aquellos cercanos a obtener una más razonable ruta. Por último, se ejecuta la selección elástica para quitar nodos redundantes.

    Así, Un* no es la solución para todo, pero es una herramienta muy versátil.

    • Vale la pena señalar que el truco de multiplicar la heurística por una constante hará que la heurística inadmisible, y, como tal, los resultados de la búsqueda ya no es óptimo.
    • Sí, pero como se mencionó anteriormente, hay comprobable límites ¿qué tipo de aproximación de obtener el resultado óptimo que esto va a producir. En particular, para una constante, c, su trazado resultante no será más que c veces tan largo como el camino óptimo.
  3. 4

    Una muy sencilla alternativa (no forcejeo con la heurística) es Colaboración De Difusión. Funciona excelente cuando usted necesidad de centrarse en la un objetivo o cualquier miembro de un grupo, de forma indiscriminada, y en este caso puede ser más rápido que Un*. Imita el juego de «Te estás poniendo más caliente/Frío».

    Colaboración de difusión crea un «mapa de calor» por «grupo» deseas destino… si usted desea realizar un seguimiento de un objetivo específico, tratarlo como su propio grupo mediante la creación de un «mapa de calor» sólo para ese objetivo; la Colaboración en materia de Difusión de dominio es juegos como el fútbol donde ambos equipos de agentes de la pista de la bola y los postes en concreto, llevando a sólo 3 influencia de los mapas) o Pacman (similar, varios agentes de seguimiento de la Pac) o el ejército de los juegos donde hay un combinado de «mapa de calor», que representa el cuerpo (agregado) de cada ejército como se determina a partir de cada agente en ese ejército, de modo que un ejército puede acercarse a «el otro ejército» en lugar de «unidades específicas dentro de otro ejército». Esta generalidad puede permitirse el lujo de aumentar el rendimiento.

    Caminar consta de escalada (que va desde la celda actual a una más cálida vecino de celda) hasta llegar al destino (punto más caliente). El enfoque implícitamente ofertas con los obstáculos en movimiento es decir, los otros agentes.

    Es el más adecuado donde los mapas son bastante densamente poblada con muchos, unidades de desplazamiento, lo que justifica la amplia difusión que debe ocurrir en todo el espacio de búsqueda en cada actualización. Es evidente cómo un bien afinado Una* * * enfoque puede ser de un orden de magnitud más barato en un grande, disperso mapa donde sólo tenemos una unidad de orientación sólo una unidad, ya que con Un* en este caso sólo trabaja en una fracción de teselas de mapa entre el buscador y el de destino; mientras que, con la Colaboración de Difusión, en cambio se difunden a través de todo el mapa, sólo para hacer la misma cosa, lo que es mucho más costosa.

  4. 0

    Me vea la pregunta es viejo, pero probablemente esta solución práctica será de utilidad para alguien.
    Recientemente he encontrado muy bonito, de código abierto escrito en python

    código siguiente contiene los algoritmos de búsqueda de caminos:

    • Un*
    • Dijkstra
    • Mejor Primera
    • Bi-direccional de Un*
    • Amplitud Primera Búsqueda (BFS)
    • Iterativo Deeping UNA* IDA (*)

    cambiar el tamaño de la matriz y los valores permite sentir la diferencia entre los distintos ruta de algoritmos de búsqueda. Como se menciona en Wikipedia: «Un* es completa y siempre se va a encontrar una solución, si existe»

Dejar respuesta

Please enter your comment!
Please enter your name here