SlideShare una empresa de Scribd logo
1 de 11
ESCUELA DE INGENIERÍA INFORMÁTICA
INFORME
DEL PROYECTO DE:
PROGRAMACION LOGICA
PROYECTO ACADÉMICO:
“Problema del juego de las 8 Reinas e Implementación en Swi Prolog”.
Estudiante(s):
Zuñiga Joaquin, Cesar
Docente:
Ing. Arturo Díaz Pulido
Ciclo Académico:
VII ciclo
ESCUELA DE I NFORMÁTI CA
2014-I
Trujillo – Perú
Índice
Dedicatoria ................................................................................................................................. 3
Introducción ............................................................................................................................... 4
1. Capítulo I: Marco Teórico ............................................................................................... 5
1.1 Realidad Problemática.............................................................................................. 5
2. Capítulo II: Conceptos..................................................................................................... 5
2.1 Backtracking.............................................................................................................. 5
2.2 Búsqueda en Profundidad ........................................................................................ 6
2.2.1 Definición................................................................................................... 6
2.3 Problema de las 8 reinas............................................................................................. 7
2.3.1 Definición................................................................................................... 7
2.3.2 Historia....................................................................................................... 8
2.3.3 Planteamiento del Problema ..................................................................... 8
2.3.4 Algoritmo ................................................................................................... 9
2.4 Programa en Prolog .................................................................................................. 9
Conclusiones............................................................................................................................. 10
Referencias............................................................................................................................... 11
Ha Dios, quien ha permitido que la sabiduría dirija y guíe nuestros pasos.
Ha sido Dios, quien ha iluminado mi sendero cuando más oscuro ha estado, Ha sido el
creador de todas las cosas, el que me ha dado fortaleza para continuar cuando a punto de
caer he estado; por ello, con toda la humildad que de nuestro corazón puede emanar,
dedicamos en primer lugar este trabajo a Dios.
De igual manera, a nuestros padres, quienes han sabido formarnos con buenos
sentimientos, hábitos y valores, los cuales nos han ayudado a salir adelante buscando
siempre el mejor camino.
INTRODUCCION
El problemafue originalmente propuesto en 1848 por el ajedrecista Max Bezzel, y durante los años,
muchosmatemáticos,incluyendoaGaussy a Georg Cantor,han trabajadoeneste 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
propusoun métodopara hallar las soluciones usando determinantes, y J.W.L. Glaisher redefinió su
aproximación.
En pocas palabras, este problema trata sobre cómo se deberían ubicar 8 reinas en un tablero de
ajedrezde dimensión8de tal forma que ninguna amenace a la otra. Un requisito simple al ser leído
pero que hizo pensar a muchos matemáticos de aquella época como Gauss y Georg Cantor.
Los lenguajesde programaciónenlosque se haimplementadoesteproblema son distintos, pero en
esta monografía nos centraremos en el lenguaje Prolog (Programación Lógica), que con sus
conceptos de unificación y backtracking (vuelta atrás) hacen de la implementación de este
problema, algo mucho más sencillo.
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".
I. Capítulo 1: Marco Teórico
1.1. Realidad Problemática
El problema de las ocho reinas es un pasatiempo en el que se colocan ocho
reinas sin que se amenacen. En el juego del ajedrez la reina amenaza a aquellas
piezas que se encuentren en su misma fila, columna o diagonal. El juego de las 8
reinas consiste en colocar sobre un tablero de ajedrez ocho reinas sin que estas
se amenacen entre ellas.
Trataremos de mostrar con un ejemplo de forma general la importancia actual
que este tipo de paradigmas tiene. En concreto, el paradigma declarativo lógico y,
por supuesto, el lenguaje Prolog.
Prolog se puede utilizar para resolver, básicamente, cualquier tipo de problema.
Principalmente es útil en la gestión de Juegos, en Inteligencia Artificial y Sistemas
Expertos, como lenguaje especialmente pensado para construir bases de
conocimientos basados en la lógica que forman parte importante de cualquier
agente inteligente, en la construcción de Compiladores e Intérpretes, en el
Reconocimiento del Lenguaje Natural, etc.
II. Capítulo 2: Conceptos
2.1. Backtracking:
2.1.1. Definición:
También llamada búsqueda atrás, es una técnica de programación para hacer
búsqueda sistemática a través de todas las configuraciones posibles dentro
de un espacio de búsqueda.
Para lograr esto, los algoritmos de tipo backtracking construyen posibles
soluciones candidatas de manera sistemática. En general, dado una solución
candidata s:
a) Verifican si s es solución. Si lo es, se procesa esta solución
(dependiendo del problema).
b) Construyen todas las posibles extensiones de s, e invocan
recursivamente al algoritmo con todas ellas.
2.2. Búsqueda en Profundidad (Depth First Search).
2.2.1. Definición:
Una búsqueda en profundidad o Depth First Search en inglés es un algoritmo
que permite recorrer todos los nodos de un grafo o árbol de manera
ordenada pero no uniforme. Su funcionamiento consiste en ir expandiendo
todos y cada uno de los nodos que va localizando, de forma recurrente, en un
camino concreto. Cuando ya no quedan más nodos que visitar en dicho
camino, regresa (Backtracking), de modo que repite el mismo proceso con
cada uno de los hermanos del nodo ya procesado.
2.3. Problema de las 8 reinas.
2.3.1. Definición:
El problema de las ocho reinas es un pasatiempo 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.
El juego de las ocho reinas consiste en colocar sobre un tablero de ajedrez
ocho reinas sin que estas se amenacen entre ellas.
Para resolver este problema se necesita emplear el paradigma de
backtracking.
2.3.2. Historia
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.
2.3.3. Planteamiento del Problema
Como cada reina puede amenazar a todas las reinas que estén en la misma fila,
cada una ha de situarse en una fila diferente. Podemos representar las 8
reinas mediante un vector [1-8], teniendo en cuenta que cada índice del vector
representa una fila y el valor una columna. Así cada reina estaría en la
posición (i, v[i]) para i = 1-8.
Por ejemplo el vector (3, 1, 6, 2, 8, 6, 4, 7) significa que la reina 1 está en la
columna 3, fila1; la reina 2 en la columna 1, fila 2; la reina 3 en la columna 6,
fila 3; la reina 4 en la columna 2, fila 4; etc... Como se puede apreciar esta
solución es incorrecta ya que estarían la reina 3 y la 6 en la misma columna.
Por tanto el vector correspondería a una permutación de los ocho primeros
números enteros.
Un asunto importante que tenemos que tener en cuenta es cómo saber si dos
damas no se comen entre ellas diagonalmente. Para las posiciones sobre una
misma diagonal descendente se cumple que tienen el mismo valor (fila –
columna), mientras que para las posiciones en la misma diagonal ascendente
se cumple que tienen el mismo valor (fila + columna). Entonces, si tenemos
dos reinas colocadas en las posiciones (i, j) y (k, l) entonces están en la misma
diagonal si y sólo si cumple:
i – j == k – l ó i + j == k + l
j – l == i – k ó j – l = k – i
Teniendo en cuenta estas consideraciones, podemos aplicar un esquema
retroactivo para implementar las ocho reinas de una manera realmente
eficiente. Para ello, reformulamos el problema como un problema de
búsqueda en un árbol. Decimos que en un vector V1…k de enteros entre 1 y 8
es k-prometedor, para 0 <= k <= 8, si ninguna de las k reinas colocadas en las
posiciones (1, V1), (2, v2),…, (k, Vk) amenaza a ninguna de las otras. Las
soluciones a nuestro problema se corresponden con aquellos vectores que son
8-prometedores.
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:
Solución única 1 Solución única 2
Solución única 3
Solución única 4 Solución única 5
Solución única 6
Solución única 7 Solución única 8 Solución única 9
Solución única 10 Solución única 11 Solución única 12
2.3.4. Algoritmo.
Sea N el conjunto de vectores de k-prometedores, 0 <= k <= 8, sea G = (N, A) el
grafo dirigido tal que (U, V) pertenece a A si y sólo si existe un entero k, con 0
<= k <= 8 tal que:
- U es k-prometedor
- V es (k+1) prometedor
- Ui = Vi para todo i que pertenece a {1, …, k}
Este grafo es un árbol. Su raíz es el vector vacío correspondiente a k = 0 sus
hojas son o bien soluciones (k = 8), o posiciones sin salida (k < 8). Las
soluciones del problema de las ocho reinas se pueden obtener explorando
este árbol. Sin embargo no generamos explícitamente el árbol para explorarlo
después. Los nodos se van generando y abandonando en el transcurso de la
exploración mediante un recorrido en profundidad.
Hay que decidir si un vector es k-prometedor, sabiendo que es una extensión
de un vector (k – 1 )-prometedor, únicamente necesitamos comprobar la
última reina que haya que añadir. Este se puede acelerar si asociamos a cada
nodo prometedor el conjunto de columnas, el de diagonales positivas y el de
diagonales negativas controlados por las reinas que ya están puestas.
2.4. Programa en Prolog.
%X/Y-reglon/columna
elemento(X,[X|R]). % Busca el elemento en una lista
elemento(X,[Y|R]):-elemento(X,R).
% plantilla de columnas y renglones
plantilla([1/S1,2/S2,3/S3,4/S4,5/S5,6/S6,7/S7,8/S8]).
% caso base la lista esta vacía, cuando no existe ninguna reina
solucion([]).
solucion([A/B|R]):-solucion(R),elemento(B,[1,2,3,4,5,6,7,8]),
no_ataca(A/B,R).
no_ataca(_,[]).
no_ataca(X/Y,[A/B|R]):-X==A,Y==B,
A-X==B-Y,
% que los renglones y columnas sean diferentes para que no se coman
X-A==B-Y,
% Busca que no se encuentren en la misma lista o renglón
no_ataca(X/Y,R).
Figura 02. Esquema reducido del árbol de soluciones.
Conclusiones
El problema de las 8 reinas es un juego de habilidades en el cual desarrollaremos
nuestras capacidades de lograr una mejor manera de ver las diferentes propuestas que
podemos dar a una incógnita como esta.
El mundo real es más complejo de lo que se formula en los problemas para solucionar
por computadora, sin embargo asumimos que los seres humanos para encontrar
soluciones tampoco requieren de mucha información, o al menos no requiere conocer
todo el universo para encontrar soluciones buenas.
En síntesis, las estrategia de búsqueda nos da una idea de cómo los investigadores en IA
proponen diferentes formas de solución para los problemas; estas técnicas son clásicas y
es por ello que deben ser conocidas por todos aquellos que están relacionados con
programación de soluciones por computadora. Existen otros métodos que requieren de
mayor complejidad de programación para encontrar mejores soluciones en un tiempo
razonable, como son el método de ascenso de la colina, algoritmos genéticos, las redes
neuronales. Todos ellos requieren de una mayor complejidad de computación y mayor
conocimiento e información del problema.
Referencias.
Bibliografía.
[1] Russell,StuartJ.,Norvig,Peter.,InteligenciaArtificial:Unenfoque moderno
2da Edición,Prentice Hall,2004.
[2] Nilsson,NilsJ.,ArtificialIntelligence:A New Synthesis,MorganKaufmann, 1998.
[3] Simon,HerbertA.,Lascienciasde loartificial,Comares,2006.
[4] Colaboradoresde Wikipedia.Inteligenciaartificial [enlínea].Wikipedia,La en
ciclopedialibre,2009 [fechade consulta:2 de enerodel 2009]. Disponible en
<http://es.wikipedia.org/w/index.php?title=Inteligencia_artificial&oldid=2298
6524>.

