Está en la página 1de 43

Modelos de Redes: Problemas de

Modelos de Redes: Problemas de


la Ruta m
la Ruta m

s corta
s corta
M. En C. Eduardo Bustos Far
M. En C. Eduardo Bustos Far

as
as
2
Problemas de la Ruta m
Problemas de la Ruta m

s corta
s corta
Problemas de la Ruta m
Problemas de la Ruta m

s corta
s corta

Se trata de encontrar la ruta de menor distancia, o
Se trata de encontrar la ruta de menor distancia, o
costo ,a entre el punto de partida o nodo inicial y el
costo ,a entre el punto de partida o nodo inicial y el
destino o nodo terminal.
destino o nodo terminal.

Definici
Definici

n del Problema
n del Problema
-
- Se tienen n nodos, partiendo del nodo inicial 1 y terminando en Se tienen n nodos, partiendo del nodo inicial 1 y terminando en
el nodo final n. el nodo final n.
- - Arcos Arcos bi bi- -direccionales conectan los nodos i y j con distancias direccionales conectan los nodos i y j con distancias
mayores que cero, mayores que cero, d d
ij ij
- - Se desea encontrar la ruta de m Se desea encontrar la ruta de m nima distancia que conecta el nima distancia que conecta el
nodo 1 con el nodo n. nodo 1 con el nodo n.
4
EJ EMPLO:
EJ EMPLO:
Ruteo
Ruteo
en Redes de Datos
en Redes de Datos

Una red de comunicaciones involucra un
Una red de comunicaciones involucra un
conjunto de computadoras (nodos) conectadas
conjunto de computadoras (nodos) conectadas
mediante enlaces de comunicacion (arcos),
mediante enlaces de comunicacion (arcos),
que transfiere paquetes (grupos de bits) desde
que transfiere paquetes (grupos de bits) desde
determinados nodos origen a otros nodos
determinados nodos origen a otros nodos
destino.
destino.

La forma m
La forma m

s com
s com

n para seleccionar la
n para seleccionar la
trayectoria (o ruta) de dichos paquetes, se
trayectoria (o ruta) de dichos paquetes, se
basa en la formulaci
basa en la formulaci

n
n
de la ruta m
de la ruta m

s corta.
s corta.

En particular a cada enlace de comunicaci
En particular a cada enlace de comunicaci

n se
n se
le asigna un escalar positivo el cual se puede
le asigna un escalar positivo el cual se puede
ver como
ver como
su longitud.
su longitud.
5

Un algoritmo de
Un algoritmo de
ruteo
ruteo
de trayectoria m
de trayectoria m

s
s
corta,
corta,
rutea
rutea
cada paquete a lo largo de la
cada paquete a lo largo de la
trayectoria de longitud m
trayectoria de longitud m

nima
nima
(ruta m
(ruta m

s corta) entre los nodos origen y


s corta) entre los nodos origen y
destino del paquete.
destino del paquete.

Hay varias formas posibles de seleccionar la
Hay varias formas posibles de seleccionar la
longitud de los enlaces. Aqu
longitud de los enlaces. Aqu

describimos
describimos
solamente dos:
solamente dos:

La forma m
La forma m

s simple es que cada enlace tenga


s simple es que cada enlace tenga
una longitud unitaria, en cuyo caso, la
una longitud unitaria, en cuyo caso, la
trayectoria m
trayectoria m

s corta es simplemente una


s corta es simplemente una
trayectoria con el menor n
trayectoria con el menor n

