Subido por calvarezv

Modelo Redes La Ruta Más Corta

Anuncio
Modelos de Redes: Problemas de
la Ruta más corta
M. En C. Eduardo Bustos Farías
Problemas de la Ruta más corta
2
Problemas de la Ruta más 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.
Definición 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 mínima 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 más común para seleccionar la
trayectoria (o ruta) de dichos paquetes, se
basa
en
la
formulación
de la ruta más corta.
En particular a cada enlace de comunicación se
le asigna un escalar positivo el cual se puede
ver como su longitud.
4
„
„
„
Un algoritmo de ruteo de trayectoria más
corta, rutea cada paquete a lo largo de la
trayectoria
de
longitud
mínima
(ruta más 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 más simple es que cada enlace tenga
una longitud unitaria, en cuyo caso, la
trayectoria más corta es simplemente una
trayectoria con el menor número de enlaces.
5
„
„
De una manera más general, la longitud de un enlace
puede depender de su capacidad de transmisión y su
carga de tráfico.
La situación es encontrar la trayectoria más 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 también
pueden permitir que la longitud de cada enlace cambie
en el tiempo, dependiendo del nivel de tráfico 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 más corta para ruteo
opera
contínuamente,
determinando
la
trayectoria más corta con longitudes que varían en el
tiempo.
6
„
1.
2.
Una característica peculiar de los algoritmos
de ruteo de trayecoria más corta es que con
frecuencia
utilizan
comunicación y computación asíncrona y
distribuida. En particular, cada nodo de la red
de comunicación:
monitorea las condiciones de trafico de sus
enlaces adyacentes,
calcula estimados de sus distancias más 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
Más Corta
„
„
Estos son algoritmos de etiquetado, los cuales,
en términos generales, encuentran la ruta más
corta entre dos nodos, incial a y final z, de la
siguiente manera:
Los nodos de la red son etiquetados con
números. 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
solución final.
8
Algoritmo de la ruta más
corta
1.
2.
3.
4.
Objetivos para n-ésima interacción: Encontrar el n-ésimo
nodo más cercano al origen. (Este paso se repetirá para n =
1,2,…, hasta que el n-ésimo nodo más cercano sea el nodo
destino).
Datos para la n-ésima interacción: n-1 nodos más cercanos
al origen (encontrados en las interacciones previas),
incluyendo su ruta más corta y la distancia desde el origen.
(Estos nodos y el origen se llamarán nodos resueltos; el
resto son nodos no resueltos).
Candidatos para el n-ésimo nodo más cercano: Cada nodo
resuelto que ésta conectado directamente por una ligadura
con uno o más nodos no resueltos proporcionan un
candidato, y este es el nodo no resuelto que tiene la ligadura
más corta. (Los empates proporcionan candidatos
adicionales).
Cálculo del n-ésimo nodo más cercano: Para cada nodo
resuelto y sus candidatos, se suma la distancia entre ellos y
la distancia de la ruta más corta desde el origen a este nodo
resuelto. El candidato con la distancia total más pequeña es
el n-ésimo nodo más cercano (los empates proporcionan
9
nodos resueltos adicionales y su ruta más corta es la que
genera esa distancia).
EJEMPLO 1
Ruta más 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
7
526
280
Cheyenne
Salt Lake City
291
10
Butte
2
Boise
4
602
5
Sac.
599
Tucson
18
314
19
El Paso
Solución - Analogía de un problema de programación
lineal
- Variables de decisión
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
2
Boise
4
345
Salt Lake City
7
[El numero de carreteras para salir de Seattle (Nodo de inicio)] = 1
X12 + X13 + X14 = 1
De una forma similar:
[El número de carreteras para llegar a El Paso (Nodo final)] = 1
X12,19 + X16,19 + X18,19 = 1
Restricciones mayores que cero
[El número de carreteras para entrar a la cuidad] =
[El número de carreteras para salir de la ciudad].
Por ejemplo, en Boise (Ciudad 4):
X14 + X34 +X74 = X41 + X43 + X47.
Solución
SoluciónOptima
Optimapor
porWINQSB
WINQSB
Solución-Analogía con un problema de redes
El algoritmo de Dijkstra’s:
-Encontrara la distancia mínima 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 más corta desde el nodo de
inicio a todos los nodos de la red.
Una representación del algoritmo de Dijkstra’s
1119
+ 420
SLC.=
SLC
599
599
BUT.
BUT
CHY.
BOI
BOI
BOI.
Seattle
1
497
SEA.
842
345 =
+ SLC
SLC.
SLC
497
497
180
138
Butte
691
Boise
4
345
Reno
Cheyene
Salt Lake City
440
7
526
8
6
102
432
621
291
10
Bakersfield
114
+ 602 =
SACSAC.
2
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 más corta
18
Una empresa distribuidora surte a 7 supermercados con
distintas ubicaciones.
Los administradores desean conocer la distancia más corta
a cada uno de ellos, así como las distancias (Km)
19
SOLUCIÓN
20
Método tabular
21
22
„
23
EJEMPLO 3
RUTA MÁS CORTA
24
„
„
„
El costo de un automóvil cuesta 12,000
dólares, el costo de mantenimiento depende
de la edad del auto al inicio del año (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 preocupación es minimizar el costo neto
incurrido en los próximos 5 años.
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
SOLUCIÓN
27
„
„
„
La red tendría {1,2,3,4,5,6} seis nodos el nodo i
corresponde al inicio del año i; para i < j
El arco (i, j) corresponde a la compra del auto nuevo
al inicio del año i y conservarlo hasta el inicio del año
j.
La longitud del arco (i, j): llamado Ci, j es el costo
neto total incurrido por ser el dueño y tener el auto
desde el inicio del año i hasta el principio del año j, si
se compra un auto nuevo al inicio del año i y se da
como adelanto al inicio del año 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
–
6
5
4
+
+5
12–
+9
2
+12
= 21
– 1 = 31
30
31
Ejemplo 4
Ruta más corta
32
„
„
Una empresa de alquiler de carros desarrolla
un plan de reemplazo para un horizonte de 5
años (2001 – 2005) se toma la decisión al
principio de cada año si se mantiene el auto o
lo reemplaza, el auto debe estar en servicio
como mínimo un año, pero se debe
remplazarlo después de 3 años.
El cuadro siguiente represente el costo de
reemplazo como función del año que se
adquiere el auto y el número de años en
operación.
33
AÑO EN EL QUE
COSTO DE REEMPLAZO POR UNIDAD MONETARIO
SE
POR DETERMINADOS AÑOS DE OPERACIÓN
ADQUIERE
20001
1
2
3
20002
4000
5400
9800
20003
4300
6200
8700
20004
4800
7100
-----
20005
4900
-----
----34
SOLUCIÓN
35
36
Algoritmo de Dijkstra
con teoría de grafos
ANEXO
37
Problemas de caminos mínimos.
„
„
„
Definición: 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 más cortos por un origen:
Encontrar los caminos más cortos entre un nodo origen dado y todos los
demás 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 mínima al origen.
– C: conjunto de nodos candidatos, pendientes de calcular el camino
mínimo. Conocemos los caminos mínimos al origen pasando por nodos de S.
„
En cada paso coger del conjunto de candidatos el nodo con distancia
mínima al origen. Recalcular los caminos de los demás candidatos pasando
por el nodo cogido.
38
Problemas de caminos mínimos.
Algoritmo de Dijkstra
„
„
„
„
„
„
Un camino especial del origen a otro nodo cualquiera es un camino
que sólo 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 más
corto a cada vértice. Cuando todos los nodos estén en S, todos los
caminos son especiales y D contiene las distancias mínimas 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á sólo el nodo 1.
Buscar el nodo v de C=V-S con mínimo valor de D. Añadir v a S. Para el
resto de nodos comprobar si el camino al origen es más 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 mínimos.
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:= vértice con D[v] mínimo 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 mínimos.
Algoritmo de Dijkstra
„
Ejemplo: Mostrar la ejecución del algoritmo de Dijkstra sobre el
siguiente grafo dirigido.
2
1
4
1
2
3
2
5
4
6
2
3
4
5
6
7
10
3
4
8
5
Nodo
2
6
7
1
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
2
∞
1
∞
∞
∞
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 mínimos.
Algoritmo de Dijkstra
„
Orden de complejidad del algoritmo, con matrices de adyacencia:
– Inicialización: O(n).
– Ejecutar n-1 veces:
„ Buscar el elemento con D[v] mínimo y S[v] falso: O(n).
„ Actualizar los valores de los nodos candidatos: O(n).
– En total tenemos O(n2).
„
Con listas de adyacencia:
–
–
–
–
–
–
Inicialización: O(n).
La actualización de los candidatos se limita a los nodos que son adyacentes
a v. En total la actualización se hace O(a) veces.
La búsqueda del elemento sigue requiriendo O(n) pasos, por lo que el
orden total sería O(n2).
Podemos usar una estructura ordenada para guardar los nodos candidatos
(por ejemplo un árbol binario). La búsqueda requiere O(log n) en cada
paso, en total O(n*log n). Además, en la actualización un nodo podría
cambiar de posición 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 modificación será adecuada cuando a<<n2.
42
Problemas de caminos mínimos.
Problema de los caminos más cortos entre cualquier par de nodos:
Encontrar los caminos mínimos entre cualquier par de nodos.
Posible solución:
„ Aplicar el algoritmo de Dijkstra N veces.
„ Podemos obtener la solución 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 posición 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 mínimos.
En el paso k, el nodo k actúa de pivote. Calcular, para cada camino de v a w, si
es más corto pasando por k.
– Dk[i, j]= min (Dk-1[i, j], Dk-1[i, k] + Dk-1[k, j]), para todo i≠j.
– Dk[i, k]= min (Dk-1[i, k], Dk-1[i, k] + Dk-1[k, k]) ⇒ la fila y la columna k no varían en el
paso k, luego sólo necesitamos una matriz D.
43
Descargar