Algorito de Busqueda a Asterisco

Embed Size (px)

Citation preview

Algoritmo de bsqueda (A estrella o asterisco) Alumno: Sergio Navarro

El algoritmo de bsqueda A* o tambin denominado A Estrella se encuentra dentro de los tipos de algoritmos de bsqueda en grafos, representado por Peter E. Hart, Nils J. Nilsson y Bertram Rpale, en 1968. El algoritmo A* es el nico que garantiza, sea cual sea la funcin heurstica, que se tiene en cuenta el camino recorrido y por ende es mejor que la versin ms extendida de "primero el mejor", aqulla que slo considera la distancia a la meta. En definitiva, s tiene razn en el caso concreto que usted plantea, pero no la tiene en general.

Minera de datos, bsqueda de comportamiento en los datos. Procesamiento de imgenes. Medicina humana, software mdicos, control de tumores, problemas cancergenos. En la aeronavegacin y transporte, el pilotaje automtico, bsquedas de rutas ms prximas Video juegos de estrategia, camino ms corto, ejemplo:Pacman: Los fantasmas que persiguen a Pacman buscan el camino ms corto, en lugar de aparecer en forma aleatoria en el Mapa del Juego. Y muchos otros juegos de estrategia

Vamos a asumir que tenemos a alguien que quiere ir desde el punto A hasta el punto B. Asumamos tambin que un muro separa estos dos puntos. El ejemplo queda ilustrado en el grfico siguiente, donde el recuadro verde es el punto de inicio A, el rojo es el punto de destino B y la zona azul el muro que hay entre ambos.

Aadimos el punto inicial A, a una lista abierta de cuadrados, bsicamente la lista se refiere a los cuadrados que tienen que ser verificados Observamos alrededor y guardamos a todos los cuadrados transitables a la lista, ignoramos aquellos cuadrados que pueden ser muros o terrenos prohibidos, luego nombramos al punto inicial como padre de todos los cuadrados a su alrededor que sean transitables Saca el cuadro inicial A desde tu lista abierta y adelo a una "lista cerrada" de cuadrados que no necesitan, por ahora, ser mirados de nuevo, luego marcamos el cuadro que esta en la lista cerrada

La clave para determinar a que cuadro nos moveremos para llegar a nuestro objetivo es usar la ecuacin ya mencionada: F=G+H G = El costo de movimiento para ir desde el punto inicial A a un cierto cuadro de la rejilla, siguiendo el camino generado para llegar all H = El costo de movimiento estimado para ir desde ese cuadro de la rejilla hasta el destino final, el punto B. Esto es a menudo nombrado como la heurstica Tal y como est descrito G es el costo de movimiento para ir desde el punto de inicio a un cierto cuadro usando el camino generado para llegar all. En este ejemplo asignaremos un coste de 10 a cada cuadro vertical u horizontal hacia el que nos movamos, y un costo de 14 para un movimiento diagonal. H puede ser estimado de diferentes maneras. El mtodo que se usa aqu se llama el mtodo Manhattan, donde calculas el nmero total de cuadros movidos horizontalmente y verticalmente para alcanzar el cuadrado destino desde el cuadro actual, sin hacer uso de movimientos diagonales. Luego multiplicamos el total por 10. Cabe sealar que cuando calculamos H, ignoramos cualquier obstculo que intervenga. Es una estimacin de la distancia que queda, no de la distancia actual, es por eso que se llama heurstica

F se calcula sumando G y H. El resultado del primer paso en nuestra bsqueda puede ver se en la siguiente ilustracin. Las puntuaciones F, G y H estn escritas en cada cuadrado. En el cuadro inmediatamente a la derecha de cuadro inicial, la F est impresa arriba a la izquierda, la G abajo a la izquierda y la H abajo la derecha.

Para continuar la bsqueda, simplemente elegimos la puntuacin F ms baja de todos aquellos que estn en la lista abierta. Despus hacemos lo siguiente con el cuadro seleccionado:

Sacamos de la lista abierta y lo aadimos a la lista cerrada. Comprueba todos los cuadrados adyacentes, ignorando aquellos que estn en la lista cerrada o que sean intransitables (terrenos con muros, agua, o cualquier terreno prohibido), aade los cuadros a la lista abierta si no estn ya en esa lista. Haz al cuadro seleccionado el "padre" de los nuevos cuadros. Si el cuadro adyacente ya est en la lista abierta, comprueba si el camino a ese cuadro es mejor que este. En otras palabras, comprueba que la G de ese cuadro sea ms baja que la del que estamos usando para ir all. Si no es as, no hagas nada. Por otro lado, si el costo G del nuevo camino es ms bajo, cambia el padre del cuadro adyacente al cuadro seleccionado Finalmente, recalcula la F y la G de ese cuadrado

De manera mas fcil, De nuestros 9 cuadros iniciales, dejamos 8 en la lista abierta despus de que el cuadrado inicial fuera incluido en la lista cerrada. De estos, el que tiene el coste F ms bajo es el de inmediatamente a la derecha del cuadro inicial, con una F de 40. As que seleccionamos este cuadrado como nuestro siguiente cuadrado. Est resaltado en azul en la siguiente ilustracin.

Realizamos la siguiente comprobacin: Verificamos el costo F de los cuatro cuadros que tenemos, en este caso tenemos 2 cuadros con el mismo valor menor o igual al cuadro actual tomamos cualquiera de ellos Los 4 cuadrados ya estn en la lista abierta, as que necesitamos comprobar si alguno de los caminos hasta esos cuadros es mejor que el del cuadrado actual hasta ellos. Para eso usaremos la puntuacin G como punto de referencia. Tomamos el cuadro de abajo del seleccionado con menor costo F; su G actual es 14. Si fusemos a travs del cuadro actual hasta all, la G sera igual a 20 la condicin es que sea menor o igual (10, la G del cuadro actual, ms 10 de un movimiento vertical hacia el cuadro superior). Una G de 20 es mayor que una de 14, as que no es un buen camino. Todo eso debera cobrar sentido si miras el diagrama. Es ms directo llegar a ese cuadro desde el cuadro inicial movindote un cuadro en diagonal, que moverte horizontalmente un cuadro y luego verticalmente otro.

Ya que lo elegimos anteriormente, escogemos el cuadro justo debajo del cuadrado que desechamos antes. La siguiente ilustracin lo aclara:

Por lo que se ve en el anterior se generan 2 nuevos cuadros los cuales aadimos a la lista abierta, con respecto a los otros ya estn en la lista cerrada o bien es el muro, debemos tomar en cuenta que no tomamos el cuadro de abajo del muro, por que si un personaje intentase a travesar de manera diagonal raspara el hombro con la esquina, lo mejor es dar un pequeo rodeo ( la regla de bordear esquinas es opcional), el cuadro actual se convierte en el padre, lo cual hace que sus nuevos cuadros se dirijan a el De manera repetitiva vamos encontrando el camino, terminaramos como el siguiente ilustracin si es que hubiramos tomado el cuadro superior derecho a un principio

Pero, cmo determinamos el camino actual en si mismo? Fcil, slo empiezas desde el cuadro objetivo rojo, y vas hacia atrs de un cuadrado a su padre, siguiendo las flechas. Eso te llevar de vuelta al cuadrado inicial y tus movimientos sern el camino a seguir. Debera parecerse a la siguiente ilustracin. Moverse desde el cuadro inicial A hasta el cuadro destino B es solo cuestin de ir movindose desde el centro de un cuadro (el nodo) al siguiente hasta alcanzar el objetivo.