mero de enlaces.
mero de enlaces.
6
De una manera m De una manera m s general, la longitud de un enlace s general, la longitud de un enlace
puede depender de su capacidad de puede depender de su capacidad de transmisi transmisi n y su n y su
carga de tr carga de tr fico. fico.
La situaci La situaci n es encontrar la trayectoria m n es encontrar la trayectoria m s corta. s corta.
Esperamos que dicha trayectoria contenga pocos Esperamos que dicha trayectoria contenga pocos
enlaces no enlaces no
congestionados; de esta forma los enlaces menos congestionados; de esta forma los enlaces menos
congestionados son candidatos a pertenecer a la ruta. congestionados son candidatos a pertenecer a la ruta.
Hay algoritmos de Hay algoritmos de ruteo ruteo especializados que tambi especializados que tambi n n
pueden permitir que la longitud de cada enlace cambie pueden permitir que la longitud de cada enlace cambie
en el tiempo, dependiendo del nivel de tr en el tiempo, dependiendo del nivel de tr fico de cada fico de cada
enlace. De esta forma un algoritmo de enlace. De esta forma un algoritmo de ruteo ruteo se debe se debe
adaptar a sobrecargas temporales y adaptar a sobrecargas temporales y rutear rutear paquetes paquetes
alrededor de nodos congestionados. alrededor de nodos congestionados. Dentro de este Dentro de este
contexto, el algoritmo de ruta m contexto, el algoritmo de ruta m s corta para s corta para ruteo ruteo
opera opera cont cont nuamente nuamente, determinando la , determinando la
trayectoria m trayectoria m s corta con longitudes que var s corta con longitudes que var an en el an en el
tiempo. tiempo.
7

Una caracter
Una caracter

stica peculiar de los algoritmos


stica peculiar de los algoritmos
de
de
ruteo
ruteo
de
de
trayecoria
trayecoria
m
m

s corta es que con


s corta es que con
frecuencia utilizan
frecuencia utilizan
comunicaci
comunicaci

n y computaci
n y computaci

n as
n as

ncrona y
ncrona y
distribuida. En particular, cada nodo de la red
distribuida. En particular, cada nodo de la red
de comunicaci
de comunicaci

n:
n:
1. 1.
monitorea las condiciones de trafico de sus
monitorea las condiciones de trafico de sus
enlaces adyacentes,
enlaces adyacentes,
2. 2.
calcula estimados de sus distancias m
calcula estimados de sus distancias m

s cortas
s cortas
a varios destinos y pasa estos estimados a
a varios destinos y pasa estos estimados a
otros nodos, quienes ajustan sus propios
otros nodos, quienes ajustan sus propios
estimados, y as
estimados, y as

sucesivamente.
sucesivamente.
8
Algoritmos de
Algoritmos de
Dijkstra
Dijkstra
Para Ruta
Para Ruta
M
M

s Corta
s Corta

Estos son algoritmos de etiquetado, los cuales,
Estos son algoritmos de etiquetado, los cuales,
en t
en t

rminos generales, encuentran la ruta m


rminos generales, encuentran la ruta m

s
s
corta entre dos nodos,
corta entre dos nodos,
incial
incial
a
a
y final
y final
z,
z,
de la
de la
siguiente manera:
siguiente manera:

Los nodos de la red son etiquetados con
Los nodos de la red son etiquetados con
n
n

meros. Al principio, todos tienen la etiqueta


meros. Al principio, todos tienen la etiqueta
00 excepto el nodo inicial
00 excepto el nodo inicial
a
a
que tiene la
que tiene la
etiqueta 0. Los arcos tienen un peso
etiqueta 0. Los arcos tienen un peso
wij
wij
que
que
representa la distancia del
representa la distancia del
enclace
enclace
(
(
i
i
,
,
j
j
).
).
Los
Los
algoritmos de
algoritmos de
Dijkstra
Dijkstra
renumeran los nodos,
renumeran los nodos,
de manera que cuando el nodo
de manera que cuando el nodo
z
z
tiene una
tiene una
etiqueta permanente, se ha obtenido la
etiqueta permanente, se ha obtenido la
soluci
soluci

n final.
n final.
9
Algoritmo de la ruta m
Algoritmo de la ruta m

