Tema 6.2: Camino de menor valor - CD Universidad de...

Post on 22-Jun-2020

11 views 0 download

Transcript of Tema 6.2: Camino de menor valor - CD Universidad de...

Tema 6.2: Camino de menor valor

Modelización MatemáticaMáster en Ingeniería de Caminos, Canales y Puertos

Ignacio MontesDepartamento de Estadística e I.O. y D.M.

I. Montes Tema 6.2: Camino de menor valor 1 / 17

1 Camino de menor valor

2 AlgoritmosAlgoritmo de DijkstraAlgoritmo de Bellman-Ford

3 Cadena de menor valor

I. Montes Tema 6.2: Camino de menor valor 2 / 17

CMV: Objetivo

Partimos de una red orientada R = (V ,A,p) conexa. Dados dos vér-tices i y j , podemos consirar los caminos que van desde el vértice i alvértice j .

Dado un camino ipi,i1−→ i1

pi1,i2−→ i2pi2,i3−→ . . .

pik−1,ik−→ ikpik ,j−→ j , el valor del

camino es la suma de los pesos de los arcos que lo forman:

pi,i1 + pi1,i2 + . . . + pik−1,ik + pik ,j .

El Camino de Valor Mínimo es un camino que minimiza el valor delcamino.

I. Montes Tema 6.2: Camino de menor valor 3 / 17

CMV: ejemplo

Ejemplo

1

2

3

4

5

6

2 2

3

1

2 2

3

2

Para ir desde el vértice 2 hasta el vértice 3, tenemos, entre otras, lassiguientes opciones:

Camino Valor2 3−→ 4 2−→ 1 1−→ 1 6

2 3−→ 4 2−→ 5 2−→ 3 7

2 3−→ 4 3−→ 6 2−→ 5 2−→ 3 10

I. Montes Tema 6.2: Camino de menor valor 4 / 17

Existencia del CMV

El Camino de Menor Valor existirá sii no hay ciclos de valor negativo.

Ejemplo ( )

1

2

3

4

5

6

I. Montes Tema 6.2: Camino de menor valor 5 / 17

Existencia del CMV

El Camino de Menor Valor existirá sii no hay ciclos de valor negativo.

Ejemplo ( Red orientada en la que sí existen CMVs)

1

2

3

4

5

6

2 2

-2

1

2 2

3

2

I. Montes Tema 6.2: Camino de menor valor 5 / 17

Existencia del CMV

El Camino de Menor Valor existirá sii no hay ciclos de valor negativo.

Ejemplo ( Red orientada en la que no existen CMVs)

1

2

3

4

5

6

2 2

-5

1

2 2

3

2

I. Montes Tema 6.2: Camino de menor valor 5 / 17

Algoritmos para la búsqueda del CMV

Distinguimos dos casos:1 Algoritmo de Dijkstra: se puede utilizar siempre que los pesos

sean no negativos (p ≥ 0).2 Algoritmo de Bellman-Ford: se utilizará cuando haya algún peso

negativo.

I. Montes Tema 6.2: Camino de menor valor 6 / 17

Algoritmo de Dijkstra: descripción

Objetivo: encontrar un CMV desde el vértice i al resto de vértices.1 Tomamos V ′ = V\{i}, y definimos d(v) =∞ para todo v /∈ V ′.2 Para todo v ∈ Γ(i), actualizo d(v) = pi,v y defino l(v) = i .3 Sea v ∈ V ′ de manera que d(v) = min{d(j) | j ∈ V ′}.

1 Actualizo V ′ = V\{v}.2 Para todo j ∈ Γ(v) ∩ V ′, actualizo d(j) = min{d(j),d(v) + pv ,j} y

defino l(j) = v .4 Itero el paso 3 hasta que V ′ sea vacío.

I. Montes Tema 6.2: Camino de menor valor 7 / 17

Algoritmo de Dijkstra: ejemplo

Ejemplo (CMV desde el vértice 2 al resto de vértices)

1

2

3

4

5

6

2 2

3

1

2

2

2

3