Más contenido relacionado

La actualidad más candente (20)

Backtracking
Backtracking  Backtracking
Backtracking
 
Simulacion - Algoritmo congruencial cuadratico
Simulacion - Algoritmo congruencial cuadraticoSimulacion - Algoritmo congruencial cuadratico
Simulacion - Algoritmo congruencial cuadratico
 
ppt-knight'stour
ppt-knight'stourppt-knight'stour
ppt-knight'stour
 
criptosistema Rabin, Merkle-Hellman
criptosistema Rabin, Merkle-Hellmancriptosistema Rabin, Merkle-Hellman
criptosistema Rabin, Merkle-Hellman
 
Minimum spanning tree
Minimum spanning treeMinimum spanning tree
Minimum spanning tree
 
Programación 3: caminos más cortos con un solo origen
Programación 3: caminos más cortos con un solo origenProgramación 3: caminos más cortos con un solo origen
Programación 3: caminos más cortos con un solo origen
 
N Queen Algorithm
N Queen AlgorithmN Queen Algorithm
N Queen Algorithm
 
Divide and conquer
Divide and conquerDivide and conquer
Divide and conquer
 
8 queen problem
8 queen problem8 queen problem
8 queen problem
 
Optimal binary search tree dynamic programming
Optimal binary search tree   dynamic programmingOptimal binary search tree   dynamic programming
Optimal binary search tree dynamic programming
 
