Está en la página 1de 12

Inteligencia Artificial

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

Proyecto: El Problema de las 8 Torres

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

Descripcin del problema:

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:

Horizontales: (i,k) 1 < k > 8

Verticales: (k,j) 1 < k > 8

Pgina
4

Inteligencia Artificial

Alcance del proyecto:

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.

Descripcin del proyecto:

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

Fases del proyecto:


Fase 1:

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

Es mtodo generarSucesores(), contiene el algoritmo bsico que se describe a continuacin


1. Primero se recorre el tablero 8x8, el recorrido es desde el borde superior izquierda (posicin 0)
hasta el borde inferior derecho (posicin 63).
2. Se hace una comparacin, para capturar a la Torre
3. Se verifica que la torre no tenga amenaza en sus respectivos ejes, tanto en el eje X como en
el eje Y. Si la torre capturada o analizada presenta amenaza en su alrededor donde se puede
desplazar, entonces se cuenta una amenaza con respecto al eje donde est dicha amenaza.
4. Si la Torre en alguno de sus ejes tiene escape o no tiene amenaza, se procede a desplazar la
torre por dicho eje.
5. En caso de que la torre sea amenazada por ambos ejes, guardar los espacios libres donde
puede avanzar, esto es para en caso de que todas la torres se amenacen y entonces capturar a la
torre con mayor posibilidad de escape.

Programa Completo

Pgina
10

Inteligencia Artificial

Pgina
11

Inteligencia Artificial

Pgina
12

También podría gustarte