Proyecto 8 Torres

Embed Size (px)

DESCRIPTION

8 torres .....

Citation preview

INFORME: PROBLEMA DE LAS 8-TORRES

Inteligencia Artificial

INFORME: PROBLEMA DE LAS 8-TORRESInteligencia Artificial

INDICE

Introduccin2Descripcin del problema2Alcance del Problema3Descripcin del proyecto3Algoritmo usado4Fases del proyecto4

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

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

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 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.

Meta:

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:

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 Torre3. 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 0

Pgina 9