GRAFOS: ALGORITMOS FUNDAMENTALES

Slides:



Advertisements
Presentaciones similares
ALGORITMOS DE KRUSKAL Y PRIM
Advertisements

Caminos más cortos a partir de múltiples fuentes en un grafo
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
GRAFOS Presentado por: Oscar Leonardo Ramírez John Freddy Sandoval
GRAFOS ESTRUCTURAS DE DATOS.
NUMERO DE CONTROL: NOMBRE DEL TRABAJO: MAPA CONCEPTUAL
INSTITUTO TECNOLOGICO de Villahermosa
Ordenamiento Topológico
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.
Instituto Tecnológico De Villahermosa
Investigación de Operaciones II
Investigación de Operaciones II
ALGORITMO DEL ÁRBOL DE MÍNIMA EXPANSIÓN
Tema 5 Grafos. Recorridos..
Método de Ford-Fulkerson
RafaC - Matemática Discreta - UCM 07/08



Definiciones: conjuntos, grafos, y árboles

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
PROGRAMACIÓN PARALELA EN ALGORITMOS SOBRE GRAFOS
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.
PROPIEDADES DE LAS REDES DE PETRI
Teoria de grafos.-clase 4
Definiciones: conjuntos, grafos, y árboles
Trabajo presentado por: LUIS FERNANDO OBANDO ING
Árbol recubridor mínimo Distancias
I n s t i t u t o T e c n o l ó g i c o d e T e c n o l ó g i c o d e V i l l a h e r m o s a ING. EN SISTEMAS CATEDRATICO: I.I. Zinath Javier Gerónimo.
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
Diseño y análisis de algoritmos

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

Análisis de algoritmos
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:
1 Algoritmos Avaros (Greedy Algorithms) Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
Jorge Mondragón Leonardo Herrera Cristian Fernández
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Estructuras de datos para Grafos
Tópicos I Árboles, montículos y grafos
Experimentación Numérica
1 Single-Source Shortest Paths “Camino más corto desde/hacia una fuente” Agustín J. González ELO320: Estructura de Datos y Algoritmos 1.er. Sem
Minimum Spanning Tree (Árbol de Expansión Mínima)
Tema 10: Algoritmos voraces
Agustín J. González ELO-320: Estructura de Datos Y Algoritmos
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Minimum Spanning Tree (Árbol de Expansión Mínima)
Estructura de Datos 4 Grafos Dirigidos
Instituto Tecnológico De Villahermosa Alumno: Lázaro García Hernández.
ANALISIS DE REDES UNIDAD PROCEDIMIENTO DE OPTIMIZACION
UNIDAD 2 Grafos Árboles abarcadores mínimos Caminos más cortos.
Matriz inversa Método Gauss Jordan.
Matemáticas Discretas MISTI
Recorridos de grafos Segunda Parte M.C. Meliza Contreras González.
ALGORITMO FLOYD WARSHALL
Transcripción de la presentación:

GRAFOS: ALGORITMOS FUNDAMENTALES ESTRUCTURAS DE DATOS

MATRIZ DE CAMINOS Es una matriz cuadrada P, Que representa si hay o no camino Entre dos vertices Vi y Vj

CIERRE TRANSITIVO Es el grafo resultante de la matriz de caminos Si un grafo es fuertemente conexo Su cierre transitivo es un grafo completo

UN POSIBLE ALGORITMO Entre Vi y Vj puede haber camino Directo, cuando A[i][j] == 1, camino de long. 1 O pasando por otros vertices Si solo analizamos pasar por un Vk extra Cuando A[i][k] == 1 && A[k][j] == 1, Long. 2 Si Vk puede ser V1 o V2 o … Vn, realmente (A[i][1] && A[1][j]) || (A[i][2] && A[2][j]) || (A[i][n] && A[3][n]) Que representa A * A, A2 Nos indica solo si hay un camino de long. 2 entre Vi y Vj La matriz de caminos indicara si hay camino ya sea De long. 1 o de long. 2 o de long. 3 o de long. N, es decir: B = A + A2 + A3 + A4 +…. An