Presentación de Netbeans
Presentación de NetbeansPresentación de Netbeans
Presentación de Netbeans
 
Knights tour
Knights tour Knights tour
Knights tour
 
Back Tracking
Back TrackingBack Tracking
Back Tracking
 
Greedy algorithms
Greedy algorithmsGreedy algorithms
Greedy algorithms
 
0-1 KNAPSACK PROBLEM
0-1 KNAPSACK PROBLEM0-1 KNAPSACK PROBLEM
0-1 KNAPSACK PROBLEM
 
Branch and bound
Branch and boundBranch and bound
Branch and bound
 
Metodos De Ordenamiento
Metodos De OrdenamientoMetodos De Ordenamiento
Metodos De Ordenamiento
 
Merge sort
Merge sortMerge sort
Merge sort
 
Algorithms, Union Find
Algorithms, Union FindAlgorithms, Union Find
Algorithms, Union Find
 
Branch & bound
Branch & boundBranch & bound
Branch & bound
 

Similar a 8 reinas

Slideshare nelson rodriguez
Slideshare nelson rodriguezSlideshare nelson rodriguez
Slideshare nelson rodrigueznelro038
 
Int. a la Computación Evolutiva - Informe para cursada
Int. a la Computación Evolutiva - Informe para cursadaInt. a la Computación Evolutiva - Informe para cursada
Int. a la Computación Evolutiva - Informe para cursadamartinp
 
