monografia ocho reinas

22
1 UNIVERSIDAD NACIONAL DE TRUJILLO FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS INGENIERIA INFORMATICA PROGRAMACION LOGICA MONOGRAFÍA PROBLEMA DE LAS OCHO REINAS AUTORES GRADOS LEYVA DIANA ELIZABETH GRADOS LEYVA DIANA LISSET SIFUENTES GUZMAN LUIS ERNESTO TRUJILLO PERU

Upload: dianagradosl

Post on 19-Jul-2015

267 views

Category:

Science


1 download

TRANSCRIPT

Page 1: Monografia ocho reinas

1

UNIVERSIDAD NACIONAL DE TRUJILLO

FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS

INGENIERIA INFORMATICA

PROGRAMACION LOGICA

MONOGRAFÍA

PROBLEMA DE LAS OCHO REINAS

AUTORES

GRADOS LEYVA DIANA ELIZABETH

GRADOS LEYVA DIANA LISSET

SIFUENTES GUZMAN LUIS ERNESTO

TRUJILLO – PERU

Page 2: Monografia ocho reinas

2

ÍNDICE

DEDICATORIA

INTRODUCCIÓN

1. MARCO TEÓRICO

1.1. Capítulo I: PLANTEAMIENTO DEL PROBLEMA

1.1.1. Caso específico - Problema de las ocho reinas

1.1.2. Caso generalizado - Problema de las n reinas

1.2. Capítulo 2: DESARROLLO DEL PROBLEMA

1.2.1. Algoritmo de búsqueda en profundidad

1.2.2. Algoritmo de búsqueda en anchura

1.2.3. Análisis del caso específico- Problema de las ocho reinas

1.2.4. Análisis del caso generalizado- Problema de las n- reinas

1.3. Capítulo 3: APLICACIONES EN LA SOCIEDAD

CONCLUSIONES

ANEXOS

APÉNDICE A

APÉNDICE B

BIBLIOGRAFÍAS

3

4

6

6

6

6

7

7

8

9

13

15

17

18

19

20

22

Page 3: Monografia ocho reinas

3

Queremos agradecer a todos nuestros maestros ya que

ellos nos enseñan a valorar los estudios y a superarnos

cada día, también agradecemos a nuestros padres

porque gracias a ellos podemos estar en esta prestigiosa

universidad y así poder aportar con nuestros

Page 4: Monografia ocho reinas

4

INTRODUCCION

Estamos viviendo, no una época de cambios sino un cambio de época, un cambio

en el campo científico-tecnológico, en el campo empresarial y sobre todo en el

campo social. Estos cambios que se dan, no solo pueden beneficiar al ser

humano, sino que también pueden perjudicarlo.

Los cambios pueden traer consigo una gran variedad de problemas. Donde la

naturaleza de estos, se caracteriza por la multiplicidad de decisores que confluyen

en una decisión.

Page 5: Monografia ocho reinas

5

Aquí en Perú como en cualquier otro país hemos experimentado el cambio que se

viene dando en los sistemas de comunicaciones, ya que mediante estos podemos

lograr la transferencia de información, sin embargo siempre se busca transferir el

mayor volumen de ésta, ya sea a corta o larga distancia; para ello es necesario

lograr un mayor ancho de banda, es aquí donde es inevitable tomar la decisión de

cómo deben ir ubicados los n transceptores del sistema.

Teniendo en cuenta esta situación, nos centramos en cómo resolver o tratar de

resolver esta situación mediante “El problema de las n- reinas”.

El problema de las n- reinas nos dará una alternativa para poder ubicar los n-

transceptores del sistema de manera que estos no se interfieran entre sí, logrando

el mayor ancho de banda posible.

En la presente monografía nos centraremos en tres puntos esenciales, primero en

el análisis del “Problema de las 8-reinas” y del “Problema de las n-reinas”,

segundo, la relación que tienen con los métodos de búsquedas (búsqueda en

profundidad y búsqueda en anchura), y finalmente de cómo podría ayudar este

problema a resolver la problemática que se tiene en los Sistemas de

Comunicaciones.

Page 6: Monografia ocho reinas

6

1. MARCO TEORICO

1.1. Capítulo 1: PLANTEAMIENTO DEL PROBLEMA

El problema de las Reinas (Queen Problem) es muy antiguo, siendo

propuesto por primera vez en el año 1848, como el problema de las ocho

reinas, sin embargo, con el paso de 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.