s
s
corta
corta
1. 1. Objetivos para n Objetivos para n- - sima sima interacci interacci n: Encontrar el n n: Encontrar el n- - simo simo
nodo m nodo m s cercano al origen. (Este paso se repetir s cercano al origen. (Este paso se repetir para n = para n =
1,2, 1,2, , hasta que el n , hasta que el n- - simo simo nodo m nodo m s cercano sea el nodo s cercano sea el nodo
destino). destino).
2. 2. Datos para la n Datos para la n- - sima sima interacci interacci n: n n: n- -1 nodos m 1 nodos m s cercanos s cercanos
al origen (encontrados en las interacciones previas), al origen (encontrados en las interacciones previas),
incluyendo su ruta m incluyendo su ruta m s corta y la distancia desde el origen. s corta y la distancia desde el origen.
(Estos nodos y el origen se llamar (Estos nodos y el origen se llamar n nodos resueltos; el n nodos resueltos; el
resto son nodos no resueltos). resto son nodos no resueltos).
3. 3. Candidatos para el n Candidatos para el n- - simo simo nodo m nodo m s cercano: Cada nodo s cercano: Cada nodo
resuelto que resuelto que sta conectado directamente por una ligadura sta conectado directamente por una ligadura
con uno o m con uno o m s nodos no resueltos proporcionan un s nodos no resueltos proporcionan un
candidato, y este es el nodo no resuelto que tiene la ligadura candidato, y este es el nodo no resuelto que tiene la ligadura
m m s corta. (Los empates proporcionan candidatos s corta. (Los empates proporcionan candidatos
adicionales). adicionales).
4. 4. C C lculo del n lculo del n- - simo simo nodo m nodo m s cercano: Para cada nodo s cercano: Para cada nodo
resuelto y sus candidatos, se suma la distancia entre ellos y resuelto y sus candidatos, se suma la distancia entre ellos y
la distancia de la ruta m la distancia de la ruta m s corta desde el origen a este nodo s corta desde el origen a este nodo
resuelto. El candidato con la distancia total m resuelto. El candidato con la distancia total m s peque s peque a es a es
el n el n- - simo simo nodo m nodo m s cercano (los empates proporcionan s cercano (los empates proporcionan
nodos resueltos adicionales y su ruta m nodos resueltos adicionales y su ruta m s corta es la que s corta es la que
genera esa distancia). genera esa distancia).
10
EJ EMPLO 1
EJ EMPLO 1
Ruta m
Ruta m

s corta
s corta
Lineas
Lineas
Fairway
Fairway
Van
Van

Determine la ruta mas corta entre Seattle y El Paso
Determine la ruta mas corta entre Seattle y El Paso
para la siguiente red de carreteras.
para la siguiente red de carreteras.
Salt Lake City
1
2
3 4
5
6
7 8
9
10
11
12
13
14
15
16
17
18
19
El Paso
Seattle
Boise
Portland
Butte
Cheyenne
Reno
Sac.
Bakersfield
Las Vegas
Denver
Albuque.
Kingman
Barstow
Los Angeles
San Diego
Tucson
Phoenix
599
691
497
180
432
345
440
102
452
621
420
526
138
291
280
432
108
469
207
155
114
386
403
118
425 314
602

Soluci
Soluci

n
n
-
-
Analog
Analog

a de un problema de programaci
a de un problema de programaci

n
n
lineal
lineal
- - Variables de decisi Variables de decisi n n
X X
ij ij
= 1 si un transporte debe viajar por la = 1 si un transporte debe viajar por la carretra carretra que une que une
la ciudad i con la ciudad j. la ciudad i con la ciudad j.
0 0 En cualquier otro caso En cualquier otro caso
Objetivo = Minimizar
Objetivo = Minimizar

