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

BELLMAN-FORD

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 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 informacin (RIP).
http://neo.lcc.uma.es/evirtual/cdd/applets/BellmanFord
/Example3.html
u 5 v Lista de Arcos
(u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
(z,u)
x 9 y
(z,x)
Paso 0.0
V [ ] = { u v x y z }
d [ ] = { _ _ _ _ _ } Encontrar el camino ms corto del
P [ ] = { _ _ _ _ _ } Vrtice z a cada uno de los otros
Vrtices.
u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 0.1
V [ ] = { u v x y z }
d [ ] = { 0 }
P [ ] = { } Inicializar los vectores d y P.
u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.1 Aplicar Relax al Arco (u,v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[u] + w( u , v ) ?
d [ ] = { 0 }
P [ ] = { } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.2 Aplicar Relax al Arco (u,x)
V [ ] = { u v x y z }
Pregunta: d[x] > d[u] + w( u , x ) ?
d [ ] = { 0 }
P [ ] = { } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.3 Aplicar Relax al Arco (u,y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[u] + w( u , y ) ?
d [ ] = { 0 }
P [ ] = { } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.4 Aplicar Relax al Arco (v,u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[v] + w( v , u ) ?
d [ ] = { 0 }
P [ ] = { } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.5 Aplicar Relax al Arco (x,v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[x] + w( x , v ) ?
d [ ] = { 0 }
P [ ] = { } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.6 Aplicar Relax al Arco (x,y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[x] + w( x , y ) ?
d [ ] = { 0 }
P [ ] = { } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.7 Aplicar Relax al Arco (y,v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[y] + w( y , v ) ?
d [ ] = { 0 }
P [ ] = { } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.8 Aplicar Relax al Arco (y,v)
V [ ] = { u v x y z }
Pregunta: d[z] > d[y] + w( y , z ) ?
d [ ] = { 0 }
P [ ] = { } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos
(u,v)

-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.9 Aplicar Relax al Arco (z,u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[z] + w( z , u ) ?
d [ ] = { 0 }
P [ ] = { } Respuesta: SI

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


u 5 v Lista de Arcos
(u,v)
6
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.9 Aplicar Relax al Arco (z,u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[z] + w( z , u ) ?
d [ ] = { 6 0 }
P [ ] = { z } Respuesta: SI

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


u 5 v Lista de Arcos
(u,v)
6
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
y
(z,u)
9 (z,x)
Paso 1.10 Aplicar Relax al Arco (z,x)
V [ ] = { u v x y z }
Pregunta: d[x] > d[z] + w( z , x ) ?
d [ ] = { 6 0 }
P [ ] = { z } Respuesta: SI

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


u 5 v Lista de Arcos
(u,v)
6
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
(z,u)
9 (z,x)
Paso 1.10 Aplicar Relax al Arco (z,x)
V [ ] = { u v x y z }
Pregunta: d[x] > d[z] + w( z , x ) ?
d [ ] = { 6 7 0 }
P [ ] = { z z } Respuesta: SI

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


u 5 v Lista de Arcos
(u,v)
6
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
(z,u)
9 (z,x)
Paso 2.1 Aplicar Relax al Arco (u,v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[u] + w( u , v ) ?
d [ ] = { 6 7 0 }
P [ ] = { z z } Respuesta: SI

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


u 5 v Lista de Arcos

6 11 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
(z,u)
9 (z,x)
Paso 2.1 Aplicar Relax al Arco (u,v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[u] + w( u , v ) ?
d [ ] = { 6 11 7 0 }
P [ ] = { z u z } Respuesta: SI

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


u 5 v Lista de Arcos

6 11 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
(z,u)
9 (z,x)
Paso 2.2 Aplicar Relax al Arco (u,x)
V [ ] = { u v x y z }
Pregunta: d[x] > d[u] + w( u , x ) ?
d [ ] = { 6 11 7 0 }
P [ ] = { z u z } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 11 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
(z,u)
9 (z,x)
Paso 2.3 Aplicar Relax al Arco (u,y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[u] + w( u , y ) ?
d [ ] = { 6 11 7 0 }
P [ ] = { z u z } Respuesta: SI

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


u 5 v Lista de Arcos

6 11 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 2.3 Aplicar Relax al Arco (u,y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[u] + w( u , y ) ?
d [ ] = { 6 11 7 2 0 }
P [ ] = { z u z u } Respuesta: SI

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


u 5 v Lista de Arcos

6 11 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 2.4 Aplicar Relax al Arco (v,u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[v] + w( v , u ) ?
d [ ] = { 6 11 7 2 0 }
P [ ] = { z u z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 11 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 2.5 Aplicar Relax al Arco (x,v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[x] + w( x , v ) ?
d [ ] = { 6 11 7 2 0 }
P [ ] = { z u z u } Respuesta: SI

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


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 2.5 Aplicar Relax al Arco (x,v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[x] + w( x , v ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: SI

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


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 2.6 Aplicar Relax al Arco (x,y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[x] + w( x , y ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 2.7 Aplicar Relax al Arco (y,v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[y] + w( y , v ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 2.8 Aplicar Relax al Arco (y,z)
V [ ] = { u v x y z }
Pregunta: d[z] > d[y] + w( y , z ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 2.9 Aplicar Relax al Arco (z,u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[z] + w( z , u ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 2.10 Aplicar Relax al Arco (z,x)
V [ ] = { u v x y z }
Pregunta: d[x] > d[z] + w( z , x ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.1 Aplicar Relax al Arco (u,v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[u] + w( u , v ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.2 Aplicar Relax al Arco (u,x)
V [ ] = { u v x y z }
Pregunta: d[x] > d[u] + w( u , x ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.3 Aplicar Relax al Arco (u,y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[u] + w( u , y ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

6 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.4 Aplicar Relax al Arco (v, u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[v] + w( v , u ) ?
d [ ] = { 6 4 7 2 0 }
P [ ] = { z x z u } Respuesta: SI

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


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.4 Aplicar Relax al Arco (v, u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[v] + w( v , u ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: SI

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


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.5 Aplicar Relax al Arco (x, v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[x] + w( x , v ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.6 Aplicar Relax al Arco (x, y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[x] + w( x , y ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.7 Aplicar Relax al Arco (y, v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[y] + w( y , v ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.8 Aplicar Relax al Arco (y, z)
V [ ] = { u v x y z }
Pregunta: d[z] > d[y] + w( y , z ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.9 Aplicar Relax al Arco (z, u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[z] + w( z , u ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 3.10 Aplicar Relax al Arco (z, x)
V [ ] = { u v x y z }
Pregunta: d[x] > d[z] + w( z , x ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 4.1 Aplicar Relax al Arco (u, v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[u] + w( u , v ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 4.2 Aplicar Relax al Arco (u, x)
V [ ] = { u v x y z }
Pregunta: d[x] > d[u] + w( u , x ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
2 (z,u)
9 (z,x)
Paso 4.3 Aplicar Relax al Arco (u, y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[u] + w( u , y ) ?
d [ ] = { 2 4 7 2 0 }
P [ ] = { v x z u } Respuesta: SI

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


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
-2 (z,u)
9 (z,x)
Paso 4.3 Aplicar Relax al Arco (u, y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[u] + w( u , y ) ?
d [ ] = { 2 4 7 -2 0 }
P [ ] = { v x z u } Respuesta: SI

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


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
-2 (z,u)
9 (z,x)
Paso 4.4 Aplicar Relax al Arco (v, u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[v] + w( v , u ) ?
d [ ] = { 2 4 7 -2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
-2 (z,u)
9 (z,x)
Paso 4.5 Aplicar Relax al Arco (x, v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[x] + w( x , v ) ?
d [ ] = { 2 4 7 -2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
-2 (z,u)
9 (z,x)
Paso 4.6 Aplicar Relax al Arco (x, y)
V [ ] = { u v x y z }
Pregunta: d[y] > d[x] + w( x , y ) ?
d [ ] = { 2 4 7 -2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
-2 (z,u)
9 (z,x)
Paso 4.7 Aplicar Relax al Arco (y, v)
V [ ] = { u v x y z }
Pregunta: d[v] > d[y] + w( y , v ) ?
d [ ] = { 2 4 7 -2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
-2 (z,u)
9 (z,x)
Paso 4.8 Aplicar Relax al Arco (y, z)
V [ ] = { u v x y z }
Pregunta: d[z] > d[y] + w( y , z ) ?
d [ ] = { 2 4 7 -2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
-2 (z,u)
9 (z,x)
Paso 4.9 Aplicar Relax al Arco (z, u)
V [ ] = { u v x y z }
Pregunta: d[u] > d[z] + w( z , u ) ?
d [ ] = { 2 4 7 -2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
-2 (z,u)
9 (z,x)
Paso 4.10 Aplicar Relax al Arco (z, x)
V [ ] = { u v x y z }
Pregunta: d[x] > d[z] + w( z , x ) ?
d [ ] = { 2 4 7 -2 0 }
P [ ] = { v x z u } Respuesta: NO

Proceso: No se hace nada.


u 5 v Lista de Arcos

2 4 (u,v)
-2 (u,x)
6
(u,y)
z -4 (v,u)
0 8
7 (x,v)
-3 (x,y)
(y,v)
7 2 (y,z)
x
7 y
-2 (z,u)
9 (z,x)
Paso 5.0
V [ ] = { u v x y z }
Verificar en cada arco que se
d [ ] = { 2 4 7 -2 0 } cumple la condicin:
P [ ] = { v x z u } d[Vf] <= d[Vi] + w( Vi , Vf )
Si no se cumple:
=> NO EXISTE SOLUCIN.
u v Lista de Arcos

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

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