Metodologia de la programacion recursividad
Metodologia de la programacion   recursividadMetodologia de la programacion   recursividad
Metodologia de la programacion recursividadvictdiazm
 
Estructura de datos avanzada
Estructura de datos avanzadaEstructura de datos avanzada
Estructura de datos avanzadaMaestros Online
 
El problema de las jarras de agua tema 6 prolog
El problema de las jarras de agua  tema 6 prologEl problema de las jarras de agua  tema 6 prolog
El problema de las jarras de agua tema 6 prologOscar Roberto
 
Matemáticas Básicas: Funciones
Matemáticas Básicas: FuncionesMatemáticas Básicas: Funciones
Matemáticas Básicas: FuncionesJuliho Castillo
 
Ecuacion Diferencial de Clairaut, Ejercicios Resueltos
Ecuacion Diferencial de Clairaut, Ejercicios ResueltosEcuacion Diferencial de Clairaut, Ejercicios Resueltos
Ecuacion Diferencial de Clairaut, Ejercicios ResueltosManuel Alejandro Vivas Riverol
 
Backtracking (Método de Vuelta Atrás)
Backtracking (Método de Vuelta Atrás)Backtracking (Método de Vuelta Atrás)
Backtracking (Método de Vuelta Atrás)jessenmanuel
 
Algoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallAlgoritmo de Floyd-Warshall
Algoritmo de Floyd-Warshall202101829f
 
Torres de hanói melany rojas
Torres de hanói melany rojasTorres de hanói melany rojas
Torres de hanói melany rojasMelany Rojas
 

Similar a 8 reinas (20)

Slideshare nelson rodriguez
Slideshare nelson rodriguezSlideshare nelson rodriguez
Slideshare nelson rodriguez
 
Int. a la Computación Evolutiva - Informe para cursada
Int. a la Computación Evolutiva - Informe para cursadaInt. a la Computación Evolutiva - Informe para cursada
Int. a la Computación Evolutiva - Informe para cursada
 
Torres de hanoi
Torres de hanoiTorres de hanoi
Torres de hanoi
 
Metodologia de la programacion recursividad
Metodologia de la programacion   recursividadMetodologia de la programacion   recursividad
Metodologia de la programacion recursividad
 
Estructura de datos avanzada
Estructura de datos avanzadaEstructura de datos avanzada
Estructura de datos avanzada
 
El problema de las jarras de agua tema 6 prolog
El problema de las jarras de agua  tema 6 prologEl problema de las jarras de agua  tema 6 prolog
El problema de las jarras de agua tema 6 prolog
 
Edo carrillo diaz
Edo carrillo diazEdo carrillo diaz
Edo carrillo diaz
 
Matemáticas Básicas: Funciones
Matemáticas Básicas: FuncionesMatemáticas Básicas: Funciones
Matemáticas Básicas: Funciones
 
