Está en la página 1de 12

IMPLEMENTACINDEL ALGORITMOA* EN8PUZZLEY8REINA

Trabajo realizado por: Alonso Garca, Rubn Sanz Fernndez, Rafael

1. INTRODUCCIN
1.1. Introduccin a los algoritmos de bsqueda informada y exploracin Los algoritmos de bsqueda informada son ms eficientes que los algoritmos de bsqueda no informada, debido a que stos ltimos pueden encontrar soluciones a problemas generando sistemticamente nuevos estados y probndolos con el objetivo. Los algoritmos de bsqueda informada son muy tiles en problemas donde lo que importa es el estado de solucin en s mismo, no el camino. Utilizan mtodos inspirados en la fsica estadstica (temple simulado) y la biologa evolutiva (algoritmos genticos). Un primer contacto con stos algoritmos es el siguiente: bsqueda primero el mejor, que es un caso particular del algoritmo general de bsqueda de rboles o bsqueda de grafos, en el cul se selecciona un nodo para la expansin basada en una funcin de evaluacin, f(n). La evaluacin mide la distancia al objetivo. Otro algoritmo importante es el bsqueda voraz primero el mejor que expande el nodo ms cercano al objetivo. Evala los nodos utilizando solamente la funcin heurstica: f(n) = h(n) En nuestro trabajo nos centraremos en la bsqueda A* y sus variantes.

2. CARACTERIZACIN DEL ALGORITMO A*.


Un algoritmo de bsqueda por el mejor nodo combina las caractersticas de los mtodos en anchura y en profundidad. Se caracteriza porque para cada nodo se generan todos los posibles sucesores y de estos slo se expande aquel que sea ms prometedor despus de la aplicacin sobre ellos de una funcin heurstica h(n) que estima el coste del camino desde cada nodo al objetivo. El uso de este tipo de algoritmo, al minimizar el coste estimado hasta el objetivo, disminuye considerablemente el coste de la bsqueda. Desafortunadamente, no es ni ptimo ni completo. Por otra parte, la bsqueda de coste uniforme minimiza el coste del camino hasta el nodo, g(n) , es decir, expande para cada conjunto de sucesores aquel cuyo camino desde el nodo raz tenga un menor coste. Este es un algoritmo ptimo y completo, pero puede ser muy ineficiente. Sera bueno poder combinar estas dos estrategias para conseguir las ventajas de ambos. Afortunadamente, podemos hacer eso exactamente, combinando las dos funciones de evaluacin simplemente sumndolas: f(n) = g(n) + h(n).

Ya que g(n) proporciona el coste del camino desde el nodo de inicio hasta el nodo n, y h(n) es el coste estimado del camino de menos coste desde n hasta el objetivo, f(n) es el coste estimado de la solucin de menor coste que atraviesa el nodo n. Si se intenta encontrar la solucin de menor coste, es razonable intentar primero el nodo con el menor valor de f. Lo bueno de esta estrategia, es que es ms que razonable. Se puede comprobar que es completa y ptima, dando una simple restriccin de la funcin h. La restriccin es escoger una funcin h que nunca sobreestime el coste para alcanzar el objetivo. Una funcin h de este tipo es una heurstica admisible. A este algoritmo se le conoce con el nombre de A*. Los algoritmos de bsqueda heurstica tradicionales como A* pueden llegar a necesitar un espacio de almacenamiento que crece de manera exponencial con la longitud de la solucin del problema. Esto puede propiciar que, a pesar de que el problema tenga un coste temporal relativamente asequible, el coste espacial lo convierta en un problema intratable. 2.1. Optimalidad de A* Definir f* - el costo de la solucin ptima para la ruta A* expande todos los nodos con f(n)<f* A* podra expandir algunos de los nodos a la derecha del contorno de la meta, para los cuales f(n) = f*, antes de seleccionar el estado meta. La primera solucin encontrada debe ser la ptima, dado que los nodos de todos los contornos subsiguientes tendrn un costo f ms alto y con ello un costo g ms alto (todos los estados meta tienen h(n) = 0). Teorema: Sea h*(n) el costo real desde n hasta la meta. Si h(n) < h*(n) para todo nodo n, entonces A* siempre va a encontrar un nodo meta ptimo. Prueba: Sea s el nodo meta de mnimo costo. Sea que A* seleccione un nodo meta subptimo s, donde g(s)<g(s) Sea n un nodo sin expandir en la ruta desde el nodo inicio y el nodo meta ptimo s. Notar que ese nodo sin expandir necesariamente existe, de acuerdo con la suposicin previa (en el otro caso, s ya habra sido elegido como el nodo meta). Puesto que n no ha sido elegido para su expansin en su ruta hacia s, se sigue que: f(n) = g(n) + h(n) f(s') = g(s') + h(s') = g(s')

