Post on 04-Jan-2016
description
Algoritmo de Búsqueda A*
1. Introducción al algoritmo a*
El algoritmo A* (conocido también como A estrella o asterisco) es un algoritmo de búsqueda que
encuentra la ruta de menor coste entre dos puntos siempre y cuando se cumplan una serie de
condiciones. Está clasificado dentro de los algoritmos de búsqueda en grafos ya que tiene la
necesidad de dar a los mecanismos robóticos, vehiculares o virtuales un sistema de navegación
autónomo.
Es ampliamente utilizado en las ciencias de la computación para encontrar rutas y que tan transitable
es una gráfica, es decir, se refiere al problema de visitar todos los nodos en una gráfica dada de forma
particular , esto no es más que el proceso de trazado de la ruta más eficiente entre unos puntos
llamados nodos. Este algoritmo goza de una aceptable y continua implementación gracias a su
desempeño y precisión. Fue descrito por primera vez en 1968 como una extensión del algoritmo de
Dijkstra (1959), por Peter Hart, Nils Nilsson y Bertran Raphael, que expusieron que el A* lograba un
mejor desempeño con respecto al tiempo usando heurísticas.
2. Orígenes del algoritmo A*
En 1964 Nils Nilsson inventó una heurística basada en aproximaciones para incrementar la velocidad
del algoritmo de Dijkstra. Este algoritmo fue llamado inicialmente como A1.
En 1967 Bertran Raphael hizo mejoras dramáticas sobre este algoritmo pero falló en demostrar su
optimalizad. Él llamó a este algoritmo como A2. Hart introdujo un argumento que el A2 era óptimo
usando una heurística consistente haciendo unos cambios menores. Su comprobación del algoritmo
también demostró que el A2 era el mejor algoritmo dadas algunas condiciones. Así Hart llamó a este
nuevo algoritmo con la sintaxis “Kleene star” (debido a que representa una operación con solamente
un operando [5, 6]) por ser un algoritmo que empieza con la letra A e incluye todas las versiones de
números posibles o A*. El algoritmo A*, (leído A estrella) es un algoritmo de búsqueda en grafos. Fue
presentado por Peter E. Hart y Nils J. Nilsson (1968), y Bertram Raphael (1968), el algoritmo
encuentra, siempre y cuando se cumplan unas determinadas condiciones, el camino de menor coste
entre una condición inicial y una condición meta.
3. Descripción del algoritmo A*
Es un algoritmo que se encarga de encontrar la ruta que representa un menor costo entre un punto A y
otro B. Es una técnica de búsqueda para grafos que utiliza una función heurística:
f(n) = g(n) + h(n)
f(n): costo total estimado del camino para llegar al objetivo a través del nodo n.
Este algoritmo mantiene un conjunto de soluciones parciales almacenadas en una cola de prioridad.
g(n) : es el costo de las movidas realizadas.
Representa el valor absoluto de la operación dentro del paréntesis.
h(n) : es la función heurística. Representa el costo estimado del mejor camino. Dicha estimación debe
ser realizada por defecto, es decir, siempre menor o igual a la real.
Representa el valor explícito de movernos de nuestro punto actual al siguiente en alguna dirección
dada, si no se especifica se toma como unitario ya que pertenece a una distribución uniforme.
Los nodos buenos deben poseer valores bajos
F(n)= los valores bajos
4. Aplicaciones del algoritmo A*
De manera general este algoritmo se utiliza para encontrar el camino más corto entre dos puntos
dados, pero dentro de sus otras aplicaciones se utiliza en juegos para determinar el recorrido que un
objeto debe realizar; un ejemplo de ello es el videojuego pacman en el que se aplicaba al
comportamiento de los fantasmitas y en la resolución de los problemas de Sudoku de 8 variables.
También se puede utilizar para resolver el cubo Rubik mostrándonos cómo hacerlo con la menor
cantidad de movidas.
5. Propiedades del algoritmo
Como todo algoritmo de búsqueda en amplitud, A* es un algoritmo completo: en caso de existir una
solución, siempre dará con ella.
Si para todo nodo n del grafo se cumple , nos encontramos ante una búsqueda voraz.
Si para todo nodo n del grafo se cumple , A* pasa a ser una búsqueda de coste uniforme no
informada.
6. Complejidad en memoria
El espacio requerido por A* para ser ejecutado es su mayor problema. Dado que tiene que
almacenar todos los posibles siguientes nodos de cada estado, la cantidad de memoria que
requerirá será exponencial con respecto al tamaño del problema.
7. Ventajas y Desventajas
Ventajas:
Solución inmediata si existe.
Solución por el camino más corto.
Desventajas:
Al almacenar todos los posibles siguientes nodos de cada estado, la cantidad de memoria que
requerirá será exponencial con respecto al tamaño del problema
8. Bibliografía
[1]. “Algoritmo de búsqueda A*” Disponible en:
https://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqueda_A*
[2]. “Algoritmo A*” Disponible en:
http://idelab.uva.es/algoritmo
[3]. “Algoritmo A* para encontrar el camino más corto en IA” Disponible en:
http://www.cristalab.com/tutoriales/algoritmo-a-para-encontrar-el-camino-mas-corto-en-ia- c91591l/
[4]. “El algoritmo a (asterisco)” Disponible en:
http://es.slideshare.net/CristinaLopez35/el-algoritmo-a-asterisco