BELLMAN-FORD Jorge Mondragón Leonardo Herrera Cristian Fernández.

Post on 29-Jan-2016

222 views 1 download

Transcript of BELLMAN-FORD Jorge Mondragón Leonardo Herrera Cristian Fernández.

BELLMAN-FORD

Jorge MondragónLeonardo Herrera

Cristian Fernández

DESCRIPCIÓN DEL PROBLEMA

El algoritmo de Bellman-Ford genera el camino más corto en un grafo dirigido ponderado (en el que el peso de alguna de las aristas puede ser negativo).

El algoritmo de Dijkstra resuelve este mismo problema en un tiempo menor, pero requiere que los pesos de las aristas no sean negativos. Por lo que el algoritmo Bellman-Ford normalmente se utiliza cuando hay aristas con peso negativoSi el grafo contiene un ciclo de coste negativo, el algoritmo lo detectará pero no encontrará el camino más corto que no repite ningún vértice, la complejidad de este problema es NP-completo.

DEFINICIÓN DEL ALGORITMO

• El algoritmo de Bellman-Ford genera el camino más corto en un Grafo dirigido ponderado ( en el que el peso de alguna de las aristas puede ser negativo).

• Este Algoritmo fue

desarrollado por Richard

Bellman, Samuel End y

Lester Ford.

CARACTERISTICAS Y COMPLEJIDAD

COMPUTACIONAL• El algoritmo de Dijkstra resuelve este mismo problema

en un tiempo menor, pero requiere que los pesos de las aristas no sean negativos. Por lo que el Algoritmo Bellman-Ford normalmente se utiliza cuando hay aristas con peso negativo.

• La complejidad computacional de este problema es complejidad NP-Completo.

EXPLICACIÓN DEL ALGORITMO

• En el paso 0, inicializamos todas las distancias o costos mínimos a infinito.

En el paso 1, actualizamos el paso anterior, aplicando las fórmulas. En este caso ponemos la distancia de los nodos que tienen accesos directos al vértice 1, y se la sumamos a la distancia mínima acumulada que hay hasta el vértice oportuno. Aquí esta distancia acumulada sería 0 para 1, debido que sería la distancia a él mismo, e infinito para el resto porque no han sido analizados todavía

EXPLICACIÓN DEL ALGORITMO

• En el paso 2, al saber ya una distancia mínima acumulada desde los nodos 2 y 3 hasta 1, podemos actualizar las distancias mínimas de los nodos 4 y 5.

En los pasos sucesivos, se van actualizando las distancias mínimas acumuladas (D) de los distintos vértices hasta 1, y se van utilizando en los pasos siguientes para optimizar el camino mínimo. El final del algoritmo se da cuando no hay ningún cambio de un paso a otro, cuando ya no se puede encontrar un camino más corto.

ANALISIS DEL ALGORITMO

•Grafo Inicial.

•El objetivo del Algoritmo es encontrar el camino mínimo desde todos los nodos al vértice 1.

EJEMPLO ( REALIZACIÓN DEL ALGORITMO)

EJEMPLO (GRAFO FINAL)

* Resultado del camino mínimo desde todos los nodos al vértice 1.

APLICACIONES DEL ALGORITMO

• Una variante distribuida del Algoritmo del Bellman-Ford se usa en protocolos de encaminamiento basados en vector de distancias.

• En el mundo de las redes (comunicaciones) el protocolo de encaminamiento de información (RIP).

http://neo.lcc.uma.es/evirtual/cdd/applets/BellmanFord/Example3.html

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Encontrar el camino más corto delVértice z a cada uno de los otrosVértices.

Paso 0.0

6

5

-2

7 2

9

-3

8

-4

7

V [ ] = { u v x y z }

d [ ] = { _ _ _ _ _ }

[ ] = { _ _ _ _ _ }

0

z

u v

x y

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Inicializar los vectores d y .

Paso 0.1

6

5

-2

7 2

9

-3

8

-4

7

