Un problema maloliente  Alguien dejó pescado podrido en todas las casas. ¿Dónde está?
Ruta mas corta <ul><li>Dado un grafo G=(V,E) y un vértice s, encuentre el camino más corto desde s a todos los demás nodos...
<ul><li>Consideraremos grafos dirigidos con peso, </li></ul><ul><li>G(V,E), función de peso w: E ---  Reales </li></ul><u...
Definicion:  del peso de la ruta mas corta <ul><li>Ζ (u,v)= </li></ul><ul><ul><ul><ul><li>min(w(p)) :u--  v si hay una ru...
Definicion de ruta mas corta <ul><li>La ruta mas corta entre el vertice u y v es definida como cualquier ruta p con peso w...
variantes <ul><li>Problema de una fuente y su ruta mas corta. </li></ul><ul><li>Problema de trayectorias mas cortas y un s...
Pesos negativos Dijkstra asume todos > 0 3 -1 0 5 11 3 -4 6 -3 5 8 3 -6 7 4 ∞ ∞ ∞ ∞
Optima subestructura de la ruta mas corta <ul><li>Propiedad: rutas mas cortas entre dos vértices contiene otra rutas mas c...
Relajar!!!! 5 9 6 5 2 7 5 6 2 u v u v 2 2 2 Relaja(u,v) D[v]>=d[u]+w(u,v) D[v]<=d[u]+w(u,v) No relajar
Inicializa una fuente <ul><li>For cada vertice v  ε  V[G] </li></ul><ul><li>do d(v)  ---∞ </li></ul><ul><li>Л [v]  -NIL ...
ALGORITMO <ul><li>DIJKSTRA(G,w,s) </li></ul><ul><li>1 inicializa el punto de inicio (G,s) </li></ul><ul><li>2  S   vacio ...
Veamos
Eficiencia de los algoritmos <ul><li>El algoritmo de ruta mas corta sin costos es O( |E| + |V| ). </li></ul><ul><li>El cos...
Ruta mas corta: grafos aciclicos <ul><li>En el caso de grafos sin ciclos el algoritmo de Dijkstra se puede simplificar si ...
Problemas de flujo en redes <ul><li>En los problemas de flujo se asocia a cada arista una capacidad de flujo y/o un costo....
Flujo Máximo <ul><li>Se tiene un grafo dirigido G=(V,E) en donde c v,w  es capacidad de la arista v,w. </li></ul><ul><li>S...
Análisis de Flujo Maximo <ul><li>El método para seleccionar la ruta en cada etapa determina el tiempo de ejecución del alg...
Upcoming SlideShare
Loading in …5
×

Rutamascorta1

2,707 views

Published on

La ruta mas corta para llegar a alguna parte

