Академический Документы
Профессиональный Документы
Культура Документы
LAS n REINAS
Un problema clsico que puede ser resuelto con un diseo Vuelta Atrs es el denominado de las ocho reinas y en general, de las n reinas. Disponemos de un tablero de ajedrez de tamao 8x8, y se trata de colocar en l ocho reinas de manera que no se amenacen segn las normas del ajedrez, es decir, que no se encuentren dos reinas ni en la misma fila, ni en la misma columna, ni en la misma diagonal
LAS n REINAS
Cualquier solucin a este problema estar representada por una 8-tupla [x1,x2, x3 , x4 , x5, x6, x7, x8 ] en la que cada xI representa la columna donde la reina de la fila i-sima es colocada. R
[ 4, 6, 8, 2, 7, 1, 3, 5 ]
R
R R
R R R
Posible solucin
LAS n REINAS
RESTRICCIONES
Para decidir en cada etapa cules son los valores que puede tomar cada uno de los elementos xi hemos de tener en cuenta lo que hemos denominado restricciones a fin de que el nmero de opciones en cada etapa sea el menor posible. En los algoritmos Vuelta Atrs podemos diferenciar dos tipos de restricciones:
1. Restricciones explcitas. Formadas por reglas que restringen los valores que pueden tomar los elementos xi a un conjunto determinado. En nuestro problema este conjunto es S={1,2,3,4,5,6,7,8}.
LAS n REINAS
RESTRICCIONES
2. Restricciones implcitas. Indican la relacin existente entre los posibles valores de los xi para que stos puedan formar parte de una n-tupla solucin. En el problema que nos ocupa podemos definir dos restricciones implcitas.
En primer lugar sabemos que dos reinas no pueden situarse en la misma columna y por tanto no puede haber dos xi iguales (obsrvese adems que la propia definicin de la tupla impide situar a dos reinas en la misma fila, con lo cual tenemos cubiertos los dos casos, el de las filas y el de las columnas). Por otro lado sabemos que dos reinas no pueden estar en la misma diagonal, lo cual reduce el nmero de opciones. Esta condicin se refleja en la segunda restriccin implicita que, en forma de ecuacin, puede ser expresada como |x x| |y y|, siendo (x,y) y (x,y) las coordenadas de dos reinas en el tablero.
ARBOL DE EXPANSION
[1, 2, -, -]2
[1, -, -, -]1 [1, 3, -, -]3 [1, 3, 2, -]4 [1, 3, 4, -]5 [1, 4, 2, -]7
[1, 4, 2,3]8
[-, -, -, -] 0
[2, -, -, -]10
[1, 4, -, -]6
[2, 1, -, -]11
[1, 4, 3, -]9
[2, 3, -, -]12
[2, 4, -, -]13 [ 2,4,1, -]13
[2, 4, 1, 3]15
ARBOL DE EXPANSION
Configuracin final
8 REINAS
Por ltimo se estudiar como encontrar todas las soluciones posibles partiendo de una misma casilla.
ejex = [2, 1, -1, -2, -2, -1, 1, 2] ejey = [1, 2, 2, 1, -1, -2, -2, -1]
#include<stdio.h> #include "conio.h" #define N 8 #define ncuad N*N void mover(int tablero[][N],int i,int pos_x,int pos_y,int *q); int ejex[8]={2,1,-1,-2,-2,-1,1,2}; int ejey[8]={1,2, 2, 1,-1,-2,-2,-1};
Objetivo: Partiendo de la entrada del laberinto, sealar una ruta que nos gue hasta la salida.
Una solucin que nos permitira alcanzar nuestro objetivo sera la ruta mostrada con asteriscos en la siguiente figura:
La inicializacin de la matriz que aqu se muestra corresponde al laberinto presentado en la figura del inicio.
Los caminos estn formados de espacios libres (E's). Observe el contorno del laberinto, formado por L's, y los puntos de entrada y salida.
LABERINTO