13/09/2011                                                   Algoritmos y Estructura de Datos II                          ...
13/09/2011                                      Fuertemente conexo                                                        ...
Algoritmos y Estructura de Datos II                                         Algoritmos y Estructura de Datos II           ...
13/09/2011                                         Floyd-Warshall                                                         ...
13/09/2011                                      Algoritmo de Dijkstra                                                     ...
13/09/2011                                      Algoritmo de Dijkstra                                                     ...
13/09/2011                                          Algoritmo de Dijkstra                                                 ...
Upcoming SlideShare
Loading in …5
×

U1 aed2 di_grafos_11

1,389 views

Published on

Published in: Career
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,389
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

U1 aed2 di_grafos_11

  1. 1. 13/09/2011 Algoritmos y Estructura de Datos II Agenda 2  Digrafo  DFS Dirigido DIGRAFOS  Alcanzabilidad Algoritmos y Estructura de Datos II  Fuertemente conexo  Algoritmo fuertemente conexo  Clausura transitiva  Floyd-Warshall: clausura transtiva  Algoritmo Floyd-Warshall  Grafos ponderados  Problema del camino más corto - ruta mínima  Algoritmo de Dijkstra UCSM - 2011 Karim Guevara Puente de la Vega DiGrafos DFS Dirigido 3 4  Es un grafo cuyas aristas son  Especialización de los algoritmos DFS y BFS, para todas dirigidas recorrer un grafo a lo largo de la dirección de sus aristas  Propiedades  En el algoritmo DFS dirigido, se tiene cuatro tipos deAlgoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II  Sea un grafo G=(V, E) tal que aristas: cada arista va en una  arista discovery, back, fordward, cross dirección  DFS dirigido determina a que vertices podemos llagar a  Si G es simple, m≤n(n-1) partir de un vértice determinado s.  Aplicaciones  Planificación: Arista (a,b) significa que la tarea a debe ser completada antes que la tarea b empiece DFS Dirigido Alcanzabilidad 5 6  Back edge(v,w)  El árbol DFS con raíz en v: Back edge  w es un ancestro de v en el árbol Forward edge  Vértices alcanzables a partir de v vía las rutas dirigidas de aristas descubiertas Cross edgeAlgoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II  Forward edge(v,w) Discovery edge  v es un ancestro (pero no el padre) de w en el árbol de aristas descubiertas  Cross edge(v,w)  w esta en el mismo nivel que v o en el siguiente nivel en el árbol de aristas descubiertas  Discovery edge(v,w)  v es el padre de w en el árbol de aristas descubiertas 1
  2. 2. 13/09/2011 Fuertemente conexo Algoritmo fuertemente conexo 7 8  Un dígrafo G es fuertemente conexo, si para cualquier  Elija un vértice v en G par de vértices u y v de G, u es alcanzable desde v, y  Realizar DFS desde v viceversa  Si hay algún vértice w noAlgoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II  Cada vértice es alcanzable desde todos los vértices visitado, imprimir “no”  Sea G’ el grafo G con los vértices invertidos  Realizar DFS desde v in G’  si hay un w no visitado, imprimir “no”  sino, imprimir “si”  Tiempo de ejecución: O(n+m) Clausura transitiva Cálculo de la Clausura Transitiva 9 10  Dado un dígrafo G, la  Se puede realizar DFS Si hay un clausura transitiva de G es camino desde A iniciando en cada a B y de B a C, el dígrafo G* tal que: vértice entonces hay unAlgoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II  G* tiene los mismos vértices  O(n(n+m)) camino desde A que G aC  Si G tiene una ruta dirigida de u a v (u≠v), G* tiene una  Alternativamente… arista dirigida desde u a v aplicar Programación  La clausura transitiva provee dinámica: Algoritmo información de la Floyd-Warshall alcanzabilidad del dígrafo Floyd-Warshall: Clausura Transitiva Floyd-Warshall 11 12  Idea 1: número de vértices 1,2, …, n  En v1  Idea 2: considerar las rutas que use solamente los vértices 1,2, …, k como vértices intermediosAlgoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II 2
  3. 3. Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II 17 15 13  En v5 En v3 En v1 Floyd-Warshall Floyd-Warshall Floyd-Warshall En v2 En v6 En v4 Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II 18 16 14  En v6 En v4 En v2 Floyd-Warshall Floyd-Warshall Floyd-Warshall En v5 En v3 13/09/20113
  4. 4. 13/09/2011 Floyd-Warshall Algoritmo de Floyd-Warshall 19 20 En v7  Numera los vértices de G: v1, …, vn y calcula una serie de digrafos G0, …, Gn  G0 = GAlgoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II  Gk tiene una arista dirigida (vi, vj) si G tiene una ruta dirigida desde vi a vj con vértices intermedios en el conjunto {v1,…,vk}  Se tiene que Gn = G*  En la fase k, el digrafo Gk es calculado desde Gk-1  Tiempo de ejecución: O(n3), asumiendo que areAdjacent es O(1) Algoritmos y Estructura de Datos II Grafos Ponderados 22  Un grafo ponderado es aquel, en donde cada una de las aristas tiene un valor asociado, denominado peso. RUTAS MINIMAS  Este peso puede representar: distancias, costos, etc. Algoritmos y Estructura de Datos II  P.e.: UCSM - 2011 Karim Guevara Puente de la Vega Problema del camino más corto Problema del camino más corto 23 24  Dado un grafo ponderado y dos vértices u y v, encontrar  Propiedad: el camino con el menor peso que hay entre u y v.  Una subruta de una ruta corta es por si misma una ruta corta  P.e.: el camino más corto entre PVD y HNL  Una fuente de rutas cortas:Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II  Aplicaciones:  Dado un grafo ponderado G y un vértice s de G, las rutas más  Enrutamiento de paquetes en internet cortas de s a cada uno de los otros vértices los encontraremos en un árbol.  Reservaciones de vuelos  P.e.: el árbol de rutas cortas desde Providence (PVD) 4
  5. 5. 13/09/2011 Algoritmo de Dijkstra Algoritmo de Dijkstra 25 26  El más famoso de los algoritmos para el cálculo del  Funcionamiento del algoritmo: camino de costo mínimo.  Sea PERM el conjunto que contiene inicialmente el vértice  Escoge un vértice como raíz de la búsqueda. raíz s.Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II  Luego calcula el costo mínimo para todos los demás  PERM contiene todos los vértices para los cuales ya fueron vértices. determinados los menores caminos usando apenas vértices en PERM.  Puede ser usado en grafos dirigidos y no dirigidos.  Para cada vértice z fuera de PERM mantenemos la menor distancia en D[z] de s a z.  Es necesario almacenar también el vértice adyacente (precedente) a z en path[z]. Algoritmo de Dijkstra Algoritmo de Dijkstra 27 28  Funcionamiento del algoritmo (cont.):  P.e.:  Se toma el vértice (de los que aún no están en PERM) con la 1. Se define el nodo origen (s) y se lo incluye en PERM. Se menor distancia D. atribuye cero a su distancia, el resto tiene distancia infinita ().Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II  Este vértice es adicionado a PERM, lo llamaremos current, y se recalculan las distancias (D) para los vértices adyacentes vértice PERM D path a él y que no estén en PERM. s si 0 - u no  - D[z] = min(D[z], D[z]+peso) x no  -  Puede haber un camino menor a partir de s pasando por el v no  - vértice current y no  -  Si hay un camino más corto se necesita actualizar path[z] Algoritmo de Dijkstra Algoritmo de Dijkstra 29 30  P.e.:  P.e.: 2. A partir de s se calculan las distancias de los vértices 3. Entre los vértices que no pertenecen a PERM se escoge el de adyacentes (u y x). A estos les llamaremos z: menor distancia (x).Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II if ( D[z] > D[s] + peso(s,z)){ D[z] = D[s] + peso(s,z); path[z] = s; } vértice PERM D path vértice PERM D path s si 0 - s si 0 - u no 10 s u no 10 s x no 5 s x no 5 s v no  - v no  - y no  - y no  - 5
  6. 6. 13/09/2011 Algoritmo de Dijkstra Algoritmo de Dijkstra 31 32  P.e.:  P.e.: 4. Incluir a x en PERM y a partir de x se consultan los vértices 5. Entre todos los vértices que no pertenecen a PERM se escoge el adyacentes a él que no estén en PERM (y, u y v), y se recalculan de menor distancia (y).Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II sus distancias. vértice PERM D path vértice PERM D path s si 0 - s si 0 - u no 8 x u no 8 x x si 5 s x si 5 s v no 14 x v no 14 x y no 7 x y no 7 x Algoritmo de Dijkstra Algoritmo de Dijkstra 33 34  P.e.:  P.e.: 6. Se incluye y en PERM y a partir de y se consultan los vértices 7. Entre todos los vértices que no están en PERM se escoge el de adyacentes a él que no están en PERM (v), calcular sus menor distancia (u).Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II distancias. vértice PERM D path vértice PERM D path s si 0 - s si 0 - u no 8 x u no 8 x x si 5 s x si 5 s v no 13 y v no 13 y y si 7 x y si 7 x Algoritmo de Dijkstra Algoritmo de Dijkstra 35 36  P.e.:  P.e.: 8. Se incluye u a PERM y a partir de u se consultan los vértices 9. Entre todos los vértices que no están en PERM se escoge el de adyacentes a él que no estén en PERM para calcular sus menor distancia (v).Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II distancias. vértice PERM D path vértice PERM D path s si 0 - s si 0 - u si 8 x u si 8 x x si 5 s x si 5 s v no 9 u v no 9 u y si 7 x y si 7 x 6
  7. 7. 13/09/2011 Algoritmo de Dijkstra Algoritmo de Dijkstra 37 38  P.e.: 10. Finalmente v es incluido en PERM. En este punto todos los vértices están en PERM y la búsqueda finaliza.Algoritmos y Estructura de Datos II Algoritmos y Estructura de Datos II vértice PERM D path s si 0 - u si 8 x x si 5 s v si 9 u y si 7 x Extensión del algoritmo Dijkstra 39  Se puede extender el Algorithm DijstraShortestPathsTree(G,s) algoritmo de Dijkstra .. . para retornar el árbol for all v  G.vertices() .. .Algoritmos y Estructura de Datos II de rutas cortas desde un vertice inicial a todos P[v] =  los otros vértices. .. .  Se almacena con cada while Q.isEmpty() vértice z etiquetas que u Q.removeMin() permitan seguir el for each vertex z adjacent to n such that z is in Q camino de regreso (la if D[z] > D[u]+weight(u,z) then arista antecesora en el D[z]  D[u]+weight(u,z) arbol): change to D[z] the key of z in Q  Arreglo P[z]. P[z]  edge(u,z) 7

×