La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Caminos más cortos a partir de múltiples fuentes en un grafo

Presentaciones similares


Presentación del tema: "Caminos más cortos a partir de múltiples fuentes en un grafo"— Transcripción de la presentación:

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


Descargar ppt "Caminos más cortos a partir de múltiples fuentes en un grafo"

Presentaciones similares


Anuncios Google