Funciones racionales (web)
Funciones racionales (web)Funciones racionales (web)
Funciones racionales (web)
 
Ecuacion Diferencial de Clairaut, Ejercicios Resueltos
Ecuacion Diferencial de Clairaut, Ejercicios ResueltosEcuacion Diferencial de Clairaut, Ejercicios Resueltos
Ecuacion Diferencial de Clairaut, Ejercicios Resueltos
 
Backtracking (Método de Vuelta Atrás)
Backtracking (Método de Vuelta Atrás)Backtracking (Método de Vuelta Atrás)
Backtracking (Método de Vuelta Atrás)
 
Método de Vuelta Atrás (Backtracking)
Método de Vuelta Atrás (Backtracking)Método de Vuelta Atrás (Backtracking)
Método de Vuelta Atrás (Backtracking)
 
Algoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallAlgoritmo de Floyd-Warshall
Algoritmo de Floyd-Warshall
 
Aal ed1
Aal ed1Aal ed1
Aal ed1
 
Soluciones A - B - C
Soluciones A - B - CSoluciones A - B - C
Soluciones A - B - C
 
Soluciones A - B - C
Soluciones A - B - CSoluciones A - B - C
Soluciones A - B - C
 
Enfoque
EnfoqueEnfoque
Enfoque
 
Torre de hanói
Torre de hanóiTorre de hanói
Torre de hanói
 
CIBSI15
CIBSI15CIBSI15
CIBSI15
 
Torres de hanói melany rojas
Torres de hanói melany rojasTorres de hanói melany rojas
Torres de hanói melany rojas
 

Último

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (19)

ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

