Вы находитесь на странице: 1из 62

BELLMAN-FORD

Jorge Mondragn Leonardo Herrera Cristian Fernndez

DESCRIPCIN DEL PROBLEMA


El algoritmo de Bellman-Ford genera el camino ms 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 negativo Si el grafo contiene un ciclo de coste negativo, el algoritmo lo detectar pero no encontrar el camino ms corto que no repite ningn vrtice, la complejidad de este problema es NP-completo.

DEFINICIN DEL ALGORITMO


El algoritmo de Bellman-Ford genera el camino ms 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.

EXPLICACIN DEL ALGORITMO


En el paso 0, inicializamos todas las distancias o costos mnimos a infinito. En el paso 1, actualizamos el paso anterior, aplicando las frmulas. En este caso ponemos la distancia de los nodos que tienen accesos directos al vrtice 1, y se la sumamos a la distancia mnima acumulada que hay hasta el vrtice oportuno. Aqu esta distancia acumulada sera 0 para 1, debido que sera la distancia a l mismo, e infinito para el resto porque no han sido analizados todava

EXPLICACIN DEL ALGORITMO


En el paso 2, al saber ya una distancia mnima acumulada desde los nodos 2 y 3 hasta 1, podemos actualizar las distancias mnimas de los nodos 4 y 5. En los pasos sucesivos, se van actualizando las distancias mnimas acumuladas (D) de los distintos vrtices hasta 1, y se van utilizando en los pasos siguientes para optimizar el camino mnimo. El final del algoritmo se da cuando no hay ningn cambio de un paso a otro, cuando ya no se puede encontrar un camino ms corto.

ANALISIS DEL ALGORITMO

Grafo Inicial.
El objetivo del Algoritmo es encontrar el camino mnimo desde todos los nodos al vrtice 1.

ANALISIS DEL ALGORITMO

EJEMPLO ( REALIZACIN DEL ALGORITMO)

EJEMPLO (GRAFO FINAL)


*
Resultado del camino mnimo desde todos los nodos al vrtice 1.

APLICACIONES DEL ALGORITMO


Una variante distribuida del Algoritmo del BellmanFord se usa en protocolos de encaminamiento basados en vector de distancias. En el mundo de las redes (comunicaciones) el protocolo de encaminamiento de informacin (RIP). http://neo.lcc.uma.es/evirtual/cdd/applets/BellmanFord /Example3.html

5
-2 -4 8 -3

Lista de Arcos

6 z

7 x

2 9 y

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

Paso 0.0
V d P [ [ [ ] ] ] = = = { { { u _ _ v _ _ x _ _ y _ _ z _ _ } } } Encontrar el camino ms corto del Vrtice z a cada uno de los otros Vrtices.

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 0.1
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Inicializar los vectores d y P. 0

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 1.1
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Respuesta: Proceso: 0

Aplicar Relax al Arco (u,v)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 1.2
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Respuesta: Proceso: 0

Aplicar Relax al Arco (u,x)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 1.3
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Respuesta: Proceso: 0

Aplicar Relax al Arco (u,y)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 1.4
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Respuesta: Proceso: 0

Aplicar Relax al Arco (v,u)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 1.5
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Respuesta: Proceso: 0

Aplicar Relax al Arco (x,v)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 1.6
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Respuesta: Proceso: 0

Aplicar Relax al Arco (x,y)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 1.7
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Respuesta: Proceso: 0

Aplicar Relax al Arco (y,v)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 1.8
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Respuesta: Proceso: 0

Aplicar Relax al Arco (y,v)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6 z

0
7 x

2 9 y

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

Paso 1.9
V d P [ [ [ ] ] ] = = = { { { u v x y z } } } Respuesta: 0

Aplicar Relax al Arco (z,u)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 1.9
V d P [ [ [ ] ] ] = = = { { { u z v x y z } } } Respuesta: 6 0

Aplicar Relax al Arco (z,u)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 1.10
V d P [ [ [ ] ] ] = = = { { { u z v x y z } } } Respuesta: 6 0

Aplicar Relax al Arco (z,x)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 1.10
V d P [ [ [ ] ] ] = = = { { { u z v x z y z } } } Respuesta: 6 7 0

