Caminos más cortos a partir de múltiples fuentes en un grafo
-
Upload
guinevere-mckinney -
Category
Documents
-
view
44 -
download
2
description
Transcript of Caminos más cortos a partir de múltiples fuentes en un grafo
![Page 1: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/1.jpg)
Caminos más cortos a partir de múltiples fuentes en un grafo
![Page 2: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/2.jpg)
¿Qué es un grafo?
![Page 3: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/3.jpg)
Un grafo es… Una pareja ordenada G(V,E) con las
siguientes características:
1. V es un conjunto de vértices2. E es un conjunto de parejas de distintos
vértices, entre los cuales se trazan líneas (aristas)
![Page 4: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/4.jpg)
Grafos ponderados
12
4
3 5
2 4
1
1
53
1
13
![Page 5: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/5.jpg)
Entoncesl(a) = peso de la arista ‘a’l(x,y) = peso de la arista de x a y
![Page 6: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/6.jpg)
¿Y qué podemos modelar?
1
0
3
56
4
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
5
3
86
1
2
43
5
11
11
1
2
4
2
3
3
2
13
![Page 7: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/7.jpg)
Problema de la ruta mínima (Single Source)
¿Cómo llego del punto 1 a 4 de la manera más corta posible?
12
4
3 5
2 4
1
1
53
1
13
![Page 8: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/8.jpg)
¿Cómo se resuelve?Existen algoritmos genéricos para ello:
Dijkstra Algorithm Floyd AlgorithmBellman-Ford Algorithm
![Page 9: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/9.jpg)
Algoritmo de DijkstraAlgoritmo glotón (greedy)Punto de inicio sConjunto SVector D
12
4
3 5
2 4
1
1
53
1
13
![Page 10: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/10.jpg)
Condiciones inicialesS={1}V-S={2,3,4,5}D=[0,2,1,∞,3] 1 2 3 4 5
12
4
3 5
2 4
1
1
53
1
13
![Page 11: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/11.jpg)
El algoritmoAumentar 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|
![Page 12: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/12.jpg)
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 3 4 5 1
24
3 5
2 4
1
1
53
1
13
![Page 13: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/13.jpg)
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] 1 2 3 4 5
12
4
3 5
2 4
1
1
53
1
13
![Page 14: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/14.jpg)
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] 1 2 3 4 5 1
24
3 5
2 4
1
1
53
1
13
![Page 15: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/15.jpg)
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] 1 2 3 4 5
12
4
3 5
2 4
1
1
53
1
13
![Page 16: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/16.jpg)
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] 1 2 3 4 5 1
24
3 5
2 4
1
1
53
1
13
![Page 17: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/17.jpg)
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] 1 2 3 4 5
12
4
3 5
2 4
1
1
53
1
13
![Page 18: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/18.jpg)
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] 1 2 3 4 5 1
24
3 5
2 4
1
1
53
1
13
![Page 19: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/19.jpg)
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] 1 2 3 4 5
12
4
3 5
2 4
1
1
53
1
13
![Page 20: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/20.jpg)
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] 1 2 3 4 5
12
4
3 5
2 4
1
1
53
1
13
![Page 21: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/21.jpg)
¿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
![Page 22: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/22.jpg)
Demostración por contradicciónSuponga que u es el primer vértice añadido
a S tal que Du≠delta(s,u)
![Page 23: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/23.jpg)
Propiedades que tendría uu no puede ser s porque Ds = 0Existe un camino de s a u, de lo contrario Ds = ∞Si existe un camino, entonces debe existir
el camino más corto.
![Page 24: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/24.jpg)
Suposición principalSea s->(p1)->x->y->(p2)->u el camino
más corto de s a u.
![Page 25: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/25.jpg)
Propiedades de x y yx ya fue insertado en SDx=delta(s,x) Posteriormente se actualizó el vértice y, así
que Dy=delta(s,y), pero aun no es insertado en S
![Page 26: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/26.jpg)
EntoncesPuesto 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
![Page 27: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/27.jpg)
FinalmenteAsí que:
Dy=delta(s,y) = Du=delta(s,u)
![Page 28: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/28.jpg)
El Multiple Source Shortest-Path Problem
12
4
3 5
2 4
1
1
53
1
13
![Page 29: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/29.jpg)
¿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) ?
![Page 30: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/30.jpg)
ConsideracionesExiste un conjunto de fuentes FEn el camino más corto para llegar a u,
existe sólo una fuente:f1->(p1)->f2->(p2)->v > f2->(p2)->v
![Page 31: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/31.jpg)
Un problema más realPuntos Naranjas: Centros de DistribuciónPuntos 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?
5
12
4
3 5
2 4
1
1
3
1
13
![Page 32: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/32.jpg)
¿Qué otro problema podemos resolver?Puntos Naranjas: Centros de DistribuciónPuntos Grises: CiudadesQuiero construir un nuevo Punto de
Distribución ¿Cuál es el mejor lugar para hacerlo?
12
4
3 5
2 4
1
1
3
1
13
![Page 33: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/33.jpg)
¿Cómo lo resolvemos con Dijkstra?Algoritmo glotón (greedy)Puntos de inicio Conjunto FConjunto SVector D
![Page 34: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/34.jpg)
Condiciones inicialesS=F={1,2}V-S={3,4,5}D=[0,0,1,4,3] 1 2 3 4 5
12
4
3 5
2 4
1
1
53
1
13
![Page 35: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/35.jpg)
Estado finalS={1,5,4,3,2}V-S={}D=[0,0,1,4,2] 1 2 3 4 5
12
4
3 5
2 4
1
1
53
1
13
![Page 36: Caminos más cortos a partir de múltiples fuentes en un grafo](https://reader035.fdocuments.net/reader035/viewer/2022070502/56813107550346895d973824/html5/thumbnails/36.jpg)
ConclusionesComplejidad O(v2) pudiéndose reducir a
O(nlogn) con Busqueda BinariaProcesa hasta 10,000 vértices en 1
segundo
El Algoritmo de Dijkstra es rápidoDemostramos que resuelve eficazmente
nuestro problema