Вы находитесь на странице: 1из 18

PROGRAMACIN PARALELA EN ALGORITMOS SOBRE GRAFOS

Contenidos

Introduccin y representacin de grafos Algoritmos para grafos densos

rboles de expansin

Problemas de caminos mnimos

Algoritmo de Prim

Con un solo origen

Entre todos los pares de nodos

Algoritmo de Dijkstra

Algoritmo de Dijkstra Formulacin de origen divido Formulacin de origen paralelo Algoritmo de Floyd

Algoritmos para grafos esparcidos

Contenidos

Introduccin y representacin de grafos Algoritmos para grafos densos

rboles de expansin

Problemas de caminos mnimos

Algoritmo de Prim

Con un solo origen

Entre todos los pares de nodos

Algoritmo de Dijkstra

Algoritmo de Dijkstra Formulacin de origen divido Formulacin de origen paralelo Algoritmo de Floyd

Algoritmos para grafos esparcidos

Introduccin y representacin de grafos (I)


Un grafo G es una tupla G=(V,A), donde V es un conjunto de vrtices y A es un conjunto de aristas o arcos. Cada arista es un par (v,w) donde v,w pertenecen a V.
TERMINOLOGA

Grafo no dirigido: las aristas no estn ordenadas. Grafo dirigido: los pares estn ordenados. Un vrtice w es adyacente a otro v si y slo si (v,w) pertenece a A. Camino de un vrtice w1 a wq: es una secuencia w1, w2 wq V, tal que todas las aristas (w1,w2), , (wq-1, wq) A. Longitud de un camino: n aristas del camino. Ciclo: es un camino cuyo primer y ltimo vrtice son iguales. Un grafo es conexo si hay un camino entre cualquier par de vrtices. Un grafo es completo si existe una arista entre cualquier par de vrtices. Un grafo est etiquetado si asociamos a cada arista un peso o un valor. Un subgrafo de G = (V, A) es un grafo G = (V, A) tal que V es un subconjunto de V y A es un subconjunto de A.

Introduccin y representacin de grafos (II)

REPRESENTACIONES

Matrices de adyacencia.

Las aristas se representan con una matriz M[nodo,nodo] de booleanos, donde M[v,w]=1 si y slo si (v,w) A. Si el grafo esta etiquetado, la matriz ser de elementos de ese tipo. Tomar un valor nulo si no existe ese arco. Si el grafo es no dirigido, la matriz es simtrica. til para grafos densos (|A| |V|2).

Introduccin y representacin de grafos (y III)

Listas de adyacencia.

Para cada nodo de V tendremos una lista de aristas que parten de ese nodo. Estas listas se guardan en un array de nodos cabecera. Si el grafo esta etiquetado, se aade un nuevo campo a los elementos de la lista. Si el grafo es no dirigido, entonces cada arista (v,w) se representar dos veces, en la lista de v y en la de w. til para grafos esparcidos (|A| |V|2)

Contenidos

Introduccin y representacin de grafos Algoritmos para grafos densos

rboles de expansin

Problemas de caminos mnimos

Algoritmo de Prim Con un solo origen

Entre todos los pares de nodos

Algoritmo de Dijkstra

Algoritmo de Dijkstra Formulacin de origen divido Formulacin de origen paralelo Algoritmo de Floyd

Algoritmos para grafos esparcidos

rboles de expansin: Algoritmo de Prim (I)

Un rbol de expansin de un grafo no dirigido G=(V,A) y conexo, es un subgrafo G=(V,A) no dirigido, conexo y sin ciclos. Importante: contiene todos los vrtices de G. El algoritmo de Prim intenta encontrar un rbol de expansin de un grafo, cuyas aristas sumen el peso mnimo.

rboles de expansin: Algoritmo de Prim (II)

rboles de expansin: Algoritmo de Prim (III)

Mtodo de paralelizacin.

Supongamos p procesos y n vertices. El conjunto V se divide en p subconjuntos usando el mapping de bloques de 1 dimensin. Cada subconjunto tiene n/p vertices consecutivos, y el trabajo de cada subconjunto se asigna a procesos diferentes. Cada proceso Pi almacena la parte del array d que corresponde a Vi.

rboles de expansin: Algoritmo de Prim (IV)


Cada proceso Pi realiza el clculo de di[u], y el mnimo global se obtiene sobre todos los di[u] mediante una operacin de reduccin que se almacena en P0. El proceso P0 ahora almacena el vrtice u, el cual se inserta en VT. A continuacin el proceso P0 hace una operacin de broadcast de u, notificando a todos los procesos que actualicen los valores de d[v] para sus vrtices locales. El proceso Pi que contenga a u ser el que lo introduzca en Vt.

rboles de expansin: Algoritmo de Prim (y V)

Al paralelizar el algoritmo de Prim se logra un tiempo de ejecucin de:


Tsequencial = (n2) Tparalelo = (n2 / p) + (n log p)
ejecucin comunicacin

Contenidos

Introduccin y representacin de grafos Algoritmos para grafos densos

rboles de expansin

Problemas de caminos mnimos

Algoritmo de Prim

Con un solo origen

Entre todos los pares de nodos

Algoritmo de Dijkstra

Algoritmo de Dijkstra Formulacin de origen divido Formulacin de origen paralelo Algoritmo de Floyd

Algoritmos para grafos esparcidos

Problemas de caminos mnimos con un solo origen

Algoritmo de Dijkstra.

Es muy similar a la paralelizacin del Algoritmo de Prim.La matriz de adyacencia de pesos se particiona usando el mapping de bloques de 1-D. A cada uno de los p procesos se le asignan n/p columnas consecutivas de la matriz de adyacencia. Durante cada iteracin se lleva a cabo el clculo y la comunicacin entre procesos. El tiempo de ejecucin coincide con el del algoritmo de Prim.

Contenidos

Introduccin y representacin de grafos Algoritmos para grafos densos

rboles de expansin

Problemas de caminos mnimos

Algoritmo de Prim

Con un solo origen

Entre todos los pares de nodos

Algoritmo de Dijkstra

Algoritmo de Dijkstra Formulacin de origen divido Formulacin de origen paralelo Algoritmo de Floyd

Algoritmos para grafos esparcidos

Problemas de caminos mnimos entre todos los pares (I)

Algoritmo de Dijkstra.

Formulacin del origen dividido.

Eficiente si el nmero de procesos no supera al nmero de vertices (p<=n). Utiliza n procesos. Cada proceso Pi encuentra las rutas ms cortas desde el vrtice vi a todos los dems vertices mediante el algoritmo de Dijkstra secuencial. No se necesita comunicacin entre procesos. Tsequencial = (n3) Tparalelo = (n2)

Problemas de caminos mnimos entre todos los pares (y II)

Formulacin del origen paralelo.


Eficiente si el nmero de procesos es superior al nmero de vertices (p>n). Primero paralelizamos el problema asignando cada vertice a un conjunto de procesos distintos (p/n). Despus paralelizamos el algoritmo para un solo origen mediante el uso de un conjunto de p/n procesos para resolverlo. A diferencia de la formulacin de origen divido, si hay cierta sobrecarga por la comunicacin. Tsequencial = (n3) Tparalelo = (n3 / p) + (n log p)

ejecucin

comunicacin

BIBLIOGRAFA

Kumar, Grama, Gupta, Karypis: Introduction to Parallel Computing. Design and Analysis of Algorithms. The Benjamin Cumming Publishing Company. 1994 Gins Garcia Mateos. Apuntes Algoritmos y Estructura de Datos.