Dado que h es admisible, g(n) + h*(n) g(n) + h(n) = f(n), y entonces g(n) + h*(n) f(s') = g(s') lo cual implica que g(s) g(s') Una heurstica admisible nunca sobreestima el costo de llegar a la meta Un estimado de costo optimista en la solucin de un problema es menor -ms barato- que el real. Si h es admisible, f(n) nunca sobreestima el costo real de la mejor solucin pasando por n La bsqueda A* - con f(n) y con h admisible es completa y ptima 2.2. Completitud de A* A* expande nodos en el orden de un creciente f, con lo cual eventualmente expandir hasta llegar al estado meta salvo que haya una cantidad infinita de nodos con f(n)< f* Un nodo con un factor de ramificacin infinito Una ruta con costo de ruta finito pero con un nmero infinito de nodos a lo largo de ella 2.3. Complejidad A* La bsqueda A* es OPTIMAMENTE EFICIENTE para cualquier funcin heurstica al contrastarse con otros algoritmos ptimos que compiten con ella. No hay otro algoritmo que expanda menos nodos que A* Cualquier algoritmo, que no expanda todos los nodos en los contornos existentes entre el contorno del inicio y el de la meta, corre el riesgo de no encontrar la solucin ptima Complejidad temporal: O(b^d) Complejidad espacial: O(b^d) El espacio de bsqueda de A* crece exponencialmente a no ser que sea h(n)-h*(n) =< O(log h*(n)) Prcticamente, el error es a lo menos proporcional al costo de la ruta El crecimiento exponencial satura a cualquier computadora

3. CARACTERIZACIN DEL ALGORITMO IDA*.


Es de tipo de algoritmos de bsqueda heurstica con limitacin de memoria. Los ms utilizados son el IDA* (Iterative Deepening A*), y SMA* (Simplified memory A*). El IDA* (Iterative-Deepening A*) es al igual que el DFID un algoritmo basado en la profundizacin iterativa. La nica diferencia entre ambos algoritmos estriba en que mientras el DFID se basa en la profundidad para cada una de sus iteraciones, el IDA se basa en la informacin heurstica que posee para determinar el siguiente lmite de la iteracin. El tratamiento de esa informacin se realiza de igual forma que en el algoritmo del A*, o sea mediante la funcin de evaluacin f introducida anteriormente. El funcionamiento del algoritmo es el siguiente: En cada iteracin el algoritmo realiza una bsqueda en profundidad hasta donde se lo permita su lmite de coste. Cada vez que se visita todo el grafo de bsqueda contenido dentro de ese lmite sin hallar la solucin entonces, el algoritmo incrementa el lmite de coste. Ese nuevo lmite viene dado por el menor de los lmites de corte, o sea, por el menor valor del coste de los nodos que tenan un valor superior en la anterior iteracin. Este algoritmo se considera limitado en profundidad, aunque esta afirmacin no sea estrictamente cierta. La razn de ello viene dado por su eficacia en cuanto al uso de memoria pero en su funcionamiento no realiza un control estricto de la memoria.

3.1. Caractersticas de IDA* IDA* es un mtodo de bsqueda completo y ptimo, lo que quiere decir que siempre encuentra una solucin si es que sta existe y adems garantiza encontrar la mejor solucin de entre todas las posibles.

Este mtodo tiene las mismas ventajas y desventajas que A*, excepto en lo referente al coste espacial. En este aspecto IDA* presenta notables ventajas ya que nicamente necesita un espacio proporcional a la longitud de la ruta ms larga que se explore.

Esta limitacin en el uso de la memoria resulta beneficiosa pero tambin tiene sus desventajas, ya que al convertir la bsqueda de la solucin en un proceso iterativo expandiremos varias veces los mismos nodos. Esto es algo muy a tener en cuenta, ya que dependiendo de las caractersticas de los problemas a resolver obtendremos mejores o peores prestaciones.

En el mejor caso el coste temporal de IDA* puede ser muy similar al de A*, e incluso menor, ya que al ser un algoritmo simple y no necesitar de inserciones, borrados y reordenamientos en listas de prioridades tiene una menor sobrecarga por nodo. Este mejor caso ocurrir cuando tengamos un problema en el que las heursticas adopten valores aproximados al coste real desde el comienzo de la ejecucin, ya que entonces se realizarn pocas iteraciones, expandiendo adems pocos nodos en las iteraciones iniciales. Podemos asociar este caso con el problema del 8-puzzle cuando se usa la heurstica de distancias.

En el peor caso el coste temporal de IDA* se acerca al de un algoritmo de profundizacin iterativa habitual como el IDS (Iterative Deepening Search), es decir, en cada iteracin se profundiza nicamente un nivel ms en el rbol. Esto ocurre en problemas en los que los valores heursticos son poco acertados, lo que provoca que en cada iteracin aumentemos el contorno en slo uno o dos niveles.

4. CARACTERIZACIN DEL ALGORITMO SMA


El SMA* (Simplified Memory-bounded A*) aparece en cierta medida debido a los problemas del IDA* en espacios reducidos de memoria. Al contrario de ste, el SMA* realiza un control estricto de la memoria, delimitando desde un principio el mximo de memoria de la que dispone. En cambio, la implementacin de ste resulta muy dificultosa. El algoritmo SMA* hace un uso ms inteligente del espacio de almacenamiento y tiene la ventaja de usar toda la memoria de que disponga, de forma ptima. En este caso podemos considerar que el coste espacial es constante, aunque deberemos tener en cuenta que para poder obtener la solucin ptima, la ruta entre el nodo inicial y el final deber caber en la memoria disponible. El coste temporal de este algoritmo est muy relacionado con el tamao de la memoria: Si en ella cabe todo el rbol de bsqueda, el algoritmo expandir exactamente los mismos nodos que A*. Si no es as, las prestaciones se reducen. El uso de ms memoria permite mejorar la eficiencia de la bsqueda.

5. JUEGO DEL 8-PUZZLE


5.1. Estudio de la resolucin de diferentes configuraciones del 8-puzzle con diferentes heursticas En la implementacin del 8-Puzzle hemos creado 4 archivos diferentes en cada uno de los cuales se ha utilizado una heurstica diferente: H1 Suma total de fichas descolocadas: heurstica minorante fcil de calcular pero con resultados que distan mucho de ser ptimos. H2 Suma de distancias de Manhatan: heurstica minorante bastante efectiva. En problemas cortos es la que mejores resultados ha obtenido. H3 Suma de secuencias: heurstica no minorante, que en nuestras pruebas no ha demostrado ser excesivamente eficaz. H=H2+2*H3: heurstica no minorante que ha demostrado ser la mas eficaz de la cuatro utilizadas, puesto que aunque en tableros de 8-puzzle con una configuracin mas simple (con menor nmero de movimientos) se ha visto superada por la H2, en tableros con una complejidad elevada (18 movimientos) ha sido capaz de resolver los problemas un numero mucho mas pequeo de nodos. Para llegar a estas conclusiones nos hemos basado en la resolucin de 3 tableros diferentes de 8-puzzle con una complejidad de 6, 12 y 18 movimientos. En todas ella se pretende llegar a la misma matriz solucin: 1 8 7 2 0 6 3 4 5

5.2. 8-Puzzle de 6 movimientos La primera matriz utilizada ha sido la siguiente (el 0 representa la casilla vaca):

1 6

3 2

0 4

Para resolver esta matriz de forma ptima se deben realizar 6 movimientos, los cuales son descritos a continuacin:

1 6 8

3 2 7

0 4 5

1 6 8

0 2 7

3 4 5

1 6 8

2 0 7

3 4 5

1 0 8

2 6 7

3 4 5

1 8 0

2 6 7

3 4 5

1 8 7

2 6 0

3 4 5

1 8 7

2 0 6

3 4 5

Para llegar ha este resultado se han tenido que efectuar los 6 movimientos que acabamos de describir y que enumeramos a continuacin: Izquierda, Abajo, Izquierda, Abajo, Derecha, Arriba

Todas las heursticas utilizadas llegan a una solucin optima, pero la diferencia principal radica en le cantidad de recursos que necesitan para resolver el problema.

Vamos a mostrar las principales diferencias obtenidas en la resolucin del problema con las diferentes heursticas:

H1 = 5 H2 = 6 H3 = 11 H= H2+2H3 = 28

N de movimientos = 6 N de movimientos = 6 N de movimientos = 6 N de movimientos = 6

Nodos generados = 21 Nodos generados = 18 Nodos generados = 20 Nodos generados = 18

5.3. 8-Puzzle de 12 movimientos Para la prueba de 12 movimientos hemos utilizado la siguiente matriz:

6 8 0

1 3 7

4 2 5

Para este ejercicio y para el de 18 movimientos, no vamos a escribir las configuraciones de las matrices en la resolucin de este problema pues resultara muy tedioso, pero si que daremos una descripcin optima de los pasos a seguir Una solucin ptima encontrada para la resolucin de esta matriz de forma ptima es: Arriba, Arriba, Derecha, Abajo, Izquierda, Abajo, Derecha, Arriba, Derecha, Arriba, Izquierda, Abajo. Si hacemos una comparacin entre las diferentes heursticas podremos comprobar que:

H1 = 6 H2 = 10 H3 = 15 H= H2+2H3 = 40

N de movimientos = 12 N de movimientos = 12 N de movimientos = 12 N de movimientos = 12

Nodos generados = 917 Nodos generados = 38 Nodos generados = 101 Nodos generados = 40

5.4. 8-Puzzle de 18 movimientos Para la prueba de 18 movimientos hemos utilizado la siguiente matriz:

6 8 7

3 0 5

1 4 2

Una solucin ptima encontrada para la resolucin de esta matriz de forma ptima es: Arriba, Izquierda, Abajo, Derecha, Arriba, Derecha, Abajo, Abajo, Izquierda, Arriba, Izquierda, Arriba, Derecha, Abajo, Derecha, Arriba, Izquierda, Abajo. Si hacemos una comparacin entre las diferentes heursticas podremos comprobar que:

H1 = 5 H2 = 10 H3 = 14 H= H2+2H3 = 38

N de movimientos = ? N de movimientos = 18 N de movimientos = ? N de movimientos = 18

Nodos generados = ? Nodos generados = 5421 Nodos generados = ? Nodos generados = 4709

En la resolucin de este problema tanto H1 como H3 provocan un desbordamiento de memoria debido al alto grado de recursos utilizados, y no se obtiene ninguna solucin.

5.5. Conclusiones de las pruebas de 8-puzzle En problemas de complejidad pequea (numero reducido de movimientos para resolver el problema) la heurstica ms eficaz es la de Manhattan, ya que es capaz de resolver el problema con menor consumo de memoria (utiliza menos nodos). A medida que la que la complejidad del problema va aumentando se va comprobando como la utilizacin de nodos por parte de las diferentes heursticas va aumentando en grandes cantidades. As podemos ver que la utilizacin de nodos resolviendo un problema de 18 movimientos por medio de la heurstica de Mahattan asciende a 5421, mientras que con la utilizacin de una heurstica H2+2H3 el numero de nodos se reduce a 4709. Con las otras 2 heursticas utilizadas el nmero de nodos utilizados es infinitamente mayor a estas 2 ltimas, tanto que es capaz de desbordar la memoria del ordenador impidindose as llegar a solucin alguna.

De esta forma queda demostrado que la utilizacin de la heurstica H2+2H3 es la ms efectiva, no solo por la menor utilizacin de nodos, sino porque a la larga es la nica capaz de resolver problemas de este tipo con una complejidad muy elevada utilizando al hacerlo la menor cantidad de recursos posibles. Se adjunta la implementacin en java del Algoritmo A* del juego 8-puzzle.

6. JUEGO DE LAS 8-REINAS


El juego consiste en colocar 8 reinas en un tablero de ajedrez sin que se ataquen. Una posibilidad es intentar lograr una solucin de manera incremental, acercndose a la meta poco a poco siguiendo una serie de decisiones locales basadas en la informacin obtenida durante el proceso. Hay que asegurarse que la secuencia de transformaciones sea sistemtica, para no generar configuraciones repetidas ni excluir configuraciones deseables. Una forma de sistematizar la bsqueda es construyendo ms que transformando configuraciones. Por ejemplo el hecho de que deba de haber slo una reina por columna nos reduce el nmero de alternativas a menos de 8 en cada rengln. Sistematizamos la bsqueda para no recuperarnos de restricciones en operaciones futras, es decir, una vez que violamos una restriccin no podemos seguir aadiendo ms reinas para rectificarla. Posibles candidatos de heursticas: 1. Colocar reinas que dejen el mayor nmero de casillas sin atacar. 2. Colocar reinas cuyas diagonales amenacen menos casillas En la implementacin del algoritmo los nmeros significan lo siguiente: 0= casilla libre 1= reina 2= casilla atacada Se adjunta la implementacin en java del Algoritmo A* del juego 8-reinas. El usuario slo deber introducir la primera reina en la columna que desee de la primera fila, el programa introducir las siguientes reinas dependiendo de la heurstica elegida.

7. BIBLIOGRAFA
7.1. Internet: i i i i http://www.angelfire.com/oh4/ohcop/ClaseCap4nu.ppt http://dmi.uib.es/~abasolo/intart/2-juegos.html http://www.ii.uam.es/~fdiez/docencia/material/bh.pdf http://www.dc.fi.udc.es/.aios/~barreiro/iadocen/puzzle898/introalgoritmos.html i http://www.lsi.upc.es/~luigi/docencia/2bBusquedainformadayexploracion(es).p df

7.2. Bibliografa i [Rich, 94].- "Inteligencia Artificial". Segunda edicin. Elaine Rich. Kevin Knight. Editorial McGraw-Hill. (1994). i [Russell, 96].- "Inteligencia Artificial, un enfoque moderno". Stuart Russell. Peter Norvig. Editorial Prentice Hall. (1996).

También podría gustarte