d
d
ij ij
X
X
ij ij
7
2
Salt Lake City
1
3 4
Seattle
Boise
Portland
599
497
180
432
345
Butte
[El numero de carreteras para salir de Seattle (Nodo de inicio)] = 1
X12 + X13 + X14 = 1
De una forma similar:
[El nmero de carreteras para llegar a El Paso (Nodo final)] = 1
X12,19 + X16,19 + X18,19 = 1
[El nmero de carreteras para entrar a la cuidad] =
[El nmero de carreteras para salir de la ciudad].
Por ejemplo, en Boise(Ciudad 4):
X14 + X34 +X74 = X41 + X43 + X47.
Sujeto a las siguientes restricciones
Restricciones mayores que cero
Solucin Optima por WINQSB
Solucin Optima por WINQSB

Soluci
Soluci

n
n
-
-
Analog
Analog

a con un problema de redes


a con un problema de redes
El algoritmo de El algoritmo de Dijkstra Dijkstra s s: :
- -Encontrara la distancia m Encontrara la distancia m nima del nodo de partida a los otros nima del nodo de partida a los otros
nodos, en el orden que se nodos, en el orden que se encuentrana encuentrana los nodos con respecto los nodos con respecto
al nodo de inicio. al nodo de inicio.
- - Este algoritmo encuentra la ruta m Este algoritmo encuentra la ruta m s corta desde el nodo de s corta desde el nodo de
inicio a todos los nodos de la red. inicio a todos los nodos de la red.
SEA.
SEA.
Salt Lake City
1
2
3 4
5
6
7 8
9
10
11
12
13
14
15
16
17
18
19
El Paso
Seattle
Boise
Portland
Butte
Cheyene
Reno
Sac.
Bakersfield
Las Vegas
Denver
Albuque.
Kingman
Barstow
Los Angeles
San Diego
Tucson
Pheonix
599
691
497
180
432
345
440
102
452
621
420
526
138
291
280
432
108
469
207
155
114
386
403
118
425 314
BUT
599
POR
180
497
BOI
5
9
9
1
8
0
4
9
7
POR.
POR.
BOI
432
SAC
602
+
+
=
=
6
1
2
7
8
2
BOI
BOI
BOI.
BOI.
345
SLC
+
=
8
4
2
BUT.
BUT.
SLC
420
CHY.
691
+
+
=
=
1
1
1
9
1
2
9
0
SLC.
SLC SLC.
SAC.
SAC.
Una representacin del algoritmo de Dijkstras
Y de esta manera
hasta cubrir toda la red..
18
EJ EMPLO 2
EJ EMPLO 2
Ruta m
Ruta m

s corta
s corta
19
Una empresa distribuidora surte a 7 supermercados con Una empresa distribuidora surte a 7 supermercados con
distintas ubicaciones. distintas ubicaciones.
Los administradores desean conocer la distancia m Los administradores desean conocer la distancia m s corta s corta
a cada uno de ellos, as a cada uno de ellos, as como las distancias ( como las distancias (Km Km) )
20
SOLUCI
SOLUCI

N
N
21
M
M

todo tabular
todo tabular
22
23

24
EJ EMPLO 3
EJ EMPLO 3
RUTA M
RUTA M

S CORTA
S CORTA
25

El costo de un autom
El costo de un autom

vil cuesta 12,000


vil cuesta 12,000
d
d

lares, el costo de mantenimiento depende


lares, el costo de mantenimiento depende
de la edad del auto al inicio del a
de la edad del auto al inicio del a

o (ver
o (ver
tabla).
tabla).

Con la finalidad de evitar el costo de
Con la finalidad de evitar el costo de
mantenimiento alto, se da como cota inicial
mantenimiento alto, se da como cota inicial
de un nuevo que es valorado de acuerdo a su
de un nuevo que es valorado de acuerdo a su
edad (ver tabla).
edad (ver tabla).

La preocupaci
La preocupaci

n es minimizar el costo neto


n es minimizar el costo neto
incurrido en los pr
incurrido en los pr

ximos 5 a
ximos 5 a

os.
os.
26
PRECIO DE MANTEN.
ANUAL
EDAD DEL AUTO
PRECIO DEL AUTO POR
COTA INICIAL
2000 0 7000
4000 1 6000
5000 2 2000
9000 3 1000
12000 4 50
27
SOLUCI
SOLUCI