En esta monografía se analizara el caso propuesto inicialmente (ocho

reinas) como un caso específico y posteriormente el caso generalizado.

1.1.1. Caso específico - Problema de las ocho reinas

El problema de las reinas fue originalmente propuesto para n=8

en el año 1848 en un trabajo anónimo, siendo posteriormente

atribuido a Max Bezzel. Sin embargo, la publicación detallada

más antigua que se conoce fue realizada por Nauck en 1850.

Este problema consiste en colocar ocho reinas en un tablero de

8x8 sin que estas se amenacen entre ellas, de tal manera que no

sea posible que dos reinas se capturen entre sí, es decir, que no

estén en la misma fila, ni en la misma columna ni en la misma

diagonal. Se dice que hay una colisión si hay dos reinas que se

pueden capturan entre sí.

1.1.2. Caso generalizado - Problema de las n reinas

El problema de las ocho reinas se puede plantear de modo

general como problema de las n reinas. El problema consiste en

Page 7: Monografia ocho reinas

7

colocar n reinas en un tablero de nxn, de tal manera que ninguna

de las reinas quede atacando a otra.

Se trata pues de encontrar una solución (elegir las n celdas

donde colocar a las reinas) que minimice el número total de

colisiones.

Su análisis y solución es isomorfo al de las ocho reinas, es decir

tienen la misma estructura.

1.2. Capítulo 2: DESARROLLO DEL PROBLEMA

La investigación sobre este tema no ha parado hasta hoy, por lo que

existe una amplia variedad de algoritmos sugeridos para su solución.

Esta monografía se centrará en los algoritmos de búsqueda, ya que

estos algoritmos son de gran ayuda para solucionar el problema de las n

reinas. Dichos algoritmos se explican a continuación.

1.2.1. Algoritmo de búsqueda en profundidad

La búsqueda en profundidad, llamada Depth First Search en

inglés, es un algoritmo usado para recorrer o buscar elementos

en un árbol o un grafo. Su procedimiento consiste en visitar todos

los nodos de forma ordenada, es decir, va localizando los

recorridos posibles y en caso de no poder continuar, vuelve al

punto donde existen nuevos recorridos posibles con el fin de

visitar todos los nodos.

En otras, una vez llega al final del camino vuelve atrás hasta que

encuentra una bifurcación que no ha explorado, y repite el

Page 8: Monografia ocho reinas

8

proceso hasta acabar el árbol (esto se conoce como

backtracking).

Fig 1 Recorrido de la Búsqueda por Profundidad disponible en: http://iorch.wordpress.com/

1.2.2. Algoritmo de búsqueda en anchura

La búsqueda en anchura, llamada Breadth First Search en

inglés, es un algoritmo para recorrer o buscar elementos en un

grafo (usado frecuentemente sobre árboles). Intuitivamente, se

comienza en la raíz (eligiendo algún nodo como elemento raíz en

el caso de un grafo) y se exploran todos los vecinos de este

nodo. A continuación para cada uno de los vecinos se exploran

sus respectivos vecinos adyacentes, y así hasta que se recorra

todo el árbol

Page 9: Monografia ocho reinas

9

Fig 2 Recorrido de Búsqueda por Anchura disponible en: http://iorch.wordpress.com/

1.2.3. Análisis del caso específico- Problema de las ocho reinas

Este caso, como se dijo anteriormente, trata de ubicar ocho

reinas en un tablero de 8x8.

Solución:

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.

Primero numeramos las reinas del 1 al 8. Luego podemos

representar las 8 reinas mediante una 8-tupla

[X1,X2,X3,X4,X5,X6,X7,X8] teniendo en cuenta que cada índice dela

tupla representa una fila y el valor una columna. Así cada reina

estaría en la posición (i, tupla[i]) donde i toma valores del 1 al 8.

Por ejemplo, la tupla [3,1,6,2,8,6,4,7] significa que la reina 1 está

en la fila1, columna 3; la reina 2 en la fila 2, columna 1; la reina 3

Page 10: Monografia ocho reinas

10

en la fila 3, columna 6; la reina 4 en la fila 4, columna 2; etc...

Como se puede apreciar esta solución es incorrecta ya que

estarían la reina 3 y la 6 en la misma columna.

Para decidir en cada etapa cuáles son los valores que puede

tomar cada uno de los elementos Xi hemos de tener en cuenta

algunas restricciones a fin de que el número de opciones en

cada etapa sea el menor posible. El algoritmo de búsqueda en

profundidad, como fue mencionado anteriormente, utiliza

