Está en la página 1de 11

Posgrado en Ciencias Computacionales

Proyecto 1:
Agente que resuelve problemas con base en
bsquedas.
PUZZLE 8
Sistemas Inteligentes
Catedrtico: Dr. Pablo H. Ibargengoytia G.

Integrantes del Equipo:


Gustavo Sotelo Jurez
Matrcula A00375662

Francisco Ral Uribe Cornejo


Matrcula A00375673

Haziyade Cruz Angel


Matrcula A01125316

Ulises Cern Salas


Matrcula A01128360

Xochitepec, Morelos, a 9 de Septiembre de 2009.

INDICE
Pgina

Introduccin.

Objetivo.

Descripcin del problema.

Descripcin del Modelo Computacional.

Descripcin de los algoritmos utilizados.

Interfaz de Usuario.

Tabla comparativa del desempeo de los algoritmos.

Conclusiones.

10

Cdigo fuente del proyecto.

11

Bibliografa.

11

Introduccin.
El 8 Puzzle es un juego que consta de una matriz con una longitud de tres
elementos por lado (9 casillas), en la cual son acomodadas 8 fichas, quedando un
espacio en blanco. El problema consiste en que dada una configuracin inicial de las
fichas (desacomodadas), desplazando las fichas de manera horizontal y vertical en el
espacio en blanco, se pueda lograr llegar a una configuracin final determinada.
Para poder dar solucin a este problema se han utilizado diferentes algoritmos,
los cuales se encargan de realizar una bsqueda a travs del espacio de posibles estados,
lo que pretenden estos mtodos es mantener y ampliar un conjunto de secuencias de
soluciones parciales para poder llegar al ptimo [1].

Objetivo.
Disear un agente inteligente que resuelva el problema del rompecabezas (8
puzzle) en base a bsquedas. El diseo incluye un programa estructurado en lenguaje
Java que permite la experimentacin de diferentes mtodos de bsqueda y diferentes y
nuevas mtricas de desempeo a travs de una interfaz grfica para el usuario (GUI),
tomando como gua las siguientes:
Etapas del Proyecto.
a) Definicin de las estructuras de datos u objetos para la representacin del
problema, de los estados del juego y de la expansin del rbol de bsquedas.
b) Diseo de los algoritmos del agente.
c) Diseo de la salida de resultados.
d) Definicin de la GUI (interfaz grfica de usuario).
e) Experimentacin con diferentes algoritmos y diferentes mtricas.

Descripcin del problema.


Como ya se ha mencionado en la introduccin, se tiene como entrada para el
algoritmo una configuracin inicial (figura 1), y los nicos movimientos permitidos
dependiendo de la posicin en que se encuentre el espacio en blanco sern los
siguientes:

 Desplazar el espacio en blanco hacia arriba


 Desplazar el espacio en blanco hacia abajo
 Desplazar el espacio en blanco hacia la derecha
 Desplazar el espacio en blanco hacia ala izquierda.

Lo que se pretende es que el algoritmo devuelva como salida la configuracin final


(figura 2) con el menor nmero de movimientos posibles como se muestra a
continuacin:

Figura 1: Configuracin inicial.

Figura 2: Configuracin final.

Los movimientos que se siguieron para llegar a la configuracin final con el menor
nmero de movimientos posibles para este ejemplo fueron los siguientes (recordamos
que los movimientos hacen referencia al espacio en blanco): 1) arriba, 2) arriba, 3)
izquierda, 4) abajo, 5) derecha [2].

Descripcin del Modelo Computacional.


Para representar los estados del juego se utilizaron dos esquemas. Como el juego
presenta una naturaleza matricial, es decir son nmeros ordenados en filas y en
columnas, se decidi utilizar una matriz para representarlo. Es por esto que se utiliz un
arreglo bidimensional de enteros para que funcionara como matriz. Pero adems se
considero una representacin de forma vectorial con el fin de economizar memoria. Para
esto se utiliza un nmero entero que en base decimal representa las filas del arreglo en
un solo rengln. La siguiente figura 3 ilustra un ejemplo de cmo se emplean dichas
estructuras.

Figura 3: Estructuras de datos para la representacin de los estados.

El rbol de bsquedas que se utiliza se hizo a partir de la clase Nodo, que es una
clase interna del agente. Cada nodo guarda informacin sobre su estado, el costo
(operador aplicado), el nodo padre y los hijos. Para los hijos de cada nodo se consider
utilizar un arreglo de nodos que representan a los cuatro movimientos posibles en el
caso de que la casilla vaca se encuentre en el centro.