N
N
28

La red tendr
La red tendr

a {1,2,3,4,5,6} seis nodos el nodo i


a {1,2,3,4,5,6} seis nodos el nodo i
corresponde al inicio del a
corresponde al inicio del a

o i; para i < j
o i; para i < j

El arco (i, j) corresponde a la compra del auto nuevo
El arco (i, j) corresponde a la compra del auto nuevo
al inicio del a
al inicio del a

o i y conservarlo hasta el inicio del a


o i y conservarlo hasta el inicio del a

o
o
j.
j.

La longitud del arco (i, j): llamado
La longitud del arco (i, j): llamado
Ci
Ci
, j es el costo
, j es el costo
neto total incurrido por ser el due
neto total incurrido por ser el due

o y tener el auto
o y tener el auto
desde el inicio del a
desde el inicio del a

o i hasta el principio del a


o i hasta el principio del a

o j, si
o j, si
se compra un auto nuevo al inicio del a
se compra un auto nuevo al inicio del a

o i y se da
o i y se da
como adelanto al inicio del a
como adelanto al inicio del a

o j
o j
29
30
En miles de pesos: En miles de pesos:
C12 C12 = = 2 2 + + 12 12 7 7 = 7 = 7
C13 C13 = = 2 2 + + 4 4 + + 6 6 = 12 = 12
C14 C14 = = 2 2 + + 4 4 + + 5 5 + +
12 12 2 2 = 21 = 21
C15 C15 =2 + 4 =2 + 4 + 5 + 5 + + 9 9 + + 12 12 1 = 31 1 = 31
C16 C16 =2+ =2+ 4 4 +5 +5 +9 +9 + + 12 12 + 12 = 44 + 12 = 44
C23 C23 = = 2 2 + + 12 12 7 7 = = 7 7
C24 C24 = = 2 2 + + 4 4 + + 12 12 6 6
= = 12 12
C25 C25 =2+ =2+ 4+ 4+ 5 5 + + 12 12 2 2 = 21 = 21
C26 C26 =2 =2 + + 4 4 +5 +5 +9 +9 +12 +12 1 = 31 1 = 31
31
32
Ejemplo 4
Ejemplo 4
Ruta m
Ruta m

s corta
s corta
33

Una empresa de alquiler de carros desarrolla
Una empresa de alquiler de carros desarrolla
un plan de reemplazo para un horizonte de 5
un plan de reemplazo para un horizonte de 5
a
a

os (2001
os (2001

2005) se toma la decisi


2005) se toma la decisi

n al
n al
principio de cada a
principio de cada a

o si se mantiene el auto o
o si se mantiene el auto o
lo reemplaza, el auto debe estar en servicio
lo reemplaza, el auto debe estar en servicio
como m
como m

nimo un a
nimo un a

o, pero se debe
o, pero se debe
remplazarlo despu
remplazarlo despu

s de 3 a
s de 3 a

os.
os.

El cuadro siguiente represente el costo de
El cuadro siguiente represente el costo de
reemplazo como funci
reemplazo como funci

n del a
n del a

o que se
o que se
adquiere el auto y el n
adquiere el auto y el n

mero de a
mero de a

os en
os en
operaci
operaci

n.
n.
34
AO EN EL QUE
SE
ADQUIERE
COSTO DE REEMPLAZO POR UNIDAD MONETARIO
POR DETERMINADOS AOS DE OPERACIN
20001
1 2 3
20002 4000 5400 9800
20003 4300 6200 8700
20004 4800 7100 -----
20005 4900 ----- -----
35
SOLUCI
SOLUCI

N
N
36
37
Algoritmo de
Algoritmo de
Dijkstra
Dijkstra
con teor
con teor

a de grafos
a de grafos
ANEXO
ANEXO
38
Problemas de caminos m
Problemas de caminos m

