Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INFORME: PROBLEMA DE
LAS 8-TORRES
Inteligencia Artificial
Integrantes:
Huamn, Christopher
Rosas Quispe, Bryan
Chipana Caballero, Rommel
Cruz Bravo, Junior
Campos Rubina, Luis
UNMSM
Escuela de Software
Pgina
1
Inteligencia Artificial
INDICE
Introduccin...............................................................................2
Descripcin del problema..........................................................2
Alcance del Problema................................................................3
Descripcin del proyecto...........................................................3
Algoritmo usado........................................................................4
Fases del proyecto....................................................................4
Pgina
2
Inteligencia Artificial
Introduccin:
El problema de colocar 8 reinas en un tablero de ajedrez sin que se amenacen unas a otras es un problema muy
conocido en el rea de la computacin. De hecho, ha sido resuelto generalizado para N reinas en un tablero NxN
en distintos lenguajes de programacin, tales como: C, C++, Java, PROLOG, LISP, ML, etc. Sin embargo,
nosotros nos concentraremos en resolver el problema de colocar 8 torres en un tablero 8x8, el cual es un
problema mucho ms simple y manejable. Para ello utilizaremos el lenguaje Java. Si no tiene conocimiento
acerca de cmo jugar al ajedrez, no se preocupe, no hace falta que lo tenga. Todo lo que requiere saber para
entender el problema ser explicado en este enunciado.
Figura 1
Pgina
3
Inteligencia Artificial
En trminos bsicos, un tablero de ajedrez consta de una cuadrcula de 64 casillas, es decir, el tablero est
dividido en 8 filas y 8 columnas. La torre es una pieza del ajedrez que ataca o coloquialmente puede comer a
cualquier otra pieza que se encuentre en su misma fila o en su misma columna. En la figura siguiente se muestra
una torre en el tablero y todas las casillas que son atacadas por sta. En trminos ms formales, si una torre est
colocada en la casilla (i,j), sta estara amenazando a las casillas:
Pgina
4
Inteligencia Artificial
En trminos generales, este proyecto comprende principalmente dos tareas: encontrar soluciones al problema de
las 8 torres en un tablero 8x8; y al mismo tiempo mostrar dichas soluciones por pantalla. El clculo de las
soluciones debe ser implementado mediante un algoritmo de bsqueda DFS y BFS. Se debe tomar en cuenta que
el usuario pudiera proveer condiciones iniciales para buscar una solucin, es decir, el usuario pudiera colocar
cierta cantidad de torres y pedir al programa que busque las posibles soluciones dada esa configuracin. Por otra
parte, la interfaz con el usuario permitir mostrar por pantalla la solucin actual, destacando a la vez cuales
torres fueron colocadas inicialmente por el usuario y cuales fueron generadas por el programa. La solucin debe
ser dibujada mediante la impresin de caracteres en pantalla.
El programa que desarrollaremos debe incluir cinco opciones de men, Usaremos una distribucin de las
opciones, color del texto, color del fondo, encabezado, etc. La primera opcin, vaciar el tablero, eliminara todas
las torres que estuviesen en el tablero, sin importar si fueron colocadas por el usuario o el programa. La opcin
de colocar torre permite al usuario colocar en el tablero una torre. La idea es que el usuario intente encontrar una
solucin al problema, colocando las torres por su propia cuenta. Cuando el usuario selecciona esta opcin, el
programa debe solicitarle la fila y la columna donde desea colocar la torre y verificar que la torre a colocar no se
amenazara mutuamente con otra torre colocada previamente en el tablero. Adems, debe verificarse que no
existe una torre colocada anteriormente por el usuario en la posicin suministrada. En el caso de que exista una
torre colocada por el programa previamente en la posicin especificada por el usuario, la torre all colocada pasa
a ser parte de las torres del usuario. Si el usuario logra colocar las ocho torres sin que se amenacen, el programa
debe darle un mensaje de felicitacin. Cuando el usuario selecciona eliminar torre, el programa debe solicitar la
posicin de la torre que desea eliminar. Observe que en este caso es suficiente solicitarle el nmero de la fila de
la columna. Al seleccionarse la opcin de generar solucin, el programa intentar colocar las torres sin que se
amenacen a partir de las torres previamente colocadas por el usuario. Si en el tablero existan torres que coloc el
Pgina
5
Inteligencia Artificial
programa al generar la solucin anterior, stas deben borrarse antes de empezar a generar la nueva solucin. Y a
partir de las torres colocadas por el usuario, generar una solucin aleatoria vlida. Por supuesto, al haber
generado la solucin, el programa debe mostrar en el tablero la ubicacin de las torres. Siempre las torres
colocadas por el usuario deben ser de diferente color que las colocadas por el programa. Para encontrar
soluciones emplearemos un algoritmo aleatorio, es decir, el algoritmo colocar al azar torres en el tablero hasta
completar las 8 torres requeridas, verificando que cada torre que es colocada no se est amenazando mutuamente
con alguna colocada previamente. El algoritmo BFS y DFS.
Algoritmo usado:
Algoritmo principal que resolver el problema planteado ser un algoritmo de bsqueda DFS y BFS
Estado de torre:
Estado inicial es una vector de 64 casillas que representa la tablero de ajedrez las posiciones de las torres se
agregan de manera aleatoria despus se van ordenando de tal manera que no se crucen ninguna de las torres.
Pgina
6
Inteligencia Artificial
Meta:
Pgina
7
Inteligencia Artificial
Pgina
8
Inteligencia Artificial
Es meta solo si no se encuentran amenazadas la torres s se encuentra alguna amenaza seguir buscando hasta
que no encuentre ninguna amenaza.
Generar Sucesores:
Pgina
9
Inteligencia Artificial
Programa Completo
Pgina
10
Inteligencia Artificial
Pgina
11
Inteligencia Artificial
Pgina
12