Está en la página 1de 43

Modelos de Redes: Problemas de

la Ruta ms corta
M. En C. Eduardo Bustos Faras

Problemas de la Ruta ms corta

Problemas de la Ruta ms corta




Se trata de encontrar la ruta de menor distancia, o


costo ,a entre el punto de partida o nodo inicial y el
destino o nodo terminal.

Definicin del Problema


- Se tienen n nodos, partiendo del nodo inicial 1 y terminando en

el nodo final n.
- Arcos bi-direccionales conectan los nodos i y j con distancias
mayores que cero, dij
- Se desea encontrar la ruta de mnima distancia que conecta el
nodo 1 con el nodo n.

EJEMPLO:
Ruteo en Redes de Datos

Una red de comunicaciones involucra un


conjunto de computadoras (nodos) conectadas
mediante enlaces de comunicacion (arcos),
que transfiere paquetes (grupos de bits) desde
determinados nodos origen a otros nodos
destino.
La forma ms comn para seleccionar la
trayectoria (o ruta) de dichos paquetes, se
basa
en
la
formulacin
de la ruta ms corta.
En particular a cada enlace de comunicacin se
le asigna un escalar positivo el cual se puede
ver como su longitud.
4

Un algoritmo de ruteo de trayectoria ms


corta, rutea cada paquete a lo largo de la
trayectoria
de
longitud
mnima
(ruta ms corta) entre los nodos origen y
destino del paquete.
Hay varias formas posibles de seleccionar la
longitud de los enlaces. Aqu describimos
solamente dos:
La forma ms simple es que cada enlace tenga
una longitud unitaria, en cuyo caso, la
trayectoria ms corta es simplemente una
trayectoria con el menor nmero de enlaces.
5

De una manera ms general, la longitud de un enlace


puede depender de su capacidad de transmisin y su
carga de trfico.
La situacin es encontrar la trayectoria ms corta.
Esperamos que dicha trayectoria contenga pocos
enlaces
no
congestionados; de esta forma los enlaces menos
congestionados son candidatos a pertenecer a la ruta.
Hay algoritmos de ruteo especializados que tambin
pueden permitir que la longitud de cada enlace cambie
en el tiempo, dependiendo del nivel de trfico de cada
enlace. De esta forma un algoritmo de ruteo se debe
adaptar a sobrecargas temporales y rutear paquetes
alrededor de nodos congestionados. Dentro de este
contexto, el algoritmo de ruta ms corta para ruteo
opera
contnuamente,
determinando
la
trayectoria ms corta con longitudes que varan en el
tiempo.

1.
2.

Una caracterstica peculiar de los algoritmos


de ruteo de trayecoria ms corta es que con
frecuencia
utilizan
comunicacin y computacin asncrona y
distribuida. En particular, cada nodo de la red
de comunicacin:
monitorea las condiciones de trafico de sus
enlaces adyacentes,
calcula estimados de sus distancias ms cortas
a varios destinos y pasa estos estimados a
otros nodos, quienes ajustan sus propios
estimados, y as sucesivamente.
7

Algoritmos de Dijkstra Para Ruta


Ms Corta

Estos son algoritmos de etiquetado, los cuales,


en trminos generales, encuentran la ruta ms
corta entre dos nodos, incial a y final z, de la
siguiente manera:
Los nodos de la red son etiquetados con
nmeros. Al principio, todos tienen la etiqueta
00 excepto el nodo inicial a que tiene la
etiqueta 0. Los arcos tienen un peso wij que
representa la distancia del enclace (i, j). Los
algoritmos de Dijkstra renumeran los nodos,
de manera que cuando el nodo z tiene una
etiqueta permanente, se ha obtenido la
solucin final.
8

Algoritmo de la ruta ms
corta
1.

2.

3.

4.

Objetivos para n-sima interaccin: Encontrar el n-simo


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

EJEMPLO 1
Ruta ms corta

10

Lineas Fairway Van




Determine la ruta mas corta entre Seattle y El Paso


para la siguiente red de carreteras.

Seattle

1
180

497

3
432
Portland
138

Reno
6

691
420
345

Bakersfield
114

13
Los Angeles

621

Denver 9

Las Vegas

11

108

155

Barstow
14

452

Kingman
469

15

207

Albuque.

Phoenix

386

425

12

403

16
17

8
102

432

118

San Diego

440

526

280

Cheyenne

Salt Lake City

291

10

Butte

Boise
4

602

5
Sac.

599

Tucson

18

314

19
El Paso

Solucin - Analoga de un problema de programacin


lineal
- Variables de decisin
Xij = 1 si un transporte debe viajar por la carretra que une
la ciudad i con la ciudad j.
0 En cualquier otro caso

Objetivo = Minimizar dijXij

Sujeto a las siguientes restricciones


1
180

Seattle
497

3
432
Portland

Butte

599

Boise
4

345

Salt Lake City