1 3 4 5 6d ∞ ∞ ∞ ∞ Etapa iniciall − − − −

d ∞ 3 Primera iteraciónl − 2d 5 3 5 6 Segunda iteraciónl 4 2 4 4d 5 6 3 5 6 Tercera iteraciónl 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 8 / 17

Algoritmo de Dijkstra: ejemplo

Ejemplo (CMV desde el vértice 2 al resto de vértices)

1

2

3

4

5

6

2 2

3

1

2

2

2

3

1 3 4 5 6d ∞ ∞ ∞ ∞ ∞ Etapa iniciall − − − − −

d ∞ 3 Primera iteraciónl − 2d 5 3 5 6 Segunda iteraciónl 4 2 4 4d 5 6 3 5 6 Tercera iteraciónl 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 8 / 17

Algoritmo de Dijkstra: ejemplo

Ejemplo (CMV desde el vértice 2 al resto de vértices)

1

2

3

4

5

6

2 2

3

1

2

2

2

3

1 3 4 5 6d ∞ ∞ 3 ∞ ∞ Etapa iniciall − − 2 − −

d ∞ 3 Primera iteraciónl − 2d 5 3 5 6 Segunda iteraciónl 4 2 4 4d 5 6 3 5 6 Tercera iteraciónl 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 8 / 17

Algoritmo de Dijkstra: ejemplo

Ejemplo (CMV desde el vértice 2 al resto de vértices)

1

2

3

4

5

6

2 2

3

1

2

2

2

3

1 3 4 5 6d ∞ ∞ 3 ∞ ∞ Etapa iniciall − − 2 − −d ∞ ∞ 3 ∞ ∞ Primera iteraciónl − − 2 − −

d 5 3 5 6 Segunda iteraciónl 4 2 4 4d 5 6 3 5 6 Tercera iteraciónl 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 8 / 17

Algoritmo de Dijkstra: ejemplo

Ejemplo (CMV desde el vértice 2 al resto de vértices)

1

2

3

4

5

6

2 2

3

1

2

2

2

3

1 3 4 5 6d ∞ ∞ 3 ∞ ∞ Etapa iniciall − − 2 − −d 5 ∞ 3 5 6 Primera iteraciónl 4 − 2 4 4

d 5 3 5 6 Segunda iteraciónl 4 2 4 4d 5 6 3 5 6 Tercera iteraciónl 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 8 / 17

Algoritmo de Dijkstra: ejemplo

Ejemplo (CMV desde el vértice 2 al resto de vértices)

1

2

3

4

5

6

2 2

3

1

2

2

2

3

1 3 4 5 6d ∞ ∞ 3 ∞ ∞ Etapa iniciall − − 2 − −d 5 ∞ 3 5 6 Primera iteraciónl 4 − 2 4 4d 5 ∞ 3 5 6 Segunda iteraciónl 4 − 2 4 4

d 5 6 3 5 6 Tercera iteraciónl 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 8 / 17

Algoritmo de Dijkstra: ejemplo

Ejemplo (CMV desde el vértice 2 al resto de vértices)

1

2

3

4

5

6

2 2

3

1

2

2

2

3

1 3 4 5 6d ∞ ∞ 3 ∞ ∞ Etapa iniciall − − 2 − −d 5 ∞ 3 5 6 Primera iteraciónl 4 − 2 4 4d 5 6 3 5 6 Segunda iteraciónl 4 1 2 4 4

d 5 6 3 5 6 Tercera iteraciónl 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 8 / 17

Algoritmo de Dijkstra: ejemplo

Ejemplo (CMV desde el vértice 2 al resto de vértices)

1

2

3

4

5

6

2 2

3

1

2

2

2

3

1 3 4 5 6d ∞ ∞ 3 ∞ ∞ Etapa iniciall − − 2 − −d 5 ∞ 3 5 6 Primera iteraciónl 4 − 2 4 4d 5 6 3 5 6 Segunda iteraciónl 4 1 2 4 4d 5 6 3 5 6 Tercera iteraciónl 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 8 / 17