8 reinas

  • 1. ESCUELA DE INGENIERÍA INFORMÁTICA INFORME DEL PROYECTO DE: PROGRAMACION LOGICA PROYECTO ACADÉMICO: “Problema del juego de las 8 Reinas e Implementación en Swi Prolog”. Estudiante(s): Zuñiga Joaquin, Cesar Docente: Ing. Arturo Díaz Pulido Ciclo Académico: VII ciclo ESCUELA DE I NFORMÁTI CA 2014-I Trujillo – Perú
  • 2. Índice Dedicatoria ................................................................................................................................. 3 Introducción ............................................................................................................................... 4 1. Capítulo I: Marco Teórico ............................................................................................... 5 1.1 Realidad Problemática.............................................................................................. 5 2. Capítulo II: Conceptos..................................................................................................... 5 2.1 Backtracking.............................................................................................................. 5 2.2 Búsqueda en Profundidad ........................................................................................ 6 2.2.1 Definición................................................................................................... 6 2.3 Problema de las 8 reinas............................................................................................. 7 2.3.1 Definición................................................................................................... 7 2.3.2 Historia....................................................................................................... 8 2.3.3 Planteamiento del Problema ..................................................................... 8 2.3.4 Algoritmo ................................................................................................... 9 2.4 Programa en Prolog .................................................................................................. 9 Conclusiones............................................................................................................................. 10 Referencias............................................................................................................................... 11
  • 3. Ha Dios, quien ha permitido que la sabiduría dirija y guíe nuestros pasos. Ha sido Dios, quien ha iluminado mi sendero cuando más oscuro ha estado, Ha sido el creador de todas las cosas, el que me ha dado fortaleza para continuar cuando a punto de caer he estado; por ello, con toda la humildad que de nuestro corazón puede emanar, dedicamos en primer lugar este trabajo a Dios. De igual manera, a nuestros padres, quienes han sabido formarnos con buenos sentimientos, hábitos y valores, los cuales nos han ayudado a salir adelante buscando siempre el mejor camino.
  • 4. INTRODUCCION El problemafue originalmente propuesto en 1848 por el ajedrecista Max Bezzel, y durante los años, muchosmatemáticos,incluyendoaGaussy a Georg Cantor,han trabajadoeneste 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 propusoun métodopara hallar las soluciones usando determinantes, y J.W.L. Glaisher redefinió su aproximación. En pocas palabras, este problema trata sobre cómo se deberían ubicar 8 reinas en un tablero de ajedrezde dimensión8de tal forma que ninguna amenace a la otra. Un requisito simple al ser leído pero que hizo pensar a muchos matemáticos de aquella época como Gauss y Georg Cantor. Los lenguajesde programaciónenlosque se haimplementadoesteproblema son distintos, pero en esta monografía nos centraremos en el lenguaje Prolog (Programación Lógica), que con sus conceptos de unificación y backtracking (vuelta atrás) hacen de la implementación de este problema, algo mucho más sencillo. 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".
  • 5. I. Capítulo 1: Marco Teórico 1.1. Realidad Problemática El problema de las ocho reinas es un pasatiempo en el que se colocan ocho reinas sin que se amenacen. En el juego del ajedrez la reina amenaza a aquellas piezas que se encuentren en su misma fila, columna o diagonal. El juego de las 8 reinas consiste en colocar sobre un tablero de ajedrez ocho reinas sin que estas se amenacen entre ellas. Trataremos de mostrar con un ejemplo de forma general la importancia actual que este tipo de paradigmas tiene. En concreto, el paradigma declarativo lógico y, por supuesto, el lenguaje Prolog. Prolog se puede utilizar para resolver, básicamente, cualquier tipo de problema. Principalmente es útil en la gestión de Juegos, en Inteligencia Artificial y Sistemas Expertos, como lenguaje especialmente pensado para construir bases de conocimientos basados en la lógica que forman parte importante de cualquier agente inteligente, en la construcción de Compiladores e Intérpretes, en el Reconocimiento del Lenguaje Natural, etc. II. Capítulo 2: Conceptos 2.1. Backtracking: 2.1.1. Definición: También llamada búsqueda atrás, es una técnica de programación para hacer búsqueda sistemática a través de todas las configuraciones posibles dentro de un espacio de búsqueda. Para lograr esto, los algoritmos de tipo backtracking construyen posibles soluciones candidatas de manera sistemática. En general, dado una solución candidata s: a) Verifican si s es solución. Si lo es, se procesa esta solución (dependiendo del problema). b) Construyen todas las posibles extensiones de s, e invocan recursivamente al algoritmo con todas ellas. 2.2. Búsqueda en Profundidad (Depth First Search). 2.2.1. Definición: Una búsqueda en profundidad o Depth First Search en inglés es un algoritmo que permite recorrer todos los nodos de un grafo o árbol de manera ordenada pero no uniforme. Su funcionamiento consiste en ir expandiendo todos y cada uno de los nodos que va localizando, de forma recurrente, en un camino concreto. Cuando ya no quedan más nodos que visitar en dicho
  • 6. camino, regresa (Backtracking), de modo que repite el mismo proceso con cada uno de los hermanos del nodo ya procesado. 2.3. Problema de las 8 reinas. 2.3.1. Definición: El problema de las ocho reinas es un pasatiempo 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. El juego de las ocho reinas consiste en colocar sobre un tablero de ajedrez ocho reinas sin que estas se amenacen entre ellas. Para resolver este problema se necesita emplear el paradigma de backtracking. 2.3.2. Historia 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. 2.3.3. Planteamiento del Problema Como cada reina puede amenazar a todas las reinas que estén en la misma fila, cada una ha de situarse en una fila diferente. Podemos representar las 8 reinas mediante un vector [1-8], teniendo en cuenta que cada índice del vector representa una fila y el valor una columna. Así cada reina estaría en la posición (i, v[i]) para i = 1-8. Por ejemplo el vector (3, 1, 6, 2, 8, 6, 4, 7) significa que la reina 1 está en la columna 3, fila1; la reina 2 en la columna 1, fila 2; la reina 3 en la columna 6, fila 3; la reina 4 en la columna 2, fila 4; etc... Como se puede apreciar esta solución es incorrecta ya que estarían la reina 3 y la 6 en la misma columna. Por tanto el vector correspondería a una permutación de los ocho primeros números enteros. Un asunto importante que tenemos que tener en cuenta es cómo saber si dos damas no se comen entre ellas diagonalmente. Para las posiciones sobre una misma diagonal descendente se cumple que tienen el mismo valor (fila – columna), mientras que para las posiciones en la misma diagonal ascendente se cumple que tienen el mismo valor (fila + columna). Entonces, si tenemos dos reinas colocadas en las posiciones (i, j) y (k, l) entonces están en la misma diagonal si y sólo si cumple: i – j == k – l ó i + j == k + l j – l == i – k ó j – l = k – i
  • 7. Teniendo en cuenta estas consideraciones, podemos aplicar un esquema retroactivo para implementar las ocho reinas de una manera realmente eficiente. Para ello, reformulamos el problema como un problema de búsqueda en un árbol. Decimos que en un vector V1…k de enteros entre 1 y 8 es k-prometedor, para 0 <= k <= 8, si ninguna de las k reinas colocadas en las posiciones (1, V1), (2, v2),…, (k, Vk) amenaza a ninguna de las otras. Las soluciones a nuestro problema se corresponden con aquellos vectores que son 8-prometedores. 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: Solución única 1 Solución única 2 Solución única 3 Solución única 4 Solución única 5 Solución única 6
  • 8. Solución única 7 Solución única 8 Solución única 9 Solución única 10 Solución única 11 Solución única 12 2.3.4. Algoritmo. Sea N el conjunto de vectores de k-prometedores, 0 <= k <= 8, sea G = (N, A) el grafo dirigido tal que (U, V) pertenece a A si y sólo si existe un entero k, con 0 <= k <= 8 tal que: - U es k-prometedor - V es (k+1) prometedor - Ui = Vi para todo i que pertenece a {1, …, k} Este grafo es un árbol. Su raíz es el vector vacío correspondiente a k = 0 sus hojas son o bien soluciones (k = 8), o posiciones sin salida (k < 8). Las soluciones del problema de las ocho reinas se pueden obtener explorando este árbol. Sin embargo no generamos explícitamente el árbol para explorarlo
  • 9. después. Los nodos se van generando y abandonando en el transcurso de la exploración mediante un recorrido en profundidad. Hay que decidir si un vector es k-prometedor, sabiendo que es una extensión de un vector (k – 1 )-prometedor, únicamente necesitamos comprobar la última reina que haya que añadir. Este se puede acelerar si asociamos a cada nodo prometedor el conjunto de columnas, el de diagonales positivas y el de diagonales negativas controlados por las reinas que ya están puestas. 2.4. Programa en Prolog. %X/Y-reglon/columna elemento(X,[X|R]). % Busca el elemento en una lista elemento(X,[Y|R]):-elemento(X,R). % plantilla de columnas y renglones plantilla([1/S1,2/S2,3/S3,4/S4,5/S5,6/S6,7/S7,8/S8]). % caso base la lista esta vacía, cuando no existe ninguna reina solucion([]). solucion([A/B|R]):-solucion(R),elemento(B,[1,2,3,4,5,6,7,8]), no_ataca(A/B,R). no_ataca(_,[]). no_ataca(X/Y,[A/B|R]):-X==A,Y==B, A-X==B-Y, % que los renglones y columnas sean diferentes para que no se coman X-A==B-Y, % Busca que no se encuentren en la misma lista o renglón no_ataca(X/Y,R). Figura 02. Esquema reducido del árbol de soluciones.
  • 10. Conclusiones El problema de las 8 reinas es un juego de habilidades en el cual desarrollaremos nuestras capacidades de lograr una mejor manera de ver las diferentes propuestas que podemos dar a una incógnita como esta. El mundo real es más complejo de lo que se formula en los problemas para solucionar por computadora, sin embargo asumimos que los seres humanos para encontrar soluciones tampoco requieren de mucha información, o al menos no requiere conocer todo el universo para encontrar soluciones buenas. En síntesis, las estrategia de búsqueda nos da una idea de cómo los investigadores en IA proponen diferentes formas de solución para los problemas; estas técnicas son clásicas y es por ello que deben ser conocidas por todos aquellos que están relacionados con programación de soluciones por computadora. Existen otros métodos que requieren de mayor complejidad de programación para encontrar mejores soluciones en un tiempo razonable, como son el método de ascenso de la colina, algoritmos genéticos, las redes neuronales. Todos ellos requieren de una mayor complejidad de computación y mayor conocimiento e información del problema.
  • 11. Referencias. Bibliografía. [1] Russell,StuartJ.,Norvig,Peter.,InteligenciaArtificial:Unenfoque moderno 2da Edición,Prentice Hall,2004. [2] Nilsson,NilsJ.,ArtificialIntelligence:A New Synthesis,MorganKaufmann, 1998. [3] Simon,HerbertA.,Lascienciasde loartificial,Comares,2006. [4] Colaboradoresde Wikipedia.Inteligenciaartificial [enlínea].Wikipedia,La en ciclopedialibre,2009 [fechade consulta:2 de enerodel 2009]. Disponible en <http://es.wikipedia.org/w/index.php?title=Inteligencia_artificial&oldid=2298 6524>.