0

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,v)Paso 1.1

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[u] + w( u , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

0

z

u v

x y

(u,v)(u,x) (u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,x)Paso 1.2

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[x] > d[u] + w( u , x ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

0

z

u v

x y

(u,v)(u,x)(u,y) (v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,y)Paso 1.3

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[u] + w( u , y ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

0

z

u v

x y

(u,v)(u,x)(u,y)(v,u) (x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (v,u)Paso 1.4

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[v] + w( v , u ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

0

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v) (x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (x,v)Paso 1.5

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[x] + w( x , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

0

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y) (y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (x,y)Paso 1.6

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[x] + w( x , y ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

0

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v) (y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (y,v)Paso 1.7

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[y] + w( y , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

0

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z) (z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (y,v)Paso 1.8

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[z] > d[y] + w( y , z ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

0

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u) (z,x)

Lista de Arcos

Aplicar Relax al Arco (z,u)Paso 1.9

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[z] + w( z , u ) ?

Respuesta: SI

Proceso: d[u] = d[z] + w( z, u ) y [u] = z

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { }

0

6

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u) (z,x)

Lista de Arcos

Aplicar Relax al Arco (z,u)Paso 1.9

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[z] + w( z , u ) ?

Respuesta: SI

Proceso: d[u] = d[z] + w( z, u ) y [u] = z

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { z }

0

6

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (z,x)Paso 1.10

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[x] > d[z] + w( z , x ) ?

Respuesta: SI

Proceso: d[x] = d[z] + w( z, x ) y [x] = z

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { z }

0

7

6

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (z,x)Paso 1.10

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[x] > d[z] + w( z , x ) ?

Respuesta: SI

Proceso: d[x] = d[z] + w( z, x ) y [x] = z

V [ ] = { u v x y z }

d [ ] = { 7 0 }

[ ] = { z z }

0

7

6

z

u v

x y

(u,v) (u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,v)Paso 2.1

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[u] + w( u , v ) ?

Respuesta: SI

Proceso: d[v] = d[u] + w( u, v ) y [v] = u

V [ ] = { u v x y z }

d [ ] = { 0 }

[ ] = { z z }

0

7

6 11

z

u v

x y

(u,v) (u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,v)Paso 2.1

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[u] + w( u , v ) ?

Respuesta: SI

Proceso: d[v] = d[u] + w( u, v ) y [v] = u

V [ ] = { u v x y z }

d [ ] = { 7 0 }

[ ] = { z u z }

0

7

6 11

z

u v

x y

(u,v)(u,x) (u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,x)Paso 2.2

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[x] > d[u] + w( u , x ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z u z }

0

7

6 11

z

u v

x y

(u,v)(u,x)(u,y) (v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,y)Paso 2.3

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[u] + w( u , y ) ?

Respuesta: SI

Proceso: d[y] = d[u] + w( u, y ) y [y] = u

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z u z }

0

7

6 11

2

z

u v

x y

(u,v)(u,x)(u,y) (v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,y)Paso 2.3

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[u] + w( u , y ) ?

Respuesta: SI

Proceso: d[y] = d[u] + w( u, y ) y [y] = u

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z u z u }

0

7

6 11

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u) (x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (v,u)Paso 2.4

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[v] + w( v , u ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z u z u }

0

7

6 11

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v) (x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (x,v)Paso 2.5

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[x] + w( x , v ) ?

Respuesta: SI

Proceso:d[y] = d[x] + w( x, v ) y [y] = x

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z u z u }

0

7

6 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v) (x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (x,v)Paso 2.5

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[x] + w( x , v ) ?

Respuesta: SI

Proceso: d[y] = d[x] + w( x, v ) y [y] = x

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

6 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y) (y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (x,y)Paso 2.6

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[x] + w( x , y ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

6 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v) (y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (y,v)Paso 2.7

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[y] + w( y , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

6 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z) (z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (y,z)Paso 2.8

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[z] > d[y] + w( y , z ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

6 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u) (z,x)

Lista de Arcos

Aplicar Relax al Arco (z,u)Paso 2.9

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[z] + w( z , u ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

6 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (z,x)Paso 2.10

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[x] > d[z] + w( z , x ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

6 4

2

z

u v

x y

(u,v) (u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,v)Paso 3.1

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[u] + w( u , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

6 4

2

z

u v

x y

(u,v)(u,x) (u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,x)Paso 3.2

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[x] > d[u] + w( u , x ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

6 4

2

z

u v

x y

(u,v)(u,x)(u,y) (v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u,y)Paso 3.3

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[u] + w( u , y ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

6 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u) (x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (v, u)Paso 3.4

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[v] + w( v , u ) ?

Respuesta: SI

Proceso: d[u] = d[v] + w( v, u ) y [u] = v

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { z x z u }

0

7

2 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u) (x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (v, u)Paso 3.4

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[v] + w( v , u ) ?

Respuesta: SI

Proceso: d[u] = d[v] + w( v, u ) y [u] = v

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v) (x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (x, v)Paso 3.5

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[x] + w( x , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y) (y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (x, y)Paso 3.6

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[x] + w( x , y ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v) (y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (y, v)Paso 3.7

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[y] + w( y , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z) (z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (y, z)Paso 3.8

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[z] > d[y] + w( y , z ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u) (z,x)

Lista de Arcos

Aplicar Relax al Arco (z, u)Paso 3.9

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[z] + w( z , u ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (z, x)Paso 3.10

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[x] > d[z] + w( z , x ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

2

z

u v

x y

(u,v) (u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u, v)Paso 4.1

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[u] + w( u , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

2

z

u v

x y

(u,v)(u,x) (u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u, x)Paso 4.2

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[x] > d[u] + w( u , x ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

2

z

u v

x y

(u,v)(u,x)(u,y) (v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u, y)Paso 4.3

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[u] + w( u , y ) ?

Respuesta: SI

Proceso: d[y] = d[u] + w( u, y ) y [y] = u

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y) (v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (u, y)Paso 4.3

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[u] + w( u , y ) ?

Respuesta: SI

Proceso: d[y] = d[u] + w( u, y ) y [y] = u

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y)(v,u) (x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (v, u)Paso 4.4

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[v] + w( v , u ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v) (x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (x, v)Paso 4.5

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[x] + w( x , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y) (y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (x, y)Paso 4.6

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[y] > d[x] + w( x , y ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v) (y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (y, v)Paso 4.7

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[v] > d[y] + w( y , v ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z) (z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (y, z)Paso 4.8

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[z] > d[y] + w( y , z ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u) (z,x)

Lista de Arcos

Aplicar Relax al Arco (z, u)Paso 4.9

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[u] > d[z] + w( z , u ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Aplicar Relax al Arco (z, x)Paso 4.10

6

5

-2

7 2

9

-3

8

-4

7

Pregunta: ¿ d[x] > d[z] + w( z , x ) ?

Respuesta: NO

Proceso: No se hace nada.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

Paso 5.0

6

5

-2

7 2

9

-3

8

-4

7

Verificar en cada arco que secumple la condición:

d[Vf] <= d[Vi] + w( Vi , Vf )Si no se cumple:

=> NO EXISTE SOLUCIÓN.

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }

0

7

2 4

-2

z

u v

x y

(u,v)(u,x)(u,y)(v,u)(x,v)(x,y)(y,v)(y,z)(z,u)(z,x)

Lista de Arcos

SOLUCIÓN

-2

7

-3

-4

V [ ] = { u v x y z }

d [ ] = { }

[ ] = { v x z u }