1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
2,707
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
87
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Rutamascorta1

  1. 1. Un problema maloliente Alguien dejó pescado podrido en todas las casas. ¿Dónde está?
  2. 2. Ruta mas corta <ul><li>Dado un grafo G=(V,E) y un vértice s, encuentre el camino más corto desde s a todos los demás nodos en V </li></ul><ul><li>Existen dos variantes: </li></ul><ul><ul><li>Los arcos no tienen distancia. En este caso, la longitud de una ruta es simplemente la cantidad de aristas incluidas en el camino. </li></ul></ul><ul><ul><li>Los arcos tienen asociada una medida de distancia. Este caso es mas complicado en particular si se permiten distancias negativas. En caso de ciclos con costo negativo no existe solución </li></ul></ul>
  3. 3. <ul><li>Consideraremos grafos dirigidos con peso, </li></ul><ul><li>G(V,E), función de peso w: E ---  Reales </li></ul><ul><li>El peso de un grafo es la suma de los pesos de sus lados p=<v0,v1,v2,v3,v4,v5> </li></ul><ul><li>W(p)= ∑w(vi-1,vi) </li></ul>Ruta mas corta: sin costos
  4. 4. Definicion: del peso de la ruta mas corta <ul><li>Ζ (u,v)= </li></ul><ul><ul><ul><ul><li>min(w(p)) :u--  v si hay una ruta entre u y v </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Infinito de otra manera. </li></ul></ul></ul></ul>
  5. 5. Definicion de ruta mas corta <ul><li>La ruta mas corta entre el vertice u y v es definida como cualquier ruta p con peso w(p)= Ζ (u,v) </li></ul>
  6. 6. variantes <ul><li>Problema de una fuente y su ruta mas corta. </li></ul><ul><li>Problema de trayectorias mas cortas y un solo destino. </li></ul><ul><li>Problema de la ruta mas corta entre dos puntos. </li></ul><ul><li>Problema de ruta mas corta entre todos los pares de nodos. </li></ul>
  7. 7. Pesos negativos Dijkstra asume todos > 0 3 -1 0 5 11 3 -4 6 -3 5 8 3 -6 7 4 ∞ ∞ ∞ ∞
  8. 8. Optima subestructura de la ruta mas corta <ul><li>Propiedad: rutas mas cortas entre dos vértices contiene otra rutas mas cortas entre ellos. </li></ul><ul><li>Propiedad de la Relajación </li></ul><ul><ul><li>Consiste en probar si un lado (u,v) pude mejorar la ruta mas corta a v, visitando u y actualizando la distancia a v y los predecesores a v. </li></ul></ul>
  9. 9. Relajar!!!! 5 9 6 5 2 7 5 6 2 u v u v 2 2 2 Relaja(u,v) D[v]>=d[u]+w(u,v) D[v]<=d[u]+w(u,v) No relajar
  10. 10. Inicializa una fuente <ul><li>For cada vertice v ε V[G] </li></ul><ul><li>do d(v)  ---∞ </li></ul><ul><li>Л [v]  -NIL </li></ul><ul><li>d(s)  --0 </li></ul>
  11. 11. ALGORITMO <ul><li>DIJKSTRA(G,w,s) </li></ul><ul><li>1 inicializa el punto de inicio (G,s) </li></ul><ul><li>2 S  vacio </li></ul><ul><li>3 Q  V[G] </li></ul><ul><li>4 while Q ! = vacio </li></ul><ul><li>5 do u  extrae-minimo(Q) </li></ul><ul><li>6 S  S U {u} </li></ul><ul><li>7 for cada vertice v ε adjacente[u] </li></ul><ul><li>8 do relaja(u,v,w) </li></ul>
  12. 12. Veamos
  13. 13. Eficiencia de los algoritmos <ul><li>El algoritmo de ruta mas corta sin costos es O( |E| + |V| ). </li></ul><ul><li>El costo del algoritmo de Dijkstra depende de cómo se implemente la lista de vértices: </li></ul><ul><ul><li>Si se recorre la lista de vértices en secuencia cada vez que se busca el v.dist mínimo el algortimo es O(|E|+|V| 2 ) </li></ul></ul><ul><ul><li>Si se use una cola de prioridad el algoritmo es O(|E|log |V|) o O(|V|log |V|). </li></ul></ul><ul><li>Si se permiten costos negativos el algoritmo es O(|E|·|V|) </li></ul>
  14. 14. Ruta mas corta: grafos aciclicos <ul><li>En el caso de grafos sin ciclos el algoritmo de Dijkstra se puede simplificar si los vértices se procesan en orden topológico. </li></ul><ul><li>Se puede hacer el calculo en un paso en la medida en que se produce el ordenamiento ya que una vez calculada la distancia a un nodo esta no cambia. </li></ul><ul><li>La eficiencia del algoritmo modificado es O(|E|+|V|). </li></ul><ul><li>La aplicación mas común es en la determinación de rutas criticas (mas larga) en proyectos de actividades (PERT/CPM) </li></ul>
  15. 15. Problemas de flujo en redes <ul><li>En los problemas de flujo se asocia a cada arista una capacidad de flujo y/o un costo. Además, algunos vértices tienen flujos entrantes o salientes. Algunos problemas típicos son: </li></ul><ul><ul><li>Flujo máximo: determinar la máxima cantidad de flujo que puede circular desde un nodo inicial s hasta un nodo final t . </li></ul></ul><ul><ul><li>Flujo a costo mínimo: determinar el flujo en los arcos para satisfacer los flujos entrantes y salientes en los vértices con un mínimo costo. </li></ul></ul>
  16. 16. Flujo Máximo <ul><li>Se tiene un grafo dirigido G=(V,E) en donde c v,w es capacidad de la arista v,w. </li></ul><ul><li>Se usará un grafo auxiliar R=(V,E R ) llamado el grafo residual. Inicialmente R=G. </li></ul><ul><li>En la etapa k se escoge una ruta entre s y t ; se determina el máximo flujo f k que puede pasar por ella. </li></ul><ul><li>Se resta f k de la capacidad todos los arcos de R que van en el sentido de la ruta y se suma f k a los que van en sentido contrario (si estos no existen se agregan a R). </li></ul><ul><li>Si no existe ninguna ruta de s a t termina el algoritmo. El flujo máximo es  f i . </li></ul>
  17. 17. Análisis de Flujo Maximo <ul><li>El método para seleccionar la ruta en cada etapa determina el tiempo de ejecución del algoritmo. </li></ul><ul><li>Si el flujo total es f y cada ruta aumenta el flujo en al menos 1 entonces el algoritmo es O(f·|E|) </li></ul><ul><li>Si siempre se selecciona la ruta con el mayor flujo (esto puede lograrse modificando una línea del algoritmo de Dijkstra) entonces flujo maximo es O(|E| 2 log |V| log cap max ). </li></ul><ul><li>Si siempre se escoge la ruta con el menor número de arcos, entonces el algoritmo es O(|E| 2 ·|V|) </li></ul><ul><li>Se han encontrado algoritmos de orden O(|E||V|log(|V| 2 /E) y O(|E||V|+|V| 2+  ) </li></ul>

×