PROGRAMACIÓN PARALELA EN ALGORITMOS SOBRE GRAFOS

Slides:



Advertisements
Presentaciones similares
Tania Guzmán García Luis González Varela Alexandre González Rivas
Advertisements

ALGORITMOS DE KRUSKAL Y PRIM
Diseño y análisis de algoritmos
GRAFOS Presentado por: Oscar Leonardo Ramírez John Freddy Sandoval
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
GRAFOS: ALGORITMOS FUNDAMENTALES
Sesión 3: Teoría de Grafos
Teoría de Grafos I semestre 2009 UNIVERSIDAD NACIONAL DE INGENIERIA
OPTIMIZACIÓN EN REDES EN ALGUNOS PROBLEMAS DE OPTIMIZACIÓN PUEDE SER ÚTIL REPRESENTAR EL PROBLEMA A TRAVÉS DE UNA GRÁFICA: ruteo de vehículos, distribución.
MATEMÁTICAS DISCRETAS.
“GRAFOS” Chacón Zamora José Christian González García Andrea
Investigación de Operaciones II
Investigación Operativa II
Investigación Operativa II Dra. Sandra Gutiérrez.
Tema 5 Grafos..
Tema 5 Grafos. Implementación (I)..
ESTRUCTURAS DE DATOS AVANZADAS
Método de Ford-Fulkerson
RafaC - Matemática Discreta - UCM 07/08
Grafos dualmente cordales y sus relaciones con otros tipos de grafos


Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
Problemes de Viatjants
AED I. Estructuras de Datos.
GRAFOS HUGO ARAYA CARRASCO.
Estructuras de datos y algoritmos
1 Algoritmos Elementales de Grafos Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem
Programación entera y grafos
Material de apoyo Unidad 4 Estructura de datos
Ejemplos de Grafos: Red de tráfico con caminos y cruces.
Grafos. Un Grafo G es un par de conjuntos (V, E), donde V es un conjunto no vacío de elementos llamados vértices o nodos y E es un conjunto formado por.
Teoria de grafos.-clase 4
ARQUITECTURAS SIMD TIPOS
Definiciones: conjuntos, grafos, y árboles
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
Árbol recubridor mínimo Distancias
Single-Source Shortest Paths “Camino más corto desde/hacia una fuente”
Problemas de Decisión y Optimización
Matemáticas Discretas
Diseño y análisis de algoritmos

Parte II. Algorítmica. 3. Algoritmos voraces.

Algoritmos y Estructuras de Datos III (segunda parte) 1er cuatrimestre 2010 Min Chih Lin Irene Loiseau.
Aplicación de estructuras de datos
Surge cuando se necesita un modelo costo-efectividad que permita transportar ciertos bienes desde un lugar de origen a un destino que necesita aquellos.
INSTITUTO TECNOLÓGICO DE VILLAHERMOSA. CATEDRATICO:
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Diseño y análisis de algoritmos
Matemáticas Discretas
Estructuras de datos para Grafos
s t a c b d Grafos.
Parte I. Estructuras de Datos.
Sesión 3: Teoría de Grafos
Parte I. Estructuras de Datos.
Definiciones: conjuntos, grafos, y árboles
1 Flujo Máximo Agustín J. González ELO320: Estructura de Datos y Algoritmos.
Agustín J. González ELO-320: Estructura de Datos Y Algoritmos
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Ejemplos del Diseño de Algoritmos Paralelos (Transparencias de McGraw-Hill Modificadas)
Cecilia Laborde González
Estructura de Datos 4 Grafos Dirigidos
Instituto Tecnológico De Villahermosa Alumno: Lázaro García Hernández.
Heap Fibonacci heap de Fibonacci es una estructura de datos similar a un heap binomial pero con mejor coste amortizado. se utiliza para mejorar el tiempo.
UNIDAD 2 Grafos Árboles abarcadores mínimos Caminos más cortos.
GRAFOS.
M.C. Meliza Contreras González
Matemáticas Discretas MISTI
Recorridos de grafos Segunda Parte M.C. Meliza Contreras González.
Transcripción de la presentación:

PROGRAMACIÓN PARALELA EN ALGORITMOS SOBRE GRAFOS

Contenidos Introducción y representación de grafos Algoritmos para grafos “densos” Árboles de expansión Algoritmo de Prim Problemas de caminos mínimos Con un solo origen Algoritmo de Dijkstra Entre todos los pares de nodos Formulación de origen divido Formulación de origen paralelo Algoritmo de Floyd Algoritmos para grafos “esparcidos”

