Story Transcript
Problema de las N Reinas Resolución paralela
Indice Introducción al problema Representación y Soluciones Resolución secuencial Resolución paralela Conclusiones Bibliografí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
Bibliografía
Introducción a la Programación Paralela http://es.wikipedia.org/wiki/Problema_de_las_ocho_reinas http://euitio178.ccu.uniovi.es/wiki/index.php/TP:n_reinas__Backtracking http://www.lcc.uma.es/~av/Libro/CAP7.pdf http://itaim.vtrbandaancha.net/paper/nreinas3.pdf
25