Documentos de Académico
Documentos de Profesional
Documentos de Cultura
la Ruta ms corta
M. En C. Eduardo Bustos Faras
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
1.
2.
Algoritmo de la ruta ms
corta
1.
2.
3.
4.
EJEMPLO 1
Ruta ms corta
10
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
291
10
Butte
Boise
4
602
5
Sac.
599
Tucson
18
314
19
El Paso
Seattle
497
3
432
Portland
Butte
599
Boise
4
345
Solucin
SolucinOptima
Optimapor
porWINQSB
WINQSB
+ 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
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
19
SOLUCIN
20
Mtodo tabular
21
22
23
EJEMPLO 3
RUTA MS CORTA
24
PRECIO DE MANTEN.
ANUAL
2000
4000
5000
9000
12000
0
1
2
3
4
7000
6000
2000
1000
50
26
SOLUCIN
27
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
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
Algoritmo de Dijkstra
var
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
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
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
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