Algoritmo de Búsqueda A

7
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.

description

Algoritmo de Búsqueda A

Transcript of Algoritmo de Búsqueda A

Page 1: Algoritmo de Búsqueda A

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

Page 2: Algoritmo de Búsqueda A

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

Page 3: Algoritmo de Búsqueda A

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.

Page 4: Algoritmo de Búsqueda A

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

Page 5: Algoritmo de Búsqueda A

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