Contenidos Introducción y representación de grafos Algoritmos para grafos “densos” Árboles de expansión Algoritmo de Prim Problemas de caminos mínimos Con un solo origen Algoritmo de Dijkstra Entre todos los pares de nodos Formulación de origen divido Formulación de origen paralelo Algoritmo de Floyd Algoritmos para grafos “esparcidos”

Introducción y representación de grafos (I) Un grafo G es una tupla G=(V,A), donde V es un conjunto de vértices y A es un conjunto de aristas o arcos. Cada arista es un par (v,w) donde v,w pertenecen a V. TERMINOLOGÍA Grafo no dirigido: las aristas no están ordenadas. Grafo dirigido: los pares están ordenados. Un vértice w es adyacente a otro v si y sólo si (v,w) pertenece a A. Camino de un vértice 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 vértice son iguales. Un grafo es conexo si hay un camino entre cualquier par de vértices. Un grafo es completo si existe una arista entre cualquier par de vértices. 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.

Introducción y representación 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 sólo 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 simétrica. Útil para grafos densos (|A| ≈ |V|2).

Introducción y representación 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 añade 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 Introducción y representación de grafos Algoritmos para grafos “densos” Árboles de expansión Algoritmo de Prim Problemas de caminos mínimos Con un solo origen Algoritmo de Dijkstra Entre todos los pares de nodos Formulación de origen divido Formulación de origen paralelo Algoritmo de Floyd Algoritmos para grafos “esparcidos”

Árboles de expansión: Algoritmo de Prim (I) Un árbol de expansión 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 vértices de G. El algoritmo de Prim intenta encontrar un árbol de expansión de un grafo, cuyas aristas sumen el peso mínimo.

Árboles de expansión: Algoritmo de Prim (II)

Árboles de expansión: Algoritmo de Prim (III) Método de paralelización. Supongamos p procesos y n vertices. El conjunto V se divide en p subconjuntos usando el “mapping” de bloques de 1 dimensión. 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 expansión: Algoritmo de Prim (IV) Cada proceso Pi realiza el cálculo de di[u], y el mínimo global se obtiene sobre todos los di[u] mediante una operación de reducción que se almacena en P0. El proceso P0 ahora almacena el vértice u, el cual se inserta en VT. A continuación el proceso P0 hace una operación de broadcast de u, notificando a todos los procesos que actualicen los valores de d[v] para sus vértices locales. El proceso Pi que contenga a u será el que lo introduzca en Vt.

Árboles de expansión: Algoritmo de Prim (y V) Al paralelizar el algoritmo de Prim se logra un tiempo de ejecución de: Tsequencial = Θ (n2) Tparalelo = Θ (n2 / p) + Θ (n log p) ejecución comunicación

Contenidos Introducción y representación de grafos Algoritmos para grafos “densos” Árboles de expansión Algoritmo de Prim Problemas de caminos mínimos Con un solo origen Algoritmo de Dijkstra Entre todos los pares de nodos Formulación de origen divido Formulación de origen paralelo Algoritmo de Floyd Algoritmos para grafos “esparcidos”

Problemas de caminos mínimos con un solo origen Algoritmo de Dijkstra. Es muy similar a la paralelización 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 iteración se lleva a cabo el cálculo y la comunicación entre procesos. El tiempo de ejecución coincide con el del algoritmo de Prim.

Contenidos Introducción y representación de grafos Algoritmos para grafos “densos” Árboles de expansión Algoritmo de Prim Problemas de caminos mínimos Con un solo origen Algoritmo de Dijkstra Entre todos los pares de nodos Formulación de origen divido Formulación de origen paralelo Algoritmo de Floyd Algoritmos para grafos “esparcidos”

Problemas de caminos mínimos entre todos los pares (I) Algoritmo de Dijkstra. Formulación del origen dividido. Eficiente si el número de procesos no supera al número de vertices (p<=n). Utiliza n procesos. Cada proceso Pi encuentra las rutas más cortas desde el vértice vi a todos los demás vertices mediante el algoritmo de Dijkstra secuencial. No se necesita comunicación entre procesos. Tsequencial = Θ (n3) Tparalelo = Θ (n2)

Problemas de caminos mínimos entre todos los pares (y II) Formulación del origen paralelo. Eficiente si el número de procesos es superior al número de vertices (p>n). Primero paralelizamos el problema asignando cada vertice a un conjunto de procesos distintos (p/n). Después paralelizamos el algoritmo para un solo origen mediante el uso de un conjunto de p/n procesos para resolverlo. A diferencia de la formulación de origen divido, si hay cierta sobrecarga por la comunicación. Tsequencial = Θ (n3) Tparalelo = Θ (n3 / p) + Θ (n log p) ejecución comunicación

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