WARSHALL: MAS EFICIENTE El anterior algoritmo Es poco eficiente, peor Cuando el grafo tiene muchos vertices Warshall propuso otro algoritmo Mas eficiente Calcular una secuencia de matrices cuadradas De 0s(no hay camino) y 1s(hay camino) P0, P1, P2, P3… PN La diferencia entre Pk y Pk-1 Se basa añadir un vertice Vk-1 al analisis Para saber y a traves de Vk-1 hay camino entre V1 y Vj

COMO FUNCIONA Existe una matriz inicial P0 La matriz que le sigue P1 Inidica si hay o no camino DIRECTO de Vi a Vj La matriz que le sigue P1 Indicaria si hay o no camino DIRECTO (Esto ya lo sabe P0) O pasando por V0 (añade este vertice al analisis) P2 Indicaria si hay camino DIRECTO o pasando por V0 (Esto ya lo sabe P1) O pasando por V1 P3 Indicaria si hay camino DIRECTO o pasando por V0, o V1 (Lo sabe P2) O pasando por V2 Pk Indicaria lo que ya sabe Pk-1 O pasando por Vk-1

EL ALGORITMO ENTONCES Debemos encontrar Pn En otras palabras: Sabiendo que Pk[i][j] es 1 si Pk-1[i][j] es 1 o Pk-1[i][k] && Pk-1[k][j] En otras palabras:

