Вы находитесь на странице: 1из 6

Optimizacion Combinatorial

El Problema de las N-Reinas


Andreas Spading
y
Pablo Itaim Ananias
Valparaso, 12 de Abril del 2005
Resumen
El Problema de las n-Reinas (n-Queen Problem) es muy antiguo, siendo propuesto por primera vez
en el a no 1848 y consiste en encontrar una asignacion a n reinas en un tablero de n x n de modo tal, que
estas no se ataquen. Este trabajo presenta el problema, muestra un ejemplo sencillo y profundiza en el
estado del arte de las formas o metodos de resolucion.
1. Introduccion:
El Problema de las n-Reinas fue propuesto para n = 8 en el a no 1848 en un trabajo anonimo [Ano48],
siendo posteriormente atribuido a Max Bezzel. Sin embargo, la Publicacion detallada mas antigua que se
conoce fue realizada por Nauck [Nau50] en 1850. Ese mismo a no, Gauss postulo la existencia de 72 soluciones
para n = 8. Posteriormente, en el a no 1874, Glaisher [Gla74] probo la existencia de 92 soluciones.
La Investigacion sobre este tema no ha parado hasta hoy por lo que existe una amplia variedad de
Algoritmos sugeridos para su resolucion. Muchas de las soluciones planteadas se basan en proporcionar una
formula especca para colocar las reinas o extrapolar conjuntos peque nos de soluciones para proporcionar
soluciones para valores de n mas grandes.
Observaciones empricas de problemas de peque no tama no muestran que el n umero de soluciones crece
en forma exponencial al ir aumentando el valor de n [SG94].
2. Denicion del Problema:
El Problema de las n-Reinas consiste en encontrar una distribucion de n reinas en un tablero de n x n
de modo tal, que estas no se ataquen. As, no pueden encontrarse dos reinas en la misma la, columna o
diagonal.
Este Problema tiene 2 Versiones. La mas simple consiste en encontrar exactamente una solucion valida
para un valor n dado. La otra version, mas difcil, consiste en encontrar todas las soluciones posibles para
un valor n.
Se puede observar que este problema tiene una solucion (Q(1) = 1) para n = 1, no tiene solucion para
n = 2 y n = 3 y tiene 2 soluciones para n = 4. La Tabla 1 muestra el n umero total de Soluciones Q(n) para
4 n 20 [VH04] [IZ94].
Para solucionar este problema, se han dise nado numerosos Algoritmos basados en algunos como Back-
tracking, Algoritmos Geneticos, B usqueda local con resolucion de conictos, programacion entera y redes
neuronales entre otros. Ademas, el Problema de las n reinas pertenece a la clase de problemas NP-completos
[Cra92], pero se resuelve facilmente en tiempo polinomial cuando solamente se busca una solucion [SG94].
Existen soluciones analticas donde se da una formula explcita para la localizacion de las reinas o bien se
encadenan soluciones obtenidas para valores menores de n [AY89] [Ber91]. El problema con estas soluciones
es que generan un n umero muy peque no de soluciones.
Backtracking, en general es ineciente y para el problema de las n-reinas no es facil encontrar soluciones
para n > 100 en tiempos razonables [SS86], sin embargo, Kale [L.V92] dise no un algoritmo especializado
de backtracking que consigue resolver el problema hasta tama nos del orden de 1.000. Se han realizado
numerosas aplicaciones de algoritmos geneticos para resolver el problema de las n-reinas [Cra92] [ERR94]
n Q(n)
4 2
5 10
6 4
7 40
8 92
9 352
10 724
11 2.680
12 14.200
13 73.712
14 365.596
15 2.279.184
16 14.772.512
17 95.815.104
18 666.090.624
19 4.968.057.848
20 39.029.188.884
Cuadro 1: N umero total de soluciones Q(n) para 4 n 20
[HTA92] [Hyn00], pero se han visto inecientes a un cuando se hayan probado diversas representaciones del
problema y diversos operadores.
Por otra parte, los Algoritmos para Programacion Entera son tpicamente exponenciales y consecuente-
mente consiguen resolver problemas de tama no muy peque no [FJ84].
Un Algoritmo de Redes Neuronales utilizando un modelo modicado de Hopeld [ASB00] parece funcionar
mejor que otros modelos de redes neuronales presentados, pero solo se publican resultados para valores de n
peque nos.
La B usqueda local con minimizacion de conictos [SG94] parece ser el mejor algoritmo encontrado hasta
ahora. Este algoritmo de Socic y Gu tiene tiempo de ejecucion lineal por lo que es extremadamente rapido.
En su articulo, ellos muestran que su algoritmo es capaz de obtener una solucion para cualquier valor de
n, n < 1000 en menos de 0.1 segundo y 55 segundos para n = 3,000,000, en un computador del a no 94 (IBM
RS 6000/530). Ahora, dada la naturaleza probabilstica del algoritmo, no se tiene garanta del tiempo del
peor caso del algoritmo, pero en la practica muestra un excelente desempe no y un comportamiento muy
robusto. Hynek [Hyn00] dise no una Heurstica basada en una fase de preprocesamiento y posteriormente
aplica un operador de mutacion basado en b usqueda local. Los resultados computacionales muestran que el
algoritmo es efectivo y logra soluciones hasta n = 1000 en tiempos razonables.
3. Ejemplo:
Para visualizarlo mejor, analizaremos el problema de las n reinas para n = 6. Como ya hemos visto, esto
consiste en ubicar 6 reinas en un tablero de 6x6 sin que ellas se ataquen. De acuerdo a la Tabla 1, para
este caso existen 4 soluciones validas. Dichas Soluciones se presentan en los Gracos de la Figura 1. Estas
soluciones fueron encontradas utilizando el modelo que se explica a continuacion.
2
Figura 1: Soluciones al Problema de las 6-reinas
4. Modelo en extenso:
Para llegar a la solucion, se modelo el problema teniendo presente lo siguiente:
La Funcion Objetivo no tiene un uso practico ya que se sabe a priori el valor de n. As, el problema se
presenta como un CSP.
Dos reinas no pueden estar en la misma Fila.
Dos reinas no pueden estar en la misma Columna.
Dos reinas no pueden estar en la misma Diagonal.
Dado lo anterior, se propuso el siguiente modelo:
Variables: X
ij
= 1 si existe una reina en la posicion (i, j) y 0, sino.
Dominio: {0, 1}
Restricciones:
n

