Problema de las Reinas

Post on 12-Apr-2017

126 views 3 download

Transcript of Problema de las Reinas

Problema de las N ReinasResolución paralela

Indice

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

2

Introducción

3

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

Introducción

Movimientos posibles de una reina en el tablero:

5

Representación y Soluciones

6

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

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

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

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

Soluciones

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

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

11

Resolución secuencial

12

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

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

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

Resolución paralela

16

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

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

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

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

Conclusiones

21

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

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

Bibliografía

24