Algoritmo de Dijkstra: ejemplo

Ejemplo (CMV desde el vértice 2 al resto de vértices)

1

2

3

4

5

6

2

3

1

2

2

2

3

1 3 4 5 6d ∞ ∞ 3 ∞ ∞ Etapa iniciall − − 2 − −d 5 ∞ 3 5 6 Primera iteraciónl 4 − 2 4 4d 5 6 3 5 6 Segunda iteraciónl 4 1 2 4 4d 5 6 3 5 6 Tercera iteraciónl 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 8 / 17

Algoritmo de Bellman-Ford

Objetivo: encontrar un CMV desde el vértice i al resto de vértices.1 Tomamos V ′ = V\{i}, y definimos d(v) = ∞, l(v) = ∅ para todo

v /∈ V ′. Sea k = 1.2 Para todo vértice (u, v) ∈ A, si d(v) > d(u) + pu,v actualizo:

d(v) = min{d(v),d(u) + pu,v}, l(v) = u.

3 Si k = n − 1, parar. En otro caso, tomar k = k + 1 e iterar el paso2.

I. Montes Tema 6.2: Camino de menor valor 9 / 17

Algoritmo de Bellman-Ford: ejemplo

Ejemplo

1

2

3

4

5

6

2 2

-2

1

2 2

3

2

1 3 4 5 6l ∞ ∞ ∞ ∞ ∞ Etapa iniciald − − − − −

I. Montes Tema 6.2: Camino de menor valor 10 / 17

Algoritmo de Bellman-Ford: ejemplo

Ejemplo

1

2

3

4

5

6

2 2

-2

1

2 2

3

2

1 3 4 5 6l ∞ ∞ ∞ ∞ ∞ Etapa 1: vértice 1d − − − − −

I. Montes Tema 6.2: Camino de menor valor 10 / 17

Algoritmo de Bellman-Ford: ejemplo

Ejemplo

1

2

3

4

5

6

2 2

-2

1

2 2

3

2

1 3 4 5 6l ∞ ∞ −2 ∞ ∞ Etapa 1: vértice 2d − − 2 − −

I. Montes Tema 6.2: Camino de menor valor 10 / 17

Algoritmo de Bellman-Ford: ejemplo

Ejemplo

1

2

3

4

5

6

2 2

-2

1

2 2

3

2

1 3 4 5 6l ∞ ∞ −2 ∞ ∞ Etapa 1: vértice 3d − − 2 − −

I. Montes Tema 6.2: Camino de menor valor 10 / 17

Algoritmo de Bellman-Ford: ejemplo

Ejemplo

1

2

3

4

5

6

2 2

-2

1

2 2

3

2

1 3 4 5 6l 0 ∞ −2 0 1 Etapa 1: vértice 4d 4 − 2 4 4

I. Montes Tema 6.2: Camino de menor valor 10 / 17

Algoritmo de Bellman-Ford: ejemplo

Ejemplo

1

2

3

4

5

6

2 2

-2

1

2 2

3

2

1 3 4 5 6l 0 2 −2 0 1 Etapa 1: vértice 5d 4 5 2 4 4

I. Montes Tema 6.2: Camino de menor valor 10 / 17

Algoritmo de Bellman-Ford: ejemplo

Ejemplo

1

2

3

4

5

6

2 2

-2

1

2 2

3

2

1 3 4 5 6l 0 2 −2 0 1 Etapa 1: vértice 6d 4 5 2 4 4

I. Montes Tema 6.2: Camino de menor valor 10 / 17

Algoritmo de Bellman-Ford: ejemplo

Ejemplo

1

2

3

4

5

6

2 2

-2

1

2 2

3

2

1 3 4 5 6l 0 1 −2 0 1 Etapa 2: vértice 1d 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 10 / 17

Algoritmo de Bellman-Ford: ejemplo

Ejemplo

1

2

3

4

5

6

2

-2

1

2

3

1 3 4 5 6l 0 1 −2 0 1 Etapa finald 4 1 2 4 4

