Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porDominga Corbo Modificado hace 10 años
1
Caminos más cortos a partir de múltiples fuentes en un grafo
2
¿Qué es un grafo?
3
Un grafo es… Una pareja ordenada G(V,E) con las siguientes características: V es un conjunto de vértices E es un conjunto de parejas de distintos vértices, entre los cuales se trazan líneas (aristas)
4
Grafos ponderados 2 4 2 1 4 1 1 3 3 5 1 3 5 1
5
Entonces l(a) = peso de la arista ‘a’
l(x,y) = peso de la arista de x a y
6
¿Y qué podemos modelar? 1 3 5 6 4 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2
7
Problema de la ruta mínima (Single Source)
2 4 2 1 4 1 1 3 3 5 1 3 5 1 ¿Cómo llego del punto 1 a 4 de la manera más corta posible?
8
¿Cómo se resuelve? Existen algoritmos genéricos para ello:
Dijkstra Algorithm Floyd Algorithm Bellman-Ford Algorithm
9
Algoritmo de Dijkstra Algoritmo glotón (greedy) Punto de inicio s
Conjunto S Vector D 1 2 4 3 5
10
Condiciones iniciales
V-S={2,3,4,5} D=[0,2,1,∞,3] 1 2 4 3 5
11
Di=mínimo( Di, Dv+f(v, i) )
El algoritmo Aumentar S agregando el elemento v en V-S tal que Dv sea el mínimo de ese conjunto. Actualizar los valores de Di para todos los elementos i existentes en V-S. Di=mínimo( Di, Dv+f(v, i) ) Terminar cuando |S|=|V|
12
Paso a paso (Iteración 1)
Buscar mínimo Di en V-S S={1} V-S={2,3,4,5} D=[0,2,1,∞,3] 1 2 4 3 5
13
Paso a paso (Iteración 1)
Agregar elemento a S. Actualizar D S={1,3} V-S={2,4,5} D=[0,2,1,∞,3] 2 4 2 1 1 4 1 3 3 5 1 3 5 1
14
Paso a paso (Iteración 2)
Buscar mínimo Di en V-S S={1,3} V-S={2,4,5} D=[0,2,1,∞,2] 2 4 2 1 1 4 1 3 3 5 1 3 5 1
15
Paso a paso (Iteración 2)
Agregar elemento a S. Actualizar D S={1,3,2} V-S={4,5} D=[0,2,1,∞,2] 2 4 2 1 1 4 1 3 3 5 1 3 5 1
16
Paso a paso (Iteración 3)
Buscar mínimo Di en V-S S={1,3,2} V-S={4,5} D=[0,2,1,6,2] 2 4 2 1 1 4 1 3 3 5 1 3 5 1
17
Paso a paso (Iteración 3)
Agregar elemento a S. Actualizar D S={1,3,2,5} V-S={4} D=[0,2,1,6,2] 2 4 2 1 1 4 1 3 3 5 1 3 5 1
18
Paso a paso (Iteración 4)
Buscar mínimo Di en V-S S={1,3,2,5} V-S={4} D=[0,2,1,6,2] 2 4 2 1 1 4 1 3 3 5 1 3 5 1
19
Paso a paso (Iteración 4)
Agregar elemento a S. Actualizar D S={1,3,2,5,4} V-S={ } D=[0,2,1,6,2] 2 4 2 1 1 4 1 3 3 5 1 3 5 1
20
Final |S| = |V| La mejor manera de llegar al vértice u se encuentra en Du S={1,3,2,5,4} V-S={ } D=[0,2,1,6,2] 2 4 2 1 1 4 1 3 3 5 1 3 5 1
21
Du=delta(s,u) para toda u en V
¿Por qué funciona? Supongamos delta(s,v) = Mejor manera de llegar de s a v Si Dijkstra funciona: Du=delta(s,u) para toda u en V
22
Demostración por contradicción
Suponga que u es el primer vértice añadido a S tal que Du≠delta(s,u)
23
Propiedades que tendría u
u no puede ser s porque Ds = 0 Existe un camino de s a u, de lo contrario Ds = ∞ Si existe un camino, entonces debe existir el camino más corto.
24
Suposición principal Sea s->(p1)->x->y->(p2)->u el camino más corto de s a u.
25
Propiedades de x y y x ya fue insertado en S Dx=delta(s,x)
Posteriormente se actualizó el vértice y, así que Dy=delta(s,y), pero aun no es insertado en S
26
Dy=delta(s,y) ≤ Du ≤ delta(s,u)
Entonces Puesto que y se encuentra antes que u: Dy=delta(s,y) ≤ Du ≤ delta(s,u) Pero partimos de que u esta siendo insertado en S, así que se debe cumplir que: Dy ≥ Du
27
Dy=delta(s,y) = Du=delta(s,u)
Finalmente Así que: Dy=delta(s,y) = Du=delta(s,u)
28
El Multiple Source Shortest-Path Problem
2 4 2 1 4 1 1 3 3 5 1 3 5 1
29
¿Cuál es el problema? ¿Cuál es la mejor manera de llegar al los puntos T (town o ciudad en naranja) a partir de cualquiera de los puntos S (fuente) ?
30
f1->(p1)->f2->(p2)->v > f2->(p2)->v
Consideraciones Existe un conjunto de fuentes F En el camino más corto para llegar a u, existe sólo una fuente: f1->(p1)->f2->(p2)->v > f2->(p2)->v
31
Un problema más real Puntos Naranjas: Centros de Distribución
Puntos Grises: Ciudades ¿De qué centro de distribución es mejor partir a la ciudad X de tal manera de que gaste los menos recursos posibles? 1 2 4 3 5 5
32
¿Qué otro problema podemos resolver?
Puntos Naranjas: Centros de Distribución Puntos Grises: Ciudades Quiero construir un nuevo Punto de Distribución ¿Cuál es el mejor lugar para hacerlo? 1 2 4 3 5
33
¿Cómo lo resolvemos con Dijkstra?
Algoritmo glotón (greedy) Puntos de inicio Conjunto F Conjunto S Vector D
34
Condiciones iniciales
S=F={1,2} V-S={3,4,5} D=[0,0,1,4,3] 1 2 4 3 5
35
Estado final S={1,5,4,3,2} V-S={} D=[0,0,1,4,2] 1 2 4 3 5
36
Conclusiones Complejidad O(v2) pudiéndose reducir a O(nlogn) con Busqueda Binaria Procesa hasta 10,000 vértices en 1 segundo El Algoritmo de Dijkstra es rápido Demostramos que resuelve eficazmente nuestro problema
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.