Aplicar Relax al Arco (z,x)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 2.1
V d P [ [ [ ] ] ] = = = { { { u z v x z y z } } } Respuesta: 6 7 0

Aplicar Relax al Arco (u,v)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

11

0
7 x

2 9 y

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

Paso 2.1
V d P [ [ [ ] ] ] = = = { u v { z u x z y z } } } Respuesta: { 6 11 7 0

Aplicar Relax al Arco (u,v)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

11

0
7 x

2 9 y

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

Paso 2.2
V d P [ [ [ ] ] ] = = = { u v { z u x z y z } } } Respuesta: Proceso: { 6 11 7 0

Aplicar Relax al Arco (u,x)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

11

0
7 x

2 9 y

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

Paso 2.3
V d P [ [ [ ] ] ] = = = { u { z v u x y z z } } } Respuesta: { 6 11 7 0

Aplicar Relax al Arco (u,y)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

11

0
7 x

2 9 y

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

Paso 2.3
V d P [ [ [ ] ] ] = = = { u { z v u x y z u z 0 } } } Respuesta: { 6 11 7 2

Aplicar Relax al Arco (u,y)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

11

0
7 x

2 9 y

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

Paso 2.4
V d P [ [ [ ] ] ] = = = { u { z v u x y z u z 0 } } } Respuesta: Proceso: { 6 11 7 2

Aplicar Relax al Arco (v,u)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

11

0
7 x

2 9 y

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

Paso 2.5
V d P [ [ [ ] ] ] = = = { u { z v u x y z u z 0 } } } Respuesta: { 6 11 7 2

Aplicar Relax al Arco (x,v)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 2.5
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta:

Aplicar Relax al Arco (x,v)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 2.6
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (x,y)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 2.7
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (y,v)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 2.8
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (y,z)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 2.9
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (z,u)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 2.10
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (z,x)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 3.1
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (u,v)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 3.2
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (u,x)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 3.3
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (u,y)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

6
6 z

0
7 x

2 9 y

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

Paso 3.4
V d P [ [ [ ] ] ] = = = { { { u 6 z v 4 x x 7 z y 2 u z 0 } } } Respuesta:

Aplicar Relax al Arco (v, u)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 3.4
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta:

Aplicar Relax al Arco (v, u)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 3.5
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (x, v)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 3.6
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (x, y)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 3.7
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (y, v)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 3.8
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (y, z)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 3.9
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (z, u)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 3.10
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (z, x)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 4.1
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (u, v)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 4.2
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta: Proceso:

Aplicar Relax al Arco (u, x)

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


NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

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

Paso 4.3
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x 7 z y 2 u z 0 } } } Respuesta:

Aplicar Relax al Arco (u, y)

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


SI

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

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

-2

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

Paso 4.3
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Aplicar Relax al Arco (u, y)

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


Respuesta: SI

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

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

-2

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

Paso 4.4
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Aplicar Relax al Arco (v, u)

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


Respuesta: Proceso: NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

-2

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

Paso 4.5
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Aplicar Relax al Arco (x, v)

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


Respuesta: Proceso: NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

-2

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

Paso 4.6
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Aplicar Relax al Arco (x, y)

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


Respuesta: Proceso: NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

-2

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

Paso 4.7
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Aplicar Relax al Arco (y, v)

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


Respuesta: Proceso: NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

-2

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

Paso 4.8
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Aplicar Relax al Arco (y, z)

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


Respuesta: Proceso: NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

-2

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

Paso 4.9
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Aplicar Relax al Arco (z, u)

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


Respuesta: Proceso: NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

-2

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

Paso 4.10
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Aplicar Relax al Arco (z, x)

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


Respuesta: Proceso: NO No se hace nada.

5
-2 -4 8 -3

Lista de Arcos

2
6 z

0
7 x

2 9 y

-2

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

Paso 5.0
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Verificar en cada arco que se cumple la condicin: d[Vf] <= d[Vi] + w( Vi , Vf ) Si no se cumple: => NO EXISTE SOLUCIN.

Lista de Arcos

2
-2 z -4

0
-3 7 x

-2

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

SOLUCIN
V d P [ [ [ ] ] ] = = = { { { u 2 v v 4 x x z y u z } } 7 -2 0 }

Вам также может понравиться