nimos.
nimos.
Definici Definici n: n: Dado un grafo ponderado G= (V, A) (dirigido o no) y un Dado un grafo ponderado G= (V, A) (dirigido o no) y un
camino camino w w
1 1
, w , w
2 2
, ..., , ..., w w
q q
en G, el en G, el costo del camino costo del camino ser ser la suma de los la suma de los
costos asociados a las aristas (w costos asociados a las aristas (w
1 1
, w , w
2 2
), ..., ( ), ..., (w w
q q- -1 1
, , w w
q q
). ).
Si el grafo es no ponderado, normalmente el costo se asocia con Si el grafo es no ponderado, normalmente el costo se asocia con la la
longitud del camino. longitud del camino.
Problema de los caminos m Problema de los caminos m s cortos por un origen: s cortos por un origen:
Encontrar los caminos m Encontrar los caminos m s cortos entre un nodo origen dado y todos los s cortos entre un nodo origen dado y todos los
dem dem s nodos. s nodos.
Algoritmo de Dijkstra
Algoritmo de Dijkstra
Supongamos un grafo ponderado G (con pesos Supongamos un grafo ponderado G (con pesos 0) y un nodo origen v. 0) y un nodo origen v.
El algoritmo trabaja con dos conjuntos: El algoritmo trabaja con dos conjuntos:
S: conjunto de nodos escogidos S: conjunto de nodos escogidos, para los cuales se conoce el camino de , para los cuales se conoce el camino de
distancia m distancia m nima al origen. nima al origen.
C: conjunto de nodos candidatos C: conjunto de nodos candidatos, pendientes de calcular el camino , pendientes de calcular el camino
m m nimo. Conocemos los caminos m nimo. Conocemos los caminos m nimos al origen pasando por nodos de S. nimos al origen pasando por nodos de S.
En cada paso coger del conjunto de candidatos el nodo con distan En cada paso coger del conjunto de candidatos el nodo con distancia cia
m m nima al origen. Recalcular los caminos de los dem nima al origen. Recalcular los caminos de los dem s candidatos pasando s candidatos pasando
por el nodo cogido. por el nodo cogido.
39
Problemas de caminos m
Problemas de caminos m

nimos.
nimos.
Algoritmo de Dijkstra
Algoritmo de Dijkstra
Un Un camino especial camino especial del origen a otro nodo cualquiera es un camino del origen a otro nodo cualquiera es un camino
que s que s lo pasa por nodos ya escogidos. lo pasa por nodos ya escogidos.
Supongamos que el nodo origen es el 1. Supongamos que el nodo origen es el 1.
En un En un array array D[2, ..., N] D[2, ..., N] se guarda la longitud del camino especial m se guarda la longitud del camino especial m s s
corto a cada v corto a cada v rtice. Cuando todos los nodos est rtice. Cuando todos los nodos est n en S, todos los n en S, todos los
caminos son especiales y D contiene las distancias m caminos son especiales y D contiene las distancias m nimas al origen. nimas al origen.
En otro En otro array array P[2, ..., N] P[2, ..., N] se almacena el camino por el que pasa cada se almacena el camino por el que pasa cada
nodo v. El camino de 1 a v pasa por P[v]. nodo v. El camino de 1 a v pasa por P[v].
Inicialmente D contendr Inicialmente D contendr los caminos directos de 1 a los restantes los caminos directos de 1 a los restantes
nodos, es decir C[1, x]. Si no existe la arista (1, x) el costo nodos, es decir C[1, x]. Si no existe la arista (1, x) el costo ser ser . .
P contendr P contendr el valor 1 (el camino es directo). S contendr el valor 1 (el camino es directo). S contendr s s lo el nodo 1. lo el nodo 1.
Buscar el nodo v de C=V Buscar el nodo v de C=V- -S con m S con m nimo valor de D. A nimo valor de D. A adir v a S. Para el adir v a S. Para el
resto de nodos comprobar si el camino al origen es m resto de nodos comprobar si el camino al origen es m s corto pasando s corto pasando
por el nodo v. por el nodo v.
if if D[v]+C[v, w] < D[w] D[v]+C[v, w] < D[w] then then begin begin
D[w]:= D[v] + C[v, w]; D[w]:= D[v] + C[v, w];
P[w]:= v; P[w]:= v;
end end; ;
40
Problemas de caminos m
Problemas de caminos m

