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

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

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.

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.

¿Qué es un grafo?

Page 3: Caminos más cortos a partir de múltiples fuentes en un grafo.

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.

Grafos ponderados

1

2

4

3 5

2 4

1

1

53

1

1

3

Page 5: Caminos más cortos a partir de múltiples fuentes en un grafo.

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.

¿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

1

3

Page 7: Caminos más cortos a partir de múltiples fuentes en un grafo.

Problema de la ruta mínima (Single Source)

¿Cómo llego del punto 1 a 4 de la manera más corta posible?

1

2

4

3 5

2 4

1

1

53

1

1

3

Page 8: Caminos más cortos a partir de múltiples fuentes en un grafo.

¿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.

Algoritmo de DijkstraAlgoritmo glotón (greedy)Punto de inicio sConjunto SVector D

1

2

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.

Condiciones inicialesS={1}V-S={2,3,4,5}D=[0,2,1,∞,3] 1 2 3 4 5

1

2

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.

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.

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

2

4

3 5

2 4

1

1

53

1

13

Page 13: Caminos más cortos a partir de múltiples fuentes en un grafo.

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

1

2

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.

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

2

4

3 5

2 4

1

1

53

1

13

Page 15: Caminos más cortos a partir de múltiples fuentes en un grafo.

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

1

2

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.

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

2

4

3 5

2 4

1

1

53

1

13

Page 17: Caminos más cortos a partir de múltiples fuentes en un grafo.

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

1

2

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.

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

2

4

3 5

2 4

1

1

53

1

13

Page 19: Caminos más cortos a partir de múltiples fuentes en un grafo.

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

1

2

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.

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

1

2

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.

¿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.

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.

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.

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.

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.

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.

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.

El Multiple Source Shortest-Path Problem

1

2

4

3 5

2 4

1

1

53

1

1

3

Page 29: Caminos más cortos a partir de múltiples fuentes en un grafo.

¿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.

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.

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

1

2

4

3 5

2 4

1

1

3

1

1

3

Page 32: Caminos más cortos a partir de múltiples fuentes en un grafo.

¿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?

1

2

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.

¿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.

Condiciones inicialesS=F={1,2}V-S={3,4,5}D=[0,0,1,4,3] 1 2 3 4 5

1

2

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.

Estado finalS={1,5,4,3,2}V-S={}D=[0,0,1,4,2] 1 2 3 4 5

1

2

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.

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