WARSHALL IMPLEMENTADO MatrizAdy Warshall(Grafo G){ int i, j, k; MatrizAdy P; CopiarMatrices(P, G.A); for(k = 0; k < G.nvertices; k++){ for(i = 0; i < G.nvertices; i++){ for(j = 0; j < G.nvertices; i++){ P[i][j]= P[i][j] || (P[i][k] && P[k][j]); } }return P;

CAMINOS MAS CORTOS Frecuentemente, se desea conocer en una red Cual es el camino mas corto Entre un par de vertices En este caso Si importa cuantos caminos existen Si ya conozco un camino, pero encuentro uno mejor, sustituir Se aplica el algoritmo de Dijkstra Es un algoritmo avido, ya que Resuelve el problema en sucesivos pasos En cada paso Selecciona la solucion mas optima

DIJKSTRA Dado un V0, Dijkstra busca un conjunto D con Las menores distancias de V0 al resto de vertices Al inicio, solo conocemos Las distancias de los adyacentes D es inicializada a Factor de peso para los adyacentes, Infinito para los no adyacentes D va ser mejorado sucesivamente Escogiendo el vertice Vk no elegido antes Que tenga la distancia mas corta V0, Vk Probamos si pasando por Vk Se puede obtener distancias mas cortas de las que tenemos Para cada Vertice restante del grafo

EJEMPLO DE DIJKSTRA De V1 AL RESTO 5 3 3 8 7 3 4 2 V1 3 4 ∞ 8 ∞ V2 3 4 Pasando por V3, Distacia de V1 a V5 seria 7, CAMBIAR Pasando por V2, Distacia de V1 a V5 seria 8, no hay mejora EJEMPLO DE DIJKSTRA V1 V2 V3 V4 V5 V6 Escogidos Vertice Evaluado D[0] D[1] D[2] D[3] D[4] D[5] De V1 AL RESTO 5 V1 V1 3 4 ∞ 8 ∞ V2 V5 3 V1,V2 V2 3 4 ∞ 8 ∞ 3 8 V1,V2,V3 V3 3 4 ∞ 7 ∞ V6 V1 7 V5 3 4 14 8 10 V1,V2,V3,V5 3 V6 3 4 12 8 10 4 2 V1,V2,V3,V5,V6 V4 V3 1. D[] se incializa con F.P. de adyacentes al origen 2. Escoger vertice Vk que no haya sido escogido, con la menor distancia del Vevaluado a Vk Repetir hasta k se hayan visitado todos los vertices 3. Revisar si alguna distancia puede ser mejorada pasando por Vk

DIKSTRA 1. Se crea una lista de VDiks con todos los vertices del grafo, y cada VDiks creado tambien se encola 2. Se saca de la cola el menor VDiks por distancia(vmenor) 3. Por cada VDiks v de la lista, se revisa Si su vertice es adyacente al vertice de vmenor y si pasando por vmenor se puede conseguir una mejor distancia Si es asi, se modifica v con los nuevos datos 4. Se repite todo desde el paso 2 hasta que no haya nada mas en la cola

CAMINOS MAS CORTOS ENTRE TODOS LOS PARES DE VERTICES Es una generalizacion de lo anterior Si se puede obtener la menor distancia De un V0 al resto Tambien se puede obtener La menor distancia de todos los vertices Al resto Se podria aplicar Dijkstra A cada vertice Y obtener n vectores D, o , una matriz F Pero se puede aplicar otro algoritmo

FLOYD Este algoritmo se basa en Warshall Se calculaba una secuencia de matrices Pk Cada Pk evaluaba dos opciones Que Pk-1 indicara camino entre Vi y Vj o Que Pk-1 indicara camino entre Vi y Vj Pasando por Vk Floyd tambien calcula Fk, pero Cada Fk escogera la menor distancia entre Distancia entre Vi y Vj, indicado por Fk-1 o Distancia entre Vi y Vj pasando por Vk, indicado por Fk-1

ARBOL DE EXPANSION DE COSTE MINIMO Dado un grafo G No dirigido Valorado, con pesos no negativos El arbol de expansion minima Es un grafo parcial conexo a partir de G Tal que la suma de sus aristas sea minima Ejemplo de aplicacion Redes de comunicaciones, de costo minimo

ALGORITMO DE PRIM Dado el grafo, se debe seleccionar Un vertice de inicio v Dicho vertice v se añade a un conjunto W Escoger el vertice u que no pertenezca a W Adyacente a cualquiera de los vertices de W Y que tenga un costo minimo Añadir el vertice u al conjunto W Repetir proceso hasta que V == W

EJEMPLO Desde 1 1 2 1 2 3 6 4 4 6 5 3 8 4 5 6 7 4 3 7 W = 1 , 2 , 3 , 4 , 5 , 7 , 6

PRIM 1. Se crea un grafo nuevo con los mismos vertices del grafo original 2. vorigen se marca como visitado 3. Los arcos de vorigen, cuyos vertices destino no han sido visitados, se encolan por peso 4. Se desencola el menor en peso de los arcos no visitados(amenor) y su vertice destino se marca como visitado 5. En el nuevo grafo, se lanza el arco correspondiente a amenor(de ida y vuelta) 6. Se repite todo desde el punto 3 pero para un vorigen igual al vertice del arco sacado(amenor) hasta que el numero de vertices marcados como visitados sea igual al numero de vertices del grafo

ALGORITMO DE KRUSKAL Kruskal se basa en el concepto de Componentes conexas Sabemos que en el arbol de expansion Deben aparecer todos los vertices de G Lo que no sabemos aun Es que arcos escoger para unirlos Lo que a Kruskal le interesara elegir Son los arcos, no los vertices, como en Prim

COMO FUNCIONA Primero añadir todos los vertices al arbol A Estos forman n componentes conexas Luego elegir el arco de costo minimo Que no haya sido elegido anteriormente y que No una dos vertices de una misma componente Este proceso se repite hasta que Se hayan unido todos los vertices Es decir, n-1 veces

EJEMPLO Desde 1 1 2 1 2 3 1 2 3 5 6 4 4 6 3 8 4 5 6 4 5 6 7 4 3 7 7