BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
Problema de las 8 reinas rebaza castañeda jhoser alberto
1. UNIVERSIDAD NACIONAL DE TRUJILLO
FACULTAD DE CIENCIAS FISICAS Y
MATEMATICAS
ESCUELA ACADEMICO PROFESIONAL DE
INFORMATICA
Programación en Lógica
TEMA: Problema de las 8 Reinas
DOCENTE: Arturo Díaz Pulido
INTEGRANTES:
o REBAZA CASTAÑEDA, JHOSER ALBERTO
TRUJILLO – PERU
2014
3. 3
DEDICATORIA
Dedicado a toda la comunidad estudiantil de Ciencia de la Computación, con
el fin de promover la investigación, poniendo al alcance de sus manos un formato que
sabemos será de mucho agrado para las futuras aplicaciones que le puedan dar.
4. 4
INTRODUCCION
El problema de las ocho reinas se trata de un acertijo en el que se colocan
ocho reinas sin que se amenacen. Fue propuesto por el ajedrecista alemán Max
Bezzel en 1848. En el juego de ajedrez la reina amenaza a aquellas piezas que se
encuentren en su misma fila, columna o diagonal. Las 8 reinas consisten en colocar
sobre un tablero de ajedrez ocho reinas sin que estas se den jaques entre ellas.
5. 5
1.- MARCO TEORICO
Mucho se ha hablado sobre este tema, pero en verdad lo único que puede afirmarse
con propiedad es que el ajedrez es tan antiguo como la civilización, ya que en
excavaciones efectuadas en la Mesopotamia (región ubicada entre los ríos Tigres y
Eufrates) se han encontrado objetos que demostraban que el ajedrez o un juego
similar existía por lo menos 4000 años antes de Cristo.
Duncan Forbes en su libro "Historia del Ajedrez" (Londres 1860) señala que el
ajedrez tiene su origen en la India, más concretamente en el Valle del Indo, y data
del siglo VI D.C. y a SUSA BEN DAHIR el HINDI como su inventor.
El problema fue originalmente propuesto en 1848 por el ajedrecista Max Bezzel, y
durante los años, muchos matemáticos, incluyendo a Gauss y a Georg Cantor, han
trabajado en este problema y lo han generalizado a n-reinas. Las primeras soluciones
fueron ofrecidas por Franz Nauck en 1850. Nauck también se abocó a las n-reinas (en
un tablero de nxn de tamaño arbitrario). En 1874, S. Günther propuso un método para
hallar las soluciones usando determinantes, y J.W.L. Glaisher redefinió su
aproximación. Edsger Dijkstra usó este problema en 1972 para ilustrar el poder de la
llamada programación estructurada. Él publicó una descripción altamente detallada
del desarrollo del algoritmo de backtracking, "depth-first".
Este acertijo apareció en el popular juego de computadora de los '90 llamado "The
7th Guest".
6. 6
PROBLEMA DE LAS OCHO REINAS
El problema de las ocho reinas y en general de las N reinas, se basa en
colocar 8 reinas en un tablero de 8 8 (o N en un tablero de N N, si el problema se
generaliza), de forma que en no puede haber dos piezas en la misma línea horizontal,
vertical o diagonal.
Este programa has sido muy estudiado por los matemáticos. Se trata de un
problema NP-Completo que no tiene solución para N=2 y N=3. Para N=4 tiene una
única solución. Para N=8 hay más de 80 soluciones dependiendo de las restricciones
que se impongan.
Una forma de abordar el problema se lleva a cabo mediante la construcción de un
predicado en Prolog del tipo siguiente: reinas(N, Solucion), donde N representa las
dimensiones del tablero y el número de reinas y Solucion es una lista que contiene la
permutación de la lista de números que resuelven el problema. Los índices de dicha
lista representan la columna en la que se encuentra una reina y el número que
almacena la posición o índice representa la fila donde la reina está colocada. Así, para
el ejemplo mostrado en la Figura 1, tenemos que R=[2,4,1,3].
Este problema es resuelto, de modo clásico, por el método de prueba y error, luego se
adapta perfectamente a un algoritmo de backtracking. Básicamente, el problema se
reduce a colocar una reina, e intentar repetir el proceso teniendo en cuenta la reina
colocada. Si logramos poner todas las reinas el problema se ha resuelto, en caso
contrario, deshacemos lo que llevamos hasta ahora y probamos con otra combinación.
Por tanto, hemos de generar un conjunto de permutaciones y seleccionar aquella que
cumpla los requisitos impuestos por el juego.
7. 7
Número de soluciones
Soluciones al problema de las ocho reinas
El problema de las ocho reinas tiene 92 soluciones, de las cuales 12
son esencialmente distintas, es decir las 92 soluciones existentes se pueden obtener
a partir de simetrías, rotaciones y traslaciones de las 12 soluciones únicas, que se
muestran a continuación:
9. 9
Implementación
A continuación se muestra una posible implementación del anterior algoritmo
en Prolog.
% Autor: REBAZA CASTAÑEDA JHOSER ALBERTO
% Fecha: 01/07/2014
numeros(1).
numeros(2).
numeros(3).
numeros(4).
numeros(5).
numeros(6).
numeros(7).
numeros(8).
reinas:-numeros(X1), numeros(X2),numeros(X3), numeros(X4), numeros(X5),
numeros(X6), numeros(X7),numeros(X8),
solucion([X1,X2,X3,X4,X5,X6,X7,X8],1),
imprimir([X1,X2,X3,X4,X5,X6,X7,X8]).
solucion([],_).
solucion([X|Cola],C):-not(pertenece(X,Cola)),C1 is C+1, calculo(X,C,C1,Cola),
solucion(Cola,C1).
pertenece(X,[X|_]).
pertenece(X,[_|Z]):-pertenece(X,Z).
10. 10
calculo(_,_,_,[]).
calculo(X,Y,Y2,[X2|Cola]):-R1 is X-X2,Y3 is Y2+1,R2 is Y-Y2,Ab1 is abs(R1),Ab2
is abs(R2),Ab1=Ab2,calculo(X,Y,Y3,Cola).
imprimir([]).
imprimir([X|Cola]):-mostrarFila(1,X),writeln(''),imprimir(Cola).
mostrarFila(8,8):-write('R ').
mostrarFila(8,X):-8=X,write('0 ').
mostrarFila(X,X):-X<8,write('R '),X1 is X+1,mostrarFila(X1,X).
mostrarFila(C,X):-C<8,C=X,write('0 '),C1 is C+1,mostrarFila(C1,X).
11. 11
CONCLUCIÓN
El problema de las 8 reinas es un juego de habilidades en el cual
desarrollamos nuestras capacidades de lograr una mejor manera de ver las diferentes
propuestas que podemos dar a una incógnita como esta.
12. 12
REFERENCIAS BIBLIOGRÁFICAS.
http://es.scribd.com/doc/49374147/Problema-de-Las-8-Reinasl
http://www.uhu.es/nieves.pavon/pprogramacion/temario/tema4/tema4.html
http://ende.cc/agujero/juegos/8reinas_R.html
http://es.wikipedia.org/wiki/Problema_de_las_ocho_reinas
http://www.taringa.net/posts/ciencia-educacion/7197136/Ajedrez-El-
problema-de-las-8-damas.html
http://aitoreus.blogspot.com/2010/02/programita-de-las-8-reinas-con.html
Watkins, John J. (2004). Across the Board: The Mathematics of Chess
Problems. Princeton: Princeton University Press. ISBN 0-691-11503-6.
Brassard, Gilles; Bratley, Paul (1997). «Exploración de grafos». Fundamentos de
Algoritmia. Madrid: PRENTICE HALL. ISBN 84-89660-00-X.