I. Montes Tema 6.2: Camino de menor valor 11 / 17

Ejercicio

Utilizar el algoritmo de Dijkstra para encontrar el CMV desde el vértice2 al resto de los vértices:

1

2

3

4

5

6

2 2

3

1

3 2

3

-1

1

2

3

4

5

6

2

3

1

3

3

Pero 2 3−→ 4 2−→ 1 1−→ 3 no es CMV.El CMV de 2 a 3 es: 2 3−→ 4 3−→ 5 −1−→ 3.

I. Montes Tema 6.2: Camino de menor valor 12 / 17

Ejercicio

Utilizar el algoritmo de Dijkstra para encontrar el CMV desde el vértice2 al resto de los vértices:

1

2

3

4

5

6

2 2

3

1

3 2

3

-1

1

2

3

4

5

6

2

3

1

3

3

Pero 2 3−→ 4 2−→ 1 1−→ 3 no es CMV.El CMV de 2 a 3 es: 2 3−→ 4 3−→ 5 −1−→ 3.

I. Montes Tema 6.2: Camino de menor valor 12 / 17

Ejercicio

Utilizar el algoritmo de Dijkstra para encontrar el CMV desde el vértice2 al resto de los vértices:

1

2

3

4

5

6

2 2

3

1

3 2

3

-1

1

2

3

4

5

6

2

3

1

3

3

Pero 2 3−→ 4 2−→ 1 1−→ 3 no es CMV.El CMV de 2 a 3 es: 2 3−→ 4 3−→ 5 −1−→ 3.

I. Montes Tema 6.2: Camino de menor valor 12 / 17

Ejercicio

Utilizar el algoritmo de Bellman-Ford para encontrar el CMV desde elvértice 2 al resto de los vértices:

1

2

3

4

5

6

2 2

3

1

3 2

3

-1

1

2

3

4

5

6

2

3

3

3

-1

I. Montes Tema 6.2: Camino de menor valor 13 / 17

Ejercicio

Utilizar el algoritmo de Bellman-Ford para encontrar el CMV desde elvértice 2 al resto de los vértices:

1

2

3

4

5

6

2 2

3

1

3 2

3

-1

1

2

3

4

5

6

2

3

3

3

-1

I. Montes Tema 6.2: Camino de menor valor 13 / 17

Ejercicio

1

2

3

4

5

6 73 8 1

4

1

7

2

4

51

3

2

1 Utiliza el algoritmo de Dijkstra para calcular el CMV partiendo delvértice 1.

2 Añade un arco desde el vértice 4 hasta el vértice 5 con peso -3 ycalcula los CMV partiendo desde el vértice 1, esta vez usando elalgoritmo de Bellman-Ford.

I. Montes Tema 6.2: Camino de menor valor 14 / 17

Cadena de menor valor: Objetivo

Partimos de una red no orientada R = (V ,A,p) conexa. Dados dosvértices i y j , podemos consirar las cadenas que van desde el vértice ial vértice j .

Dado una cadena ipi,i1←→ i1

pi1,i2←→ i2pi2,i3←→ . . .

pik−1,ik←→ ikpik ,j←→ j , el valor de la

cadena es la suma de los pesos de las aristas que la forman:

pi,i1 + pi1,i2 + . . . + pik−1,ik + pik ,j .

La Cadena de Valor Mínimo es una cadena que minimiza el valor dela cadena.

I. Montes Tema 6.2: Camino de menor valor 15 / 17

Existencia de la CMV

La Cadena de Menor Valor existirá sii no hay aristas de valor negativo.

Ejemplo (Red no orientada en la que no existen CMVs)

1

2

3

4

5

6

2 2

3

1

2 2

3

-2

I. Montes Tema 6.2: Camino de menor valor 16 / 17

Cálculo de Cadenas de Menor Valor

Como todos los pesos son no negativos, se puede utilizar el algoritmode Dijkstra. Para ello, cada arista i −→ j se dobla en dos arcos i −→ jy j −→ i .

I. Montes Tema 6.2: Camino de menor valor 17 / 17