Problema de las Reinas

25
Problema de las N Reinas Resolución paralela

Transcript of Problema de las Reinas

Page 1: Problema de las Reinas

Problema de las N ReinasResolución paralela

Page 2: Problema de las Reinas

Indice

Introducción al problemaRepresentación y SolucionesResolución secuencialResolución paralelaConclusionesBibliografía

2

Page 3: Problema de las Reinas

Introducción

3

Page 4: Problema de las Reinas

Introducción

El problema de las N reinas consiste en situar N reinas en un tablero de ajedrez de NxN sin que se amenacen entre ellas.Una reina amenaza a otra si está en la misma fila, columna o diagonal.

4

Page 5: Problema de las Reinas

Introducción

Movimientos posibles de una reina en el tablero:

5

Page 6: Problema de las Reinas

Representación y Soluciones

6

Page 7: Problema de las Reinas

Representación

Para representar el problema, se podría plantear como una matriz de NxN enteros, donde un 1 significa que la reina está en esa posición, y un 0 que la casilla está vacía. Representación ineficiente, se usa más espacio del necesario.

7

Page 8: Problema de las Reinas

Representación

Otra opción es hacer uso de un vector de N enteros, donde cada posición corresponde a una columna del tablero, y el entero representa la fila en la que se encuentra la reina dentro de dicha columna.Más eficiente y más sencilla de usar.

8

Page 9: Problema de las Reinas

Soluciones

Como cada posición del vector representa una columna, no pueden situarse dos reinas en la misma columna.Si el vector tiene varios enteros iguales, quiere decir que esas reinas están en la misma fila, por lo que sería incorrecta la solución.Queda el problema de las diagonales.

9

Page 10: Problema de las Reinas

Soluciones

Dos reinas están en la misma diagonal si:Mismo valor de fila - columna (Diagonal descendente)Mismo valor de fila + columna (Diagonal ascendente)

10

Page 11: Problema de las Reinas

Soluciones

Una posible solución en un tablero de N=8:

S=(6,4,2,0,5,7,1,3)

11

Page 12: Problema de las Reinas

Resolución secuencial

12

Page 13: Problema de las Reinas

Resolución secuencial

La solución secuencial se podría plantear como un backtracking.Complejidad: O(n!)Problema: Poco eficiente, para tamaño grande del tablero puede tardar demasiado.

13

Page 14: Problema de las Reinas

Resolución secuencial

Otra posibilidad es usar una bolsa de tareas. Eliminamos los vectores que no sean prometedores, es decir, que al tratar de situar una nueva reina ésta amenace a alguna otra.

14

Page 15: Problema de las Reinas

Resolución secuencial

Dada una configuración inicial del tablero, se intenta colocar una reina en cada fila de la columna actual, generándose nuevas configuraciones que se insertan en la bolsa de tareas.Esta será la versión tomada como base para la solución paralela.

15

Page 16: Problema de las Reinas

Resolución paralela

16

Page 17: Problema de las Reinas

Resolución paralela

La solución inmediata en OpenMP sería que cada hilo tomase una tarea de la bolsa, genere las tareas correspondientes a partir de ella, y repetir esto hasta que no queden tareas.

17

Page 18: Problema de las Reinas

Resolución paralela

En MPI se puede plantear de forma similar, con gestión de tareas, solo que habrá un nodo maestro que controle las tareas por realizar, y los demás nodos son los encargados de pedir tareas y enviar las nuevas al master.En este caso pueden darse varias opciones:

18

Page 19: Problema de las Reinas

Resolución paralela

El nodo maestro genera una sola configuración inicial, y cada uno de los nodos siguientes van generando nuevas configuraciones e insertándolas en la bolsa.En este caso se producen grandes cantidades de comunicaciones.

19

Page 20: Problema de las Reinas

Resolución paralela

Otra opción es que el nodo maestro genere una cantidad inicial de tareas a resolver, y luego las reparta entre todos los nodos.El reparto puede ser dinámico o estático.En este caso las comunicaciones se reducen al principio para repartir, y al final para obtener los resultados.

20

Page 21: Problema de las Reinas

Conclusiones

21

Page 22: Problema de las Reinas

Conclusiones

A priori, antes de realizar los desarrollos y las pruebas, se pueden sacar una serie de conclusiones interesantes.La opción de una tarea inicial y que cada nodo genere y añada a la bolsa parece más interesante para OpenMP, por la cantidad de comunicaciones que se producirían en MPI.

22

Page 23: Problema de las Reinas

Conclusiones

Si en la versión con tareas iniciales, el reparto es estático, se puede producir desequilibrio en la carga de trabajo.

El reparto de las tareas de forma dinámica puede solucionar el problema del desequilibrio en la cantidad de tareas, pero ampliará el número de comunicaciones entre el nodo maestro y el resto.

23

Page 24: Problema de las Reinas

Bibliografía

24