nimos.
nimos.
Algoritmo de
Algoritmo de
Dijkstra
Dijkstra
procedure procedure Dijkstra; Dijkstra;
var var
i: i: integer integer; ;
begin begin
for for i:= 2 i:= 2 to to N do N do begin begin
S[i]:= S[i]:= false false; ;
D[i]:= C[1, i]; D[i]:= C[1, i];
P[i]:= 1; P[i]:= 1;
end end; ;
for for i:= 1 i:= 1 to to N N- -1 do 1 do begin begin
v:= v v:= v rtice con D[v] m rtice con D[v] m nimo y S[v]= nimo y S[v]=false false; ;
S[v]:= S[v]:= true true; ;
for for cada nodo w adyacente a v do cada nodo w adyacente a v do
if if S[w]= S[w]=false false then then
if if D[v]+C[v, w]<D[w] D[v]+C[v, w]<D[w] then then begin begin
D[w]:= D[v]+C[v, w]; D[w]:= D[v]+C[v, w];
P[w]:= v; P[w]:= v;
end end; ;
end end; ;
end end; ;
var var
S: S: array array [2..N] [2..N] of of boolean boolean; ;
{ Nodos conocidos } { Nodos conocidos }
D: D: array array [2..N] [2..N] of of integer integer; ;
{ Costos de los caminos } { Costos de los caminos }
P: P: array array [2..N] [2..N] of of integer integer; ;
{ Camino de 1 a v } { Camino de 1 a v }
C: C: array array [1..N, 1..N] [1..N, 1..N] of of integer integer; ;
{ Matriz de costos de todas { Matriz de costos de todas
las aristas } las aristas }
procedure procedure ImprimeCamino ImprimeCamino (v: (v:
integer integer); );
begin begin
if if v<>1 v<>1 then then
ImprimirCamino(P[v ImprimirCamino(P[v]); ]);
write(v write(v); );
end end; ;
41
Problemas de caminos m
Problemas de caminos m

nimos.
nimos.
Algoritmo de Dijkstra
Algoritmo de Dijkstra
Ejemplo: Ejemplo: Mostrar la ejecuci Mostrar la ejecuci n del algoritmo de Dijkstra sobre el n del algoritmo de Dijkstra sobre el
siguiente grafo dirigido. siguiente grafo dirigido.
1
2
3
4
6
5
2
1
4
3
2
6
10
2
5
7
4
8
1
Nodo S D P S D P S D P S D P S D P
2 F 2 1 F 2 1 T 2 1 T 2 1 T 2 1
3 F 1 F 3 4 F 3 4 T 3 4 T 3 4
4 F 1 1 T 1 1 T 1 1 T 1 1 ..... T 1 1
5 F 1 F 3 4 F 3 4 F 3 4 T 3 4
6 F 1 F 9 4 F 9 4 F 8 3 T 6 7
7 F 1 F 5 4 F 5 4 F 5 4 T 5 4
Inicializ. v = 4 v = 2 v = 3 5, 7 v = 6
42
Problemas de caminos m
Problemas de caminos m