backtracking (vuelta atrás) para recorrer todo el árbol. Teniendo

esto en cuenta podemos diferenciar dos tipos de restricciones:

Restricciones explicitas: 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}.

Restricciones implícitas: Indican la relación existente entre

los posibles valores de los Xi para que éstos puedan formar

parte de una n-tupla solución. En el problema que nos ocupa

podemos definir dos restricciones implícitas. En primer lugar

sabemos que dos reinas no pueden situarse en la misma

columna y por tanto no puede haber dos Xi iguales

(obsérvese además que la propia definición 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

Page 11: Monografia ocho reinas

11

estar en la misma diagonal, lo cual reduce el número de

opciones. Esta condición se refleja en la segunda restricción

implicita que, en forma de ecuación, puede ser expresada

como |x – x’| ≠ |y – y’|, siendo (x,y) y (x’,y’) las coordenadas

de dos reinas en el tablero.

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:

Page 12: Monografia ocho reinas

12

Page 13: Monografia ocho reinas

13

Fig 3. 12 soluciones únicas del problema de las ocho reinas, disponible en: http://iorch.wordpress.com/

1.2.4. Analisis del caso generalizado – Problema de las n reinas

Este caso, como se dijo anteriormente, trata de ubicar n reinas

en un tablero de nxn sin que se amenacen.

El analisis y solucion para este caso tiene la misma estrustura a

la solucion de las ocho reinas.

A continuacion se presenta el numero de soluciones para n

reinas, donde n>=1:

Tabla 1: Numero de soluciones para n- reinas.

N Única Distinta

1 1 1

2 0 0

3 0 0

4 1 2

5 2 10

6 1 4

7 6 40

8 12 92

9 46 352

10 92 724

11 341 2.680

12 1.787 14.200

13 9.233 73.712

14 45.752 365.596

… … …

Page 14: Monografia ocho reinas

14

Extructura del arbol de expansion para n=4.

Fig 4. Estructura del árbol de expansión para 4 reinas en:

http://socanet.zonalibre.org/archives/124908.html

Fig 5. Estructura del árbol para 4 reinas disponible en:

http://www.lcc.uma.es/~av/Libro/CAP6.pdf

[-,-,-,-]0

[1,-,-,-]1 [2,-,-,-]5 [3,-,-,-]9 [4,-,-,-]13

[1,4,-,-]3 [1,3,-,-]2

[1,4,2,-]4

[2,4,-,-]6

[2,4,1,-]7

[2,4,1,3]8

[3,1,-,-]10

[3,1,4,-]11

[3,1,4,2]12

[4,1,-,-]14

[4,1,3,-]15

[4,2,-,-]16

Page 15: Monografia ocho reinas

15

1.3. Capítulo 3: APLICACIONES EN LA VIDA REAL

El problema de las n-reinas es conocido usualmente como un problema

relacionado a un juego y también como un problema apropiado para

probar algoritmos nuevos. Sin embargo, tiene otras aplicaciones ya que

se le considera como un modelo de máxima cobertura. Una solución 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 conflictos con otros

objetos.

Sabiendo lo anterior podemos decir que el problema de las n-reinas es

aplicable para resolver el conflicto que se presenta en los Sistemas de

Comunicaciones de banda estrecha y direccional, el cual es lograr el

mayor ancho de banda posible; para ello se debe ubicar los n

transceptores del sistema, de tal manera que no se interfieran entre

ellos. Con los n transceptores ubicados en patrones sin conflictos, lo que

corresponde a una solución del problema de las n-reinas, podemos decir

que cada transceptor puede comunicarse con el mundo exterior en

forma libre en 8 direcciones sin que sea inhibido por otro transceptor. La

fig.6 muestra una distribución para 10 transceptores.

Esta distribución corresponde a una de las soluciones para el problema

de las 10-reinas.

Page 16: Monografia ocho reinas

16

Fig 6. Ubicación de 10 Transmisores/Receptores sin conflicto entre ellos (cada uno puede comunicarse en cualquier dirección vertical, horizontal o diagonal)

Algunas otras aplicaciones posibles donde se puede utilizar el problema

de las n-reinas son:

Control de tráfico aéreo

Programación de tareas computacionales

Procesamiento paralelo óptico

Compresión de datos

Balance de carga en un computador multiprocesador

Ruteo de mensajes o datos en un computador multiprocesador

Etc.

Page 17: Monografia ocho reinas

17

CONCLUSIONES

Mediante esta monografía, hemos comprendido de qué trata en si el problema

de las ocho reinas, de qué manera podemos solucionarlo y principalmente

cuáles son sus aplicaciones en la vida real.

Como hemos venido diciendo los sistemas de comunicaciones son muy

importantes en nuestra vida diaria, ya que siempre estamos transfiriendo

información. Sin embargo con los conocimientos adquiridos hemos podido dar

una mejora a cómo lograr el mayor ancho de banda posible en estos sistemas

para poder transmitir un mayor volumen de información.

El problema de las ocho reinas o n-reinas se puede implementar en diferentes

lenguajes de programación, así como java, python, c++, prolog, etc.

Page 18: Monografia ocho reinas

18

ANEXOS

Page 20: Monografia ocho reinas

20

APENDICE B:

Código del Problema de las n-Reinas hecho en prolog.

% Podemos ubicar 1,2,...,8, o N reinas con la regla: situar_NR(N, Solucion), % definiendo el tamaño del tablero como NxN (N número de reinas). situar_NR(N, P) :- tablero(1, N, T), ubicacionReinas(T, [], P). ubicacionReinas([], P, P). ubicacionReinas(T, R, P) :- selecciona(T, I, NL),not(atacaReina(I, R)), ubicacionReinas(NL, [I|R], P). selecciona([X|R], X, R). selecciona([A|R], X, [A|NR]) :- selecciona(R, X, NR). atacaReina(A, R) :- atacaReina(A, 1, R). atacaReina(A, B, [Y|_]) :- A is Y + B. atacaReina(A, B, [Y|_]) :- A is Y - B. atacaReina(A, B, [_|R]) :- M is B+1, atacaReina(A, M, R). tablero(A,A,[A]). tablero(A,B,[A|RL]) :- B>A, P is A+1, tablero(P,B,RL). % Podemos obtener el número de soluciones con la regla: numeroSoluciones numeroSoluciones(R,N) :- bagof(P,situar_NR(R,P),L),longitud(L,N). longitud([],0). longitud([_|A],N) :- longitud(A,N1), N is N1+1. % pregunta: numeroSoluciones(8, X). %------------------------------------------------------------------------ %------------------------********************---------------------------- % Se puede obtener soluciones sin incluir las soluciones invertidas situar_NR2(N,L) :- bagof(S,situar_NR(N,S),Lis),quitarinversas(N,Lis,L), mostrar(L),L=true. quitarinversas(_, [],[]).

Page 21: Monografia ocho reinas

21

quitarinversas(N,[P|R], [P|L]) :- borrarinv(N,P,R,NR), quitarinversas(N,NR,L). borrarinv(_,_,[],[]). borrarinv(N,P,[X|Y],NY) :- es_inversa(N,P,X),!,borrarinv(N,P,Y,NY). borrarinv(N,P,[X|Y],[X|NY]) :- borrarinv(N,P,Y,NY). es_inversa(_,[],[]). es_inversa(N,[X|R],[Y|S]) :- Z is N-X, Y is Z+1, es_inversa(N,R,S). %------------------------------------------------------------------------ mostrar([]):-!. mostrar([Cab| Cola]):- write(Cab),nl, mostrar(Cola). situar_NR21(N,L) :- bagof(S,situar_NR(N,S),Lis), quitarinversas(N,Lis,L). % Podemos obtener el número de soluciones sin contar las soluciones invertidas % con la regla: numeroSoluciones2 numeroSoluciones2(R,N) :- situar_NR21(R,L), longitud(L,N). }

Page 22: Monografia ocho reinas

22

BIBLIOGRAFIA

- Andres Spading y Pablo Itaim Ananias, Valparaiso, 12 de abril del 2005,

Optimizacion Combinatorial “El Problema de las N-Reinas”, 6 paginas.

- Wikipedia,enciclopedia libre, Problema de las ocho reinas, disponible en:

http://es.wikipedia.org/wiki/Problema_de_las_ocho_reinas

- Lizbeth, Recorrido y Búsqueda en Arboles, disponible en:

http://www.monografias.com/trabajos-pdf5/recorrido-y-busqueda-

arboles/recorrido-y-busqueda-arboles.shtml

- Riojas Cañari, Alicia Cirila, Conceptos, Algoritmo y Aplicación al problema

de las N-reinas, 83 paginas, disponible en:

http://sisbib.unmsm.edu.pe/bibvirtual/monografias/Basic/riojas_ca/contenid

o.htm