[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

Restricciones mayores que cero

[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.

Solucin
SolucinOptima
Optimapor
porWINQSB
WINQSB

Solucin-Analoga con un problema de redes


El algoritmo de Dijkstras:
-Encontrara la distancia mnima del nodo de partida a los otros
nodos, en el orden que se encuentrana los nodos con respecto
al nodo de inicio.
- Este algoritmo encuentra la ruta ms corta desde el nodo de
inicio a todos los nodos de la red.

Una representacin del algoritmo de Dijkstras


1119

+ 420
SLC.=

SLC
599

599
BUT.

BUT

CHY.

BOI
BOI
BOI.

Seattle

497

SEA.

842

345 =
+ SLC
SLC.
SLC
497

497
180

138

Butte
691

Boise
4

345

Reno

Cheyene

Salt Lake City


440
7

526

6
102

432
621
291

10
Bakersfield
114

+ 602 =
SACSAC.

13
Los Angeles

Y de esta
manera
Kingman
Barstow
hasta cubrir 15toda la red..12
108

452

155

469

207

14

Albuque.

Pheonix
386
403

16

118

San Diego

Denver 9

Las Vegas

11

280

782

POR

612

POR.

180

180

5
Sac.

599

420

3
432
Portland

+ 432 =
BOIBOI

1290

691 =

17

425

Tucson

18

314

19
El Paso

EJEMPLO 2
Ruta ms corta

18

Una empresa distribuidora surte a 7 supermercados con


distintas ubicaciones.
Los administradores desean conocer la distancia ms corta
a cada uno de ellos, as como las distancias (Km)

19

SOLUCIN

20

Mtodo tabular

21

22

23

EJEMPLO 3
RUTA MS CORTA

24

El costo de un automvil cuesta 12,000


dlares, el costo de mantenimiento depende
de la edad del auto al inicio del ao (ver
tabla).
Con la finalidad de evitar el costo de
mantenimiento alto, se da como cota inicial
de un nuevo que es valorado de acuerdo a su
edad (ver tabla).
La preocupacin es minimizar el costo neto
incurrido en los prximos 5 aos.
25

PRECIO DE MANTEN.
ANUAL

EDAD DEL AUTO

2000
4000
5000
9000
12000

0
1
2
3
4

PRECIO DEL AUTO POR


COTA INICIAL

7000
6000
2000
1000
50

26

SOLUCIN

27

La red tendra {1,2,3,4,5,6} seis nodos el nodo i


corresponde al inicio del ao i; para i < j
El arco (i, j) corresponde a la compra del auto nuevo
al inicio del ao i y conservarlo hasta el inicio del ao
j.
La longitud del arco (i, j): llamado Ci, j es el costo
neto total incurrido por ser el dueo y tener el auto
desde el inicio del ao i hasta el principio del ao j, si
se compra un auto nuevo al inicio del ao i y se da
como adelanto al inicio del ao j

28

29

En miles de pesos:
C12
=
2
C13
=
2
C14
=
2
12

C15
=2 + 4 + 5
C16
=2+
4
C23
=
2
C24
=
2
=
12
C25
=2+
4+
C26
=2
+

+
+
+
2
+
+5
+
+

12
4
4
= 21
9
+9
12
4

+
+

7
6
5

=7
= 12
+

+
+

12
12
7
12

1 = 31
+ 12 = 44
=
7

5
4

+
+5

12
+9

2
+12

= 21
1 = 31

30

31

Ejemplo 4
Ruta ms corta

32

Una empresa de alquiler de carros desarrolla


un plan de reemplazo para un horizonte de 5
aos (2001 2005) se toma la decisin al
principio de cada ao si se mantiene el auto o
lo reemplaza, el auto debe estar en servicio
como mnimo un ao, pero se debe
remplazarlo despus de 3 aos.
El cuadro siguiente represente el costo de
reemplazo como funcin del ao que se
adquiere el auto y el nmero de aos en
operacin.
33

AO EN EL QUE
COSTO DE REEMPLAZO POR UNIDAD MONETARIO
SE
POR DETERMINADOS AOS DE OPERACIN
ADQUIERE

20001

20002

4000

5400

9800

20003

4300

6200

8700

20004

4800

7100

-----

20005

4900

-----

----34

SOLUCIN

35

36

Algoritmo de Dijkstra
con teora de grafos
ANEXO

37

Problemas de caminos mnimos.

Definicin: Dado un grafo ponderado G= (V, A) (dirigido o no) y un


camino w1, w2, ..., wq en G, el costo del camino ser la suma de los
costos asociados a las aristas (w1, w2), ..., (wq-1, wq).
Si el grafo es no ponderado, normalmente el costo se asocia con la
longitud del camino.
Problema de los caminos ms cortos por un origen:
Encontrar los caminos ms cortos entre un nodo origen dado y todos los
dems nodos.

Algoritmo de Dijkstra

Supongamos un grafo ponderado G (con pesos 0) y un nodo origen v.


El algoritmo trabaja con dos conjuntos:
S: conjunto de nodos escogidos, para los cuales se conoce el camino de
distancia mnima al origen.
C: conjunto de nodos candidatos, pendientes de calcular el camino
mnimo. Conocemos los caminos mnimos al origen pasando por nodos de S.

En cada paso coger del conjunto de candidatos el nodo con distancia


mnima al origen. Recalcular los caminos de los dems candidatos pasando
por el nodo cogido.
38

Problemas de caminos mnimos.


Algoritmo de Dijkstra

Un camino especial del origen a otro nodo cualquiera es un camino


que slo pasa por nodos ya escogidos.
Supongamos que el nodo origen es el 1.
En un array D[2, ..., N] se guarda la longitud del camino especial ms
corto a cada vrtice. Cuando todos los nodos estn en S, todos los
caminos son especiales y D contiene las distancias mnimas al origen.
En otro array P[2, ..., N] se almacena el camino por el que pasa cada
nodo v. El camino de 1 a v pasa por P[v].
Inicialmente D contendr los caminos directos de 1 a los restantes
nodos, es decir C[1, x]. Si no existe la arista (1, x) el costo ser .
P contendr el valor 1 (el camino es directo). S contendr slo el nodo 1.
Buscar el nodo v de C=V-S con mnimo valor de D. Aadir v a S. Para el
resto de nodos comprobar si el camino al origen es ms corto pasando
por el nodo v.
if D[v]+C[v, w] < D[w] then begin
D[w]:= D[v] + C[v, w];
P[w]:= v;
39
end;

var

Problemas de caminos mnimos.


Algoritmo de Dijkstra
procedure Dijkstra;
S: array [2..N] of boolean;

var

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

end;

40

Problemas de caminos mnimos.


Algoritmo de Dijkstra

Ejemplo: Mostrar la ejecucin del algoritmo de Dijkstra sobre el


siguiente grafo dirigido.
2

1
4

1
2

2
5

2
3
4
5
6
7

10

3
4

Nodo

6
7

S D P

S D P

S D P

S D P

S D P

F
F
F
F
F
F

F
F
T
F
F
F

T
F
T
F
F
F

T
T
T
F
F
F

T
T
T
T
T
T

1
1
1
1
1
1

Inicializ.

2
3
1
3
9
5

v=4

1
4
1
4
4
4

2
3
1
3
9
5

1
4
1
4
4
4

v=2

2
3
1
3
8
5

1
4
1
4
3
4

v=3

.....

5, 7

2
3
1
3
6
5

1
4
1
4
7
4

v=6
41

Problemas de caminos mnimos.


Algoritmo de Dijkstra

Orden de complejidad del algoritmo, con matrices de adyacencia:


Inicializacin: O(n).
Ejecutar n-1 veces:
Buscar el elemento con D[v] mnimo y S[v] falso: O(n).
Actualizar los valores de los nodos candidatos: O(n).
En total tenemos O(n2).

Con listas de adyacencia:

Inicializacin: O(n).
La actualizacin de los candidatos se limita a los nodos que son adyacentes
a v. En total la actualizacin se hace O(a) veces.
La bsqueda del elemento sigue requiriendo O(n) pasos, por lo que el
orden total sera O(n2).
Podemos usar una estructura ordenada para guardar los nodos candidatos
(por ejemplo un rbol binario). La bsqueda requiere O(log n) en cada
paso, en total O(n*log n). Adems, en la actualizacin un nodo podra
cambiar de posicin en el rbol, luego requiere O(a*log n).
En total, requiere O((a+n)*log n). Si el grafo es conexo: O(a*log n).
Esta modificacin ser adecuada cuando a<<n2.
42

Problemas de caminos mnimos.


Problema de los caminos ms cortos entre cualquier par de nodos:
Encontrar los caminos mnimos entre cualquier par de nodos.
Posible solucin:
Aplicar el algoritmo de Dijkstra N veces.
Podemos obtener la solucin en O(n3) O((a+n)*n*log n).

Algoritmo de Floyd

Utiliza una matriz de adyacencia D[v, w], que ser la matriz de costos.
Inicialmente D[v, w] contendr los costos de las aristas C[v, w].
En cada paso k, en la posicin D[v, w] estar la longitud del camino ptimo que
pasa (posiblemente) por los k primeros nodos.
Al final del algoritmo, D almacenar los costos de los caminos mnimos.
En el paso k, el nodo k acta de pivote. Calcular, para cada camino de v a w, si
es ms corto pasando por k.
Dk[i, j]= min (Dk-1[i, j], Dk-1[i, k] + Dk-1[k, j]), para todo ij.
Dk[i, k]= min (Dk-1[i, k], Dk-1[i, k] + Dk-1[k, k]) la fila y la columna k no varan en el
paso k, luego slo necesitamos una matriz D.
43