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 2 3

8 0 4

7 6 5

5.2. 8-Puzzle de 6 movimientos

La primera matriz utilizada ha sido la siguiente (el 0 representa la casilla vaca):

1 3 0

6 2 4
8 7 5

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

1 3 0 1 0 3 1 2 3

6 2 4 6 2 4 6 0 4

8 7 5 8 7 5 8 7 5

1 2 3 1 2 3 1 2 3

0 6 4 8 6 4 8 6 4

8 7 5 0 7 5 7 0 5

1 2 3

8 0 4

7 6 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 N de movimientos = 6 Nodos generados = 21
H2 = 6 N de movimientos = 6 Nodos generados = 18
H3 = 11 N de movimientos = 6 Nodos generados = 20
H= H2+2H3 = 28 N de movimientos = 6 Nodos generados = 18

5.3. 8-Puzzle de 12 movimientos

Para la prueba de 12 movimientos hemos utilizado la siguiente matriz:

6 1 4

8 3 2

0 7 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 N de movimientos = 12 Nodos generados = 917


H2 = 10 N de movimientos = 12 Nodos generados = 38
H3 = 15 N de movimientos = 12 Nodos generados = 101
H= H2+2H3 = 40 N de movimientos = 12 Nodos generados = 40

5.4. 8-Puzzle de 18 movimientos

Para la prueba de 18 movimientos hemos utilizado la siguiente matriz:


6 3 1

8 0 4

7 5 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 N de movimientos = ? Nodos generados = ?


H2 = 10 N de movimientos = 18 Nodos generados = 5421
H3 = 14 N de movimientos = ? Nodos generados = ?
H= H2+2H3 = 38 N de movimientos = 18 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 http://www.angelfire.com/oh4/ohcop/ClaseCap4nu.ppt
i http://dmi.uib.es/~abasolo/intart/2-juegos.html
i http://www.ii.uam.es/~fdiez/docencia/material/bh.pdf
i http://www.dc.fi.udc.es/.aios/~barreiro/iadocen/puzzle8-
98/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