nimos.
nimos.
Algoritmo de Dijkstra
Algoritmo de Dijkstra
Orden de complejidad Orden de complejidad del algoritmo, con matrices de adyacencia: del algoritmo, con matrices de adyacencia:
Inicializaci Inicializaci n: O(n). n: O(n).
Ejecutar n Ejecutar n- -1 veces: 1 veces:
Buscar el elemento con D[v] m Buscar el elemento con D[v] m nimo y S[v] falso: O(n). nimo y S[v] falso: O(n).
Actualizar los valores de los nodos candidatos: O(n). Actualizar los valores de los nodos candidatos: O(n).
En total tenemos O(n En total tenemos O(n
2 2
). ).
Con listas de adyacencia: Con listas de adyacencia:
Inicializaci Inicializaci n: O(n). n: O(n).
La actualizaci La actualizaci n de los candidatos se limita a los nodos que son adyacentes n de los candidatos se limita a los nodos que son adyacentes
a v. En total la actualizaci a v. En total la actualizaci n se hace O(a) veces. n se hace O(a) veces.
La b La b squeda del elemento sigue requiriendo O(n) pasos, por lo que el squeda del elemento sigue requiriendo O(n) pasos, por lo que el
orden total ser orden total ser a O(n a O(n
2 2
). ).
Podemos usar una estructura ordenada para guardar los nodos cand Podemos usar una estructura ordenada para guardar los nodos candidatos idatos
(por ejemplo un (por ejemplo un rbol binario). La b rbol binario). La b squeda requiere squeda requiere O(log O(log n) en cada n) en cada
paso, en total O(n* paso, en total O(n*log log n). Adem n). Adem s, en la actualizaci s, en la actualizaci n un nodo podr n un nodo podr a a
cambiar de posici cambiar de posici n en el n en el rbol, luego requiere O(a* rbol, luego requiere O(a*log log n). n).
En total, requiere O((a+n)* En total, requiere O((a+n)*log log n). Si el grafo es conexo: O(a* n). Si el grafo es conexo: O(a*log log n). n).
Esta modificaci Esta modificaci n ser n ser adecuada cuando a<<n adecuada cuando a<<n
2 2
. .
43
Problemas de caminos m
Problemas de caminos m

nimos.
nimos.
Problema de los caminos m Problema de los caminos m s cortos entre cualquier par de nodos: s cortos entre cualquier par de nodos:
Encontrar los caminos m Encontrar los caminos m nimos entre cualquier par de nodos. nimos entre cualquier par de nodos.
Posible soluci Posible soluci n: n:
Aplicar el algoritmo de Dijkstra N veces. Aplicar el algoritmo de Dijkstra N veces.
Podemos obtener la soluci Podemos obtener la soluci n en O(n n en O(n
3 3
) ) O((a+n)*n* O((a+n)*n*log log n). n).
Algoritmo de Algoritmo de Floyd Floyd
Utiliza una matriz de adyacencia D[v, w], que ser Utiliza una matriz de adyacencia D[v, w], que ser la matriz de costos. la matriz de costos.
Inicialmente D[v, w] contendr Inicialmente D[v, w] contendr los costos de las aristas C[v, w]. los costos de las aristas C[v, w].
En cada paso k, en la posici En cada paso k, en la posici n D[v, w] estar n D[v, w] estar la longitud del camino la longitud del camino ptimo que ptimo que
pasa (posiblemente) por los k primeros nodos. pasa (posiblemente) por los k primeros nodos.
Al final del algoritmo, D almacenar Al final del algoritmo, D almacenar los costos de los caminos m los costos de los caminos m nimos. nimos.
En el paso k, el nodo k act En el paso k, el nodo k act a de pivote. Calcular, para cada camino de v a w, si a de pivote. Calcular, para cada camino de v a w, si
es m es m s corto pasando por k. s corto pasando por k.
D D
k k
[i [i, j]= , j]= min min ( (D D
k k- -1 1
[i, j], [i, j], D D
k k- -1 1
[i, k] + [i, k] + D D
k k- -1 1
[k, j]), para todo i [k, j]), para todo i j. j.
D D
k k
[i [i, k]= , k]= min min ( (D D
k k- -1 1
[i, k], [i, k], D D
k k- -1 1
[i, k] + [i, k] + D D
k k- -1 1
[k, k]) [k, k]) la fila y la columna k no var la fila y la columna k no var an en el an en el
paso k, luego s paso k, luego s lo necesitamos una matriz D. lo necesitamos una matriz D.

También podría gustarte