j=1
X
ij
= 1 ; i = {1, , n} Restriccion en las Filas
n

i=1
X
ij
= 1 ; j = {1, , n} Restriccion en las Columnas
n

i=1
n

j=1

i+j=k
X
ij
1 ; k = {3, , 2n 1} Restriccion en las Diagonales 1
n

i=1
n

j=1

ij=k
X
ij
1 ; k = {1 n, , n 1} Restriccion en las Diagonales 2
As, si n = 6, tendremos las variables X
11
, X
12
, , X
66
, correspondientes a las 36 casillas del Tablero.
Ahora bien,

n
j=1
X
ij
= 1; i = {1, , n}, signica que en una la determinada tiene que haber 1 unica
reina. De la misma forma,

n
i=1
X
ij
= 1; j = {1, , n}, signica que en una columna determinada tiene
que haber 1 unica reina.
Finalmente,
n

i=1
n

j=1

i+j=k
X
ij
1; k = {3, , 2n1} y
n

i=1
n

j=1

ij=k
X
ij
1; k = {1 n, , n1} me aseguran
que en una diagonal, a lo mas habra 1 reina .
3
5. Resolucion:
Una vez presentado el modelo, hay que llevarlo a un lenguaje que pueda ser interpretado por una aplicacion
que lo pueda resolver. En nuestro caso, utilizamos el Programa que utiliza AMPL, que es un lenguaje para
modelar matematicamente. Dentro de ese Lenguaje se pueden elegir entre varios algoritmos para solucionar
los problemas. Para modelar el Problema de las 6-reinas, utilizamos lp solve. Esta denicion se especica
agregando la linea de codigo ampl:option solver lp solve.
Una vez denido el algoritmo a utilizar, debemos traspasar nuestro modelo a la sintaxis utilizada por el
lp solve, quedando de la siguiente forma:
nreinas.mod:
param t := 6; ajuste de ancho del Tablero
set FILAS := {1..t};
set COLUMNAS := {1..t};
var x{FILAS,COLUMNAS} binary; x
i,j
es 1 si hay una reina en la posicion (i, j), sino 0.
verif columnas {j in COLUMNAS}:
sum {i in FILAS} x[i, j] = 1;
verif las {i in FILAS}:
sum {j in COLUMNAS} x[i, j] = 1;
verif diagonal1 {k in 3..2 t 1}:
sum {i in FILAS, j in COLUMNAS: i + j = k} x[i, j] <= 1;
verif diagonal2 {k in (t 2)..(t 2)}:
sum {i in FILAS, j in COLUMNAS: i j = k} x[i, j] <= 1;
Al ejecutar el programa con los datos anteriores, este arrojo los resultados que se muestran a continuacion:
Ejecucion en AMPL:
Andis-Compi:./ampl
ampl: model nreinas.mod;
ampl: option solver lpsolve;
ampl: solve;
LP SOLVE 4.0.1.0: optimal, objective 0
483 simplex iterations
61 branch & bound nodes: depth 10
ampl: display x;
x [*,*] ;
: 1 2 3 4 5 6
1 0 0 0 0 1 0
2 0 0 1 0 0 0
3 1 0 0 0 0 0
4 0 0 0 0 0 1
5 0 0 0 1 0 0
6 0 1 0 0 0 0
ampl:quit;
Andis-Compi:
Repitiendo la accion, el programa puede entregar todas las soluciones posibles. En este caso, las soluciones
estan gracadas en la Figura 1.
6. Aplicaciones:
El Problema de las n-reinas es conocido usualmente como uno relacionado a un juego y tambien como
un problema apropiado para probar algoritmos nuevos. Sin embargo, tiene otras aplicaciones ya que se le
4
considera como un modelo de maxima cobertura. Una solucion al problema de las n-reinas garantiza que cada
objeto puede ser accesado desde cualquiera de sus ocho direcciones vecinas (dos verticales, dos horizontales
y cuatro diagonales) sin que tenga conictos con otros objetos.
Algunas aplicaciones posibles son:
Control de Traco Aereo
Sistemas de Comunicaciones
Programacion de Tareas Computacionales
Procesamiento Paralelo

Optico
Compresion de Datos
Balance de Carga en un Computador multiprocesador
Ruteo de mensajes o datos en un Computador multiprocesador
etc.
Un ejemplo practico de una aplicacion del problema de las n-reinas es el siguiente: para lograr el mayor
ancho de banda posible en un sistema de comunicaciones de banda estrecha y direccional, se deben ubicar los
n transceptores de forma tal que no se intereran entre ellos. Con los n transceptores ubicados en patrones sin
conictos, lo que corresponde a una solucion del problema de las n-reinas, cada transceptor puede comunicarse
con el mundo exterior en forma libre en 8 direcciones sin que sea inhibido por otro transceptor. La Figura 2
muestra una distribucion para 10 transceptores. Esta distribucion corresponde a una de las soluciones para
el problema de las 10-reinas.
Figura 2: Ubicacion de 10 Transmisores/Receptores sin conicto entre ellos (Cada uno puede comunicarse
en cualquier direccion vertical, horizontal o diagonal
Referencias
[Ano48] Anonymous. Unknown. Berliner Schachgesellschaft, 3:363, 1848.
[ASB00] I.N. da Silva A.N. Souza and M.E. Bordon. A modied hopeld model for solving the n-queen problem.
IJCNN, pages 509514, 2000.
[AY89] B. Abramson and M. Yung. Divide and conquer under global constraints: A solution to the n-queens
problem. J. Parallel Distrib. Computing, 6:649662, 1989.
[Ber91] B. Bernhardsson. Explicit solution to the n-queens problems for all n. ACM SIGART Bulletin, 2(7), 1991.
[Cra92] K.D. Crawford. Solving the n-queens problem using genetic algorithms. In Proceedings ACM/SIGAPP
Symposium on Applied Computing, Kansas City, pages 10391047, 1992.
[ERR94] A.E. Eiben, P.-E. Raue, and Zs. Ruttkay. Solving constraint satisfaction problems using genetic algorithms.
In Proceedings of the 1st IEEE World Conference on Computational Intelligence, pages 542547. IEEE
Service Center, 1994.
5
[FJ84] L.R. Foulds and D.G. Johnson. An application of graph theory and integer programming: Chessboard
nonattacking puzzles. Mathematical Magazine, 57:95104, 1984.
[Gla74] J.W.L. Glaisher. Philosophical Magazine, 18:457467, 1874.
[HTA92] Abdollah Homaifar, Joseph Turner, and Samia Ali. The n-queens problem and genetic algorithms. In
Proceedings IEEE Southeast Conference, Volume 1, pages 262267, 1992.
[Hyn00] J. Hynek. The n-queens problem revisited. In Proceedings of the ICSC, Symposia on Intelligent Systems
and Applications ISA 2000. ICSC Academic Press., 2000.
[IZ94] I.Vardi I.Rivin and P. Zimmermann. The n-queens problem. The American Mathematical Monthly, 101:629
639, 1994.
[L.V92] L.V.Kale. An almost perfect heuristic for the n nonattacking queens problem. Information Processing
Lettes., 66:375379, 1992.
[Nau50] Franz Nauck. Schach. Illustrierter Zeitung, pages 361352, 1850.
[SG94] Rok Sosic and Jun Gu. Ecient local search with conict minimization: A case study of the n-queens
problem. Knowledge and Data Engineering, 6(5):661668, 1994.
[SS86] H.S. Stone and J.M. Stone. Ecient local search with conict minimization: A case study of the n-queens
problem. IBM J. Res. Develop., 30(3):242258, 1986.
[VH04] Alfredo Candia Vejar and Cesar Astudillo Hernandez. Algoritmos para el problema de las n-reinas. In Mauri-
cio Solar, David Fernandez-Baca, and Ernesto Cuadros-Vargas, editors, 30ma Conferencia Latinoamericana
de Informatica (CLEI2004), pages 160167. Sociedad Peruana de Computacion, September 2004. ISBN
9972-9876-2-0.
6

Вам также может понравиться