Un ejemplo de búsqueda A*

El ejemplo consiste en un plano de 800×600 puntos con el punto (0,0) en la esquina superior izquierda. En el plano hay puntos y figuras (formadas por puntos). Uno de los puntos es el origen y otro el destino. El problema a resolver es encontrar el camino más corto desde el origen al destino moviéndose de punto a punto y sin pasar sobre una figura.

La heurística utilizada es la distancia en línea recta desde la posición actual a la posición del objetivo.

Instalación y uso

Teniendo Python y PyGame instalados, obtener el código fuente:

svn co http://svn.juanjoconti.com.ar/astar/tags/astar-only/ astar

y dentro de la carpeta astar ejecutar gui.py:

cd astar
python gui.py

El primer click que se haga marcará el punto origen (verde) y el segundo el punto destino (rojo).

Luego se pueden agregar tantos puntos sueltos o figuras como se quieran. Si se hace uno o dos clicks y luego se aprieta la barra espaciado, uno o dos puntos son añadidos al planto. Si se hacen más de dos clicks antes de apretar la barra espaciadora, entonces una figura formada por los puntos marcados es añadida.

Se siguen cargando tantos puntos y figuras como se quiera. Finalmente, al aprender Enter se ejecuta el algoritmo de búsqueda y si se encuentra un camino-solución, este es graficado.

Otros casos de prueba:

Teoría relacionada

About Juanjo

Mi nombre es Juanjo Conti, vivo en Santa Fe y soy Ingeniero en Sistemas de Información. Mi lenguaje de programación de cabecera es Python; lo uso para trabajar, estudiar y jugar. Como hobby escribí un libro de cuentos que se puede descargar gratuitamente.
This entry was posted in IA, PyGame and tagged , . Bookmark the permalink.
  • Juanjo

    La heurística utilizada es admisible. Esto significa que no sobre estima el costo de llegar desde un nodo dado hasta el objetivo. Una heurística admisible asegura que la búsqueda A* será completa (si existe una solución, la encontrará) y óptima (encontrará la mejor solución).

  • http://www.aojava.com.ar gorlok

    Muy interesante. En el pasado usé algunos algoritmos A* para la IA en juegos, y la verdad que son muy útiles.

  • Pingback: A* vs Avara | Vientos de Libertad

  • http://www.facebook.com/people/Angel-Urieta-Barrigón/100000531264297 Angel Urieta Barrigón

    hno bueno esto!!! solo q n hise lo k dices y no me corre!!!