Descripcin de los algoritmos utilizados.


Para la realizacin de este proyecto se utilizaron seis diferentes algoritmos. Entre
estos hay dos algoritmos ciegos as como cuatro algoritmos heursticos (en dos de los
cuales se consideraron nuevas mtricas) como se muestra a continuacin en el cuadro
sinptico:

Ciegos

- Profundidad iterativa
- Limitado por profundidad

Algoritmos
Heursticos

- Mejor primero
- A* (Russell)
- A* Optimo
- A* con Diagonales
- A* Pacmaniano

Bsqueda limitada por profundidad


Se pone un lmite a la bsqueda preferente por profundidad. Si el lmite fuera
igual a la profundidad del estado meta ms superficial, se reduce al mnimo la
complejidad espacio-temporal.

Bsqueda por profundidad iterativa


Se emplea la bsqueda con lmite de profundidad, pero los lmites van
aumentando hasta encontrar una meta. Es completa y ptima; su complejidad temporal
es O(bd) y su complejidad espacial es O(bd).

Figura 4: Estructura de nodos de la bsqueda por profundidad iterativa.

Algoritmo Mejor Primero (Best-First)


Este algoritmo, combina las ventajas de los algoritmos primero en profundidad y
primero en amplitud. Sigue un camino a la vez, pero puede cambiarse a otro camino que
parece ms prometedor que el que est siguiendo.
En este sentido, puede considerarse que es un algoritmo que realiza su proceso de
bsqueda en un grafo de tipo O, ya que todos sus ramales representan una alternativa
de solucin. Para su operacin, el algoritmo necesita dos listas de nodos y una funcin
heurstica que estime los mritos de cada nodo que se genere:
1. Abiertos: Es una variable que contiene los nodos que han sido generados. La
funcin heurstica ha sido aplicada a ellos, pero todava no han sido examinados,
es decir no se han generado sus sucesores. abiertos puede considerarse como una
cola de prioridades en la que los elementos con mayor prioridad son los que
tienen los valores ms prometedores, dados por la funcin heurstica.
2. Cerrados - Es una variable que contiene los nodos que han sido examinados. Es
necesario tener esta informacin, para que la bsqueda sea en un grafo y no en
un rbol.
3. Funcin Heurstica - Permite que el algoritmo busque primero por senderos que
son o parecen ms prometedores.
Para muchas aplicaciones, es conveniente definir esta funcin f', como la suma de
dos, que se las llamar g y h'. La funcin g es una medida del costo de llegar desde el
nodo inicial al nodo actual. La funcin h' es una estimacin del costo adicional para
llegar desde el nodo actual al estado objetivo. Aqu es donde se explota el conocimiento
que se dispone sobre el dominio del problema. Es decir, la funcin combinada f'
representa una estimacin del costo de llegar desde el estado inicial hasta el estado
objetivo, siguiendo el sendero que ha generado el nodo actual. Si el nodo actual ha
generado ms de un sendero, el algoritmo deber dejar registrado slo el mejor.

Algoritmo A*
A* es un algoritmo informado que basa su comportamiento en la evaluacin de
una funcin expresada del siguiente modo:

f(n) = g(n) + h(n)

La funcin se encuentra compuesta por:


 g(n): es el costo de las movidas realizadas.
 h(n): es la funcin heurstica. Representa el costo estimado del mejor camino.
Dicha estimacin debe ser realizada por defecto, es decir, siempre menor o igual
a la real.
En bsqueda de caminos, la funcin heurstica suele ser el camino recto hacia la
meta, ya que no importa como sea el mapa, es imposible que exista camino de costo
menor. El modo de realizar el clculo de la distancia necesaria para llegar a la meta
depende del tipo de movidas permitidas.
Si solo podemos movernos vertical y horizontalmente podremos realizar el clculo de
la distancia Manhattan, que consiste en sumar la cantidad de bloques en horizontal y
vertical que restan para llegar a la meta. Si adems se permiten movidas diagonales,
deberemos aplicar Pitgoras y el clculo ser la raz cuadrada de la suma de los
cuadrados de los catetos.

Heursticas de los algoritmos no ciegos.


Para los algoritmos no ciegos se implementaron las siguientes mtricas con dos
modificaciones alternativas a la mtrica del algoritmo A*:
 Mejor Primero: Suma de las distancias Manhattan (Distancia en cuadricula de
cada ficha hacia su posicin meta).
 A* (Russell): La suma de las fichas errneas + Distancia Manhattan.
 A* Optimo: Con 3 heursticas. La suma de las casillas diferentes + la suma de
vecinos errneos de cada ficha colocada en su lugar + 2 * Suma de la distancia
Manhattan.
 A* Diagonal: Suma de las distancias Manhattan permitiendo movimientos de
manera diagonal.
 A* Pacman: Suma de las distancias Manhattan considerando las paredes como una
envolvente cilndrica (es posible que una ficha se desplace de un extremo al otro
considerando un solo movimiento) (Figura 5).

Figura 5: Heuristica A* Pacman.

Interfaz de Usuario.
La interfaz con el usuario es grfica. El juego se representa con un conjunto de
botones interactivos que se usan para jugar 8 puzzle. Cada vez que se presiona un botn
este cambia a la posicin de la casilla vaca, el juego permite interactuar con l para
que el usuario lo resuelva por s solo. As tambin la interfaz permite definir un estado o
configuracin inicial al juego as como un estado final o meta.
Lo anterior se hace a travs de una matriz de reas de texto donde se escriben
las posiciones y se representa la casilla vaca con 0. Al presionar el botn Establecer
Inicio se actualiza al agente con las configuraciones que va a utilizar en la bsqueda.
Del ComboBox se puede seleccionar el algoritmo o mtodo de bsqueda que se desea
utilizar. El agente comienza a resolver el problema cuando se presiona el botn
Resulvelo!

Figura 6: Interfaz de la aplicacin.

Una vez que haya terminado el proceso, una ventana notifica la cantidad de
movimientos que tiene la solucin, el tiempo que tard (en milisegundos) y el nmero de
comparaciones realizadas. Esta misma ventana pregunta al usuario si quiere ver la
animacin de la solucin, esto es, que el tablero comenzar a moverse automticamente
hasta llegar a la solucin, de acuerdo al nmero de movimientos.

Figura 7: Ventana de para solucin encontrada.

Tabla comparativa del desempeo de los algoritmos.


Para poder probar la eficiencia de los algoritmos utilizamos, usamos un caso de
estudio que puedan resolver los 4 algoritmos. El caso es el siguiente:

Figura 8: Caso prctico implementado en la aplicacin.

Desempeos de los algoritmos


La siguiente tabla muestra los resultados obtenidos con el caso de prueba que se
muestra en la Figura 8.
Movimientos

Tiempo de
Ejecucin
(milisegundos)

Nmero de
Comparaciones de la
agenda.

Limitado por
Profundidad

16

31

40

Profundidad
Iterativa

16

153

15

Algoritmo

El mejor Primero
A* (Russell)
A* Optimo
A* con Diagonales
A* Pacmaniano

Como se puede ver en este caso hay una diferencia significativa con el resultado
arrojado en el Algoritmo ciego Profundidad Iterativa, respecto con los Heursticos, entre
ellos el considerado como A* Optimo.

Conclusiones.
Aunque el funcionamiento de los algoritmos se basa en el uso de rboles de
bsqueda, las diferentes formas de resolver los problemas redundan en diferentes
desempeos. Sin embargo a pesar de encontrar buenas heursticas para los algoritmos no
ciegos, hay casos en el que la aplicacin necesita de mucha memoria y tiempo de
procesador para poder encontrar la solucin ms ptima.
Es bueno tener informacin en una bsqueda por que te facilita mucho encontrar
la meta ms ptima, si se manejan bien las heursticas puede ayudar a ahorrar muchos
pasos aun si el lenguaje de programacin y las estructuras no son las ms eficientes.
Los algoritmos ciegos nos ayudan a encontrar la solucin sin informacin, es de
gran ayuda pero en este caso vimos que dejan de ser lo ideal ya que consumen mucha
memoria por que generan muchos nodos los van aumentado el tiempo y la memoria de
manera exponencial.
Despus de haber realizado una serie de pruebas, se determin que algunas de
las configuraciones iniciales respecto a las finales determinadas, en algoritmos ciegos y
de heursticas distintas de la A* Optimo, no encontraba solucin.

10

Cdigo fuente del proyecto.


http://campus.cva.itesm.mx/furibe/SistemasInteligentes/puzzleSolver.zip

Bibliografa.
Russell, Stuart; Norvig, Peter. Artificial Intelligence A Modern Approach. New Jersey:
Prentice Hall.
[2] 8puzzle.com. (2008). 05-Septiembre-2009, Sitio web: www.8puzzle.com/index.html
[1]

11

También podría gustarte