modelos de redes: problemas de la ruta más corta · problemas de la ruta más corta se trata de...

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

Upload: others

Post on 14-Mar-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modelos de Redes: Problemas de la Ruta más corta · 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

Modelos de Redes: Problemas de Modelos de Redes: Problemas de la Ruta mla Ruta máás cortas corta

M. En C. Eduardo Bustos FarM. En C. Eduardo Bustos Farííasas

Page 2: Modelos de Redes: Problemas de la Ruta más corta · 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

2

Problemas de la Ruta mProblemas de la Ruta máás cortas corta

Page 3: Modelos de Redes: Problemas de la Ruta más corta · 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

Problemas de la Ruta mProblemas de la Ruta máás cortas cortaSe 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.

DefiniciDefinicióón del Probleman 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 bibi--direccionales conectan los nodos i y j con distancias direccionales conectan los nodos i y j con distancias mayores que cero, mayores que cero, ddijij

-- Se desea encontrar la ruta de mSe 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.

Page 4: Modelos de Redes: Problemas de la Ruta más corta · 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

4

EJEMPLO:EJEMPLO:RuteoRuteo en Redes de Datosen 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 nodosdeterminados nodos origen a otros nodosdestino. destino. La forma mLa forma máás coms 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 formulacibasa en la formulacióónnde la ruta mde la ruta máás corta. s corta. En particular a cada enlace de comunicaciEn 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 comover como su longitud.su longitud.

Page 5: Modelos de Redes: Problemas de la Ruta más corta · 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

5

Un algoritmo de Un algoritmo de ruteoruteo de trayectoria mde trayectoria máás s corta, corta, rutearutea cada paquete a lo largo de la cada paquete a lo largo de la trayectoria de longitud mtrayectoria de longitud míínimanima(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. Aqulongitud de los enlaces. Aquíí describimos describimos solamente dos:solamente dos:La forma mLa 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 mtrayectoria máás corta es simplemente una s corta es simplemente una trayectoria con el menor ntrayectoria con el menor núúmero de enlaces.mero de enlaces.

Page 6: Modelos de Redes: Problemas de la Ruta más corta · 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

6

De una manera mDe 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 transmisitransmisióón y su n y su carga de trcarga de trááfico.fico.La situaciLa situacióón es encontrar la trayectoria mn es encontrar la trayectoria máás corta. s corta. Esperamos que dicha trayectoria contenga pocos Esperamos que dicha trayectoria contenga pocos enlaces noenlaces nocongestionados; 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 ruteoruteo especializados que tambiespecializados 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 tren 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 ruteoruteo se debe se debe adaptar a sobrecargas temporales y adaptar a sobrecargas temporales y rutearrutear paquetes paquetes alrededor de nodos congestionados.alrededor de nodos congestionados. Dentro de este Dentro de este contexto, el algoritmo de ruta mcontexto, el algoritmo de ruta máás corta para s corta para ruteoruteoopera opera contcontíínuamentenuamente, determinando la, determinando latrayectoria mtrayectoria máás corta con longitudes que vars corta con longitudes que varíían en el an en el tiempo.tiempo.

Page 7: Modelos de Redes: Problemas de la Ruta más corta · 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

7

Una caracterUna caracteríística peculiar de los algoritmos stica peculiar de los algoritmos de de ruteoruteo de de trayecoriatrayecoria mmáás corta es que con s corta es que con frecuencia utilizanfrecuencia utilizancomunicacicomunicacióón y computacin y computacióón asn asííncrona y ncrona y distribuida. En particular, cada nodo de la red distribuida. En particular, cada nodo de la red de comunicacide 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 mcalcula 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 asestimados, y asíí sucesivamente.sucesivamente.

Page 8: Modelos de Redes: Problemas de la Ruta más corta · 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

8

Algoritmos de Algoritmos de DijkstraDijkstra Para Ruta Para Ruta MMáás Cortas Corta

Estos son algoritmos de etiquetado, los cuales, Estos son algoritmos de etiquetado, los cuales, en ten téérminos generales, encuentran la ruta mrminos generales, encuentran la ruta máás s corta entre dos nodos, corta entre dos nodos, incialincial aa 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 nnúú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 wijwij que que representa la distancia del representa la distancia del enclaceenclace ((ii, , jj).). Los Los algoritmos de algoritmos de DijkstraDijkstra renumeran los nodos, renumeran los nodos, de manera que cuando el nodo de manera que cuando el nodo zz tiene una tiene una etiqueta permanente, se ha obtenido la etiqueta permanente, se ha obtenido la solucisolucióón final.n final.

Page 9: Modelos de Redes: Problemas de la Ruta más corta · 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

9

Algoritmo de la ruta mAlgoritmo de la ruta máás s cortacorta

1.1. Objetivos para nObjetivos para n--éésimasima interacciinteraccióón: Encontrar el nn: Encontrar el n--éésimosimonodo mnodo máás cercano al origen. (Este paso se repetirs cercano al origen. (Este paso se repetiráá para n = para n = 1,2,1,2,……, hasta que el n, hasta que el n--éésimosimo nodo mnodo máás cercano sea el nodo s cercano sea el nodo destino).destino).

2.2. Datos para la nDatos para la n--éésimasima interacciinteraccióón: nn: n--1 nodos m1 nodos máás cercanos s cercanos al origen (encontrados en las interacciones previas), al origen (encontrados en las interacciones previas), incluyendo su ruta mincluyendo 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 nCandidatos para el n--éésimosimo nodo mnodo 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 mcon 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 mmáás corta. (Los empates proporcionan candidatos s corta. (Los empates proporcionan candidatos adicionales).adicionales).

4.4. CCáálculo del nlculo del n--éésimosimo nodo mnodo 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 mla 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 mresuelto. El candidato con la distancia total máás peques pequeñña es a es el nel n--éésimosimo nodo mnodo máás cercano (los empates proporcionan s cercano (los empates proporcionan nodos resueltos adicionales y su ruta mnodos resueltos adicionales y su ruta máás corta es la que s corta es la que genera esa distancia).genera esa distancia).

Page 10: Modelos de Redes: Problemas de la Ruta más corta · 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

10

EJEMPLO 1EJEMPLO 1

Ruta mRuta máás cortas corta

Page 11: Modelos de Redes: Problemas de la Ruta más corta · 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

LineasLineas FairwayFairway VanVan

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.

Page 12: Modelos de Redes: Problemas de la Ruta más corta · 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

Salt Lake City

1 2

3 4

56

7 8

910

11

1213 14

15

1617 18 19

El Paso

Seattle

Boise

Portland

Butte

Cheyenne

Reno

Sac.

Bakersfield

Las VegasDenver

Albuque.

KingmanBarstow

Los Angeles

San Diego Tucson

Phoenix

599

691497180

432 345440

102

452

621

420

526

138

291280

432

108

469207

155114

386403118

425 314

602

Page 13: Modelos de Redes: Problemas de la Ruta más corta · 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

SoluciSolucióón n -- AnalogAnalogíía de un problema de programacia de un problema de programacióón n lineallineal

-- Variables de decisiVariables de decisióónn

XXijij = 1 si un transporte debe viajar por la = 1 si un transporte debe viajar por la carretracarretra que une que une la ciudad i con la ciudad j.la ciudad i con la ciudad j.00 En cualquier otro casoEn cualquier otro caso

Objetivo = Minimizar Objetivo = Minimizar ΣΣ ddijijXXijij

Page 14: Modelos de Redes: Problemas de la Ruta más corta · 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

7

2

Salt Lake City

1

3 4

Seattle

Boise

Portland

599

497180

432 345

Butte

[El numero de carreteras para salir de Seattle (Nodo de inicio)] = 1X12 + X13 + X14 = 1

De una forma similar:[El número de carreteras para llegar a El Paso (Nodo final)] = 1X12,19 + X16,19 + X18,19 = 1

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

Sujeto a las siguientes restricciones

Restricciones mayores que cero

Page 15: Modelos de Redes: Problemas de la Ruta más corta · 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

Solución Optima por WINQSB Solución Optima por WINQSB

Page 16: Modelos de Redes: Problemas de la Ruta más corta · 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

SoluciSolucióónn--AnalogAnalogíía con un problema de redesa con un problema de redes

El algoritmo de El algoritmo de DijkstraDijkstra’’ss::--Encontrara la distancia mEncontrara 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 encuentranaencuentrana los nodos con respecto los nodos con respecto al nodo de inicio.al nodo de inicio.

-- Este algoritmo encuentra la ruta mEste 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.

Page 17: Modelos de Redes: Problemas de la Ruta más corta · 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

SEA.SEA.Salt Lake City

1 2

3 4

56

7 8

9

1011

1213 14

15

1617 18 19

El Paso

Seattle

Boise

Portland

Butte

Cheyene

Reno

Sac.

Bakersfield

Las VegasDenver

Albuque.

KingmanBarstow

Los Angeles

San Diego Tucson

Pheonix

599

691497180

432 345

440

102

452

621

420

526

138

291

280

432

108

469207

155114

386403

118

425 314

BUT599

POR

180

497BOI

599

180

497POR.POR.

BOI432

SAC602

+

+

=

=

612

782

BOI

BOIBOI.BOI.

345SLC+ =

842

BUT.BUT.SLC

420

CHY.691

+

+

=

=

1119

1290

SLC.

SLCSLC.

SAC.SAC.

Una representación del algoritmo de Dijkstra’s

… Y de esta manera hasta cubrir toda la red..

Page 18: Modelos de Redes: Problemas de la Ruta más corta · 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

18

EJEMPLO 2EJEMPLO 2

Ruta mRuta máás cortas corta

Page 19: Modelos de Redes: Problemas de la Ruta más corta · 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

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 mLos administradores desean conocer la distancia máás corta s corta a cada uno de ellos, asa cada uno de ellos, asíí como las distancias (como las distancias (KmKm))

Page 20: Modelos de Redes: Problemas de la Ruta más corta · 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

20

SOLUCISOLUCIÓÓNN

Page 21: Modelos de Redes: Problemas de la Ruta más corta · 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

21

MMéétodo tabulartodo tabular

Page 22: Modelos de Redes: Problemas de la Ruta más corta · 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

22

Page 23: Modelos de Redes: Problemas de la Ruta más corta · 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

23

Page 24: Modelos de Redes: Problemas de la Ruta más corta · 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

24

EJEMPLO 3EJEMPLO 3

RUTA MRUTA MÁÁS CORTAS CORTA

Page 25: Modelos de Redes: Problemas de la Ruta más corta · 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

25

El costo de un automEl costo de un automóóvil cuesta 12,000 vil cuesta 12,000 ddóólares, el costo de mantenimiento depende lares, el costo de mantenimiento depende de la edad del auto al inicio del ade 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 preocupaciLa preocupacióón es minimizar el costo neto n es minimizar el costo neto incurrido en los princurrido en los próóximos 5 aximos 5 añños.os.

Page 26: Modelos de Redes: Problemas de la Ruta más corta · 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

26

PRECIO DE MANTEN. ANUAL EDAD DEL AUTO PRECIO DEL AUTO POR

COTA INICIAL

2000 0 70004000 1 60005000 2 20009000 3 100012000 4 50

Page 27: Modelos de Redes: Problemas de la Ruta más corta · 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

27

SOLUCISOLUCIÓÓNN

Page 28: Modelos de Redes: Problemas de la Ruta más corta · 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

28

La red tendrLa 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 acorresponde al inicio del añño i; para i < jo i; para i < jEl arco (i, j) corresponde a la compra del auto nuevo El arco (i, j) corresponde a la compra del auto nuevo al inicio del aal inicio del añño i y conservarlo hasta el inicio del ao 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 CiCi, j es el costo , j es el costo neto total incurrido por ser el dueneto total incurrido por ser el dueñño y tener el auto o y tener el auto desde el inicio del adesde el inicio del añño i hasta el principio del ao i hasta el principio del añño j, si o j, si se compra un auto nuevo al inicio del ase compra un auto nuevo al inicio del añño i y se da o i y se da como adelanto al inicio del acomo adelanto al inicio del añño jo j

Page 29: Modelos de Redes: Problemas de la Ruta más corta · 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

29

Page 30: Modelos de Redes: Problemas de la Ruta más corta · 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

30

En miles de pesos:En miles de pesos:C12C12 == 22 ++ 1212 –– 77 = 7 = 7 C13C13 == 22 ++ 44 ++ 66 = 12 = 12 C14C14 == 22 ++ 44 ++ 55 ++

1212 –– 22 = 21 = 21 C15C15 =2 + 4=2 + 4 + 5+ 5 ++ 99 ++ 1212 –– 1 = 31 1 = 31 C16C16 =2+=2+ 44 +5+5 +9+9 ++ 1212 + 12 = 44 + 12 = 44 C23C23 == 22 ++ 1212 –– 77 == 7 7 C24C24 == 22 ++ 44 ++ 1212 –– 66

== 1212C25C25 =2+=2+ 4+4+ 55 ++ 1212–– 22 = 21= 21C26C26 =2=2 ++ 44 +5+5 +9+9 +12+12 –– 1 = 311 = 31

Page 31: Modelos de Redes: Problemas de la Ruta más corta · 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

31

Page 32: Modelos de Redes: Problemas de la Ruta más corta · 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

32

Ejemplo 4Ejemplo 4

Ruta mRuta máás cortas corta

Page 33: Modelos de Redes: Problemas de la Ruta más corta · 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

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 aañños (2001 os (2001 –– 2005) se toma la decisi2005) se toma la decisióón al n al principio de cada aprincipio 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 mcomo míínimo un animo un añño, pero se debe o, pero se debe remplazarlo despuremplazarlo despuéés de 3 as de 3 añños. os. El cuadro siguiente represente el costo de El cuadro siguiente represente el costo de reemplazo como funcireemplazo como funcióón del an del añño que se o que se adquiere el auto y el nadquiere el auto y el núúmero de amero de añños en os en operacioperacióón. n.

Page 34: Modelos de Redes: Problemas de la Ruta más corta · 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

34

AÑO EN EL QUE SE

ADQUIERE

COSTO DE REEMPLAZO POR UNIDAD MONETARIO POR DETERMINADOS AÑOS DE OPERACIÓN

20001 1 2 3

20002 4000 5400 9800

20003 4300 6200 8700

20004 4800 7100 -----

20005 4900 ----- -----

Page 35: Modelos de Redes: Problemas de la Ruta más corta · 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

35

SOLUCISOLUCIÓÓNN

Page 36: Modelos de Redes: Problemas de la Ruta más corta · 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

36

Page 37: Modelos de Redes: Problemas de la Ruta más corta · 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

37

Algoritmo de Algoritmo de DijkstraDijkstracon teorcon teoríía de grafosa de grafos

ANEXOANEXO

Page 38: Modelos de Redes: Problemas de la Ruta más corta · 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

38

Problemas de caminos mProblemas de caminos míínimos.nimos.DefiniciDefinicióó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 ww11, w, w22, ..., , ..., wwqq en G, el en G, el costo del caminocosto del camino serseráá la suma de los la suma de los costos asociados a las aristas (wcostos asociados a las aristas (w11, w, w22), ..., (), ..., (wwqq--11, , wwqq).).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 mProblema de los caminos máás cortos por un origen:s cortos por un origen:Encontrar los caminos mEncontrar los caminos máás cortos entre un nodo origen dado y todos los s cortos entre un nodo origen dado y todos los demdemáás nodos.s nodos.

Algoritmo de DijkstraAlgoritmo de DijkstraSupongamos 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 escogidosS: conjunto de nodos escogidos, para los cuales se conoce el camino de , para los cuales se conoce el camino de

distancia mdistancia míínima al origen.nima al origen.–– C: conjunto de nodos candidatosC: conjunto de nodos candidatos, pendientes de calcular el camino , pendientes de calcular el camino

mmíínimo. Conocemos los caminos mnimo. 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 distanEn cada paso coger del conjunto de candidatos el nodo con distancia cia mmíínima al origen. Recalcular los caminos de los demnima al origen. Recalcular los caminos de los demáás candidatos pasando s candidatos pasando por el nodo cogido.por el nodo cogido.

Page 39: Modelos de Redes: Problemas de la Ruta más corta · 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

39

Problemas de caminos mProblemas de caminos míínimos.nimos.Algoritmo de DijkstraAlgoritmo de Dijkstra

Un Un camino especialcamino especial del origen a otro nodo cualquiera es un camino del origen a otro nodo cualquiera es un camino que sque 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 arrayarray D[2, ..., N]D[2, ..., N] se guarda la longitud del camino especial mse guarda la longitud del camino especial máás s corto a cada vcorto a cada véértice. Cuando todos los nodos estrtice. Cuando todos los nodos estéén en S, todos los n en S, todos los caminos son especiales y D contiene las distancias mcaminos son especiales y D contiene las distancias míínimas al origen.nimas al origen.En otro En otro arrayarray 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 contendrInicialmente 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 serseráá ∞∞. . P contendrP contendráá el valor 1 (el camino es directo). S contendrel valor 1 (el camino es directo). S contendráá ssóólo el nodo 1.lo el nodo 1.Buscar el nodo v de C=VBuscar el nodo v de C=V--S con mS con míínimo valor de D. Animo 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 mresto de nodos comprobar si el camino al origen es máás corto pasando s corto pasando por el nodo v.por el nodo v.

ifif D[v]+C[v, w] < D[w] D[v]+C[v, w] < D[w] thenthen beginbeginD[w]:= D[v] + C[v, w];D[w]:= D[v] + C[v, w];P[w]:= v;P[w]:= v;

endend;;

Page 40: Modelos de Redes: Problemas de la Ruta más corta · 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

40

Problemas de caminos mProblemas de caminos míínimos.nimos.Algoritmo de Algoritmo de DijkstraDijkstra

procedureprocedure Dijkstra;Dijkstra;varvar

i: i: integerinteger;;beginbegin

forfor i:= 2 i:= 2 toto N do N do beginbeginS[i]:= S[i]:= falsefalse;;D[i]:= C[1, i];D[i]:= C[1, i];P[i]:= 1;P[i]:= 1;

endend;;forfor i:= 1 i:= 1 toto NN--1 do 1 do beginbegin

v:= vv:= véértice con D[v] mrtice con D[v] míínimo y S[v]=nimo y S[v]=falsefalse;;S[v]:= S[v]:= truetrue;;forfor cada nodo w adyacente a v docada nodo w adyacente a v do

ifif S[w]=S[w]=falsefalse thenthenifif D[v]+C[v, w]<D[w] D[v]+C[v, w]<D[w] thenthen beginbegin

D[w]:= D[v]+C[v, w];D[w]:= D[v]+C[v, w];P[w]:= v;P[w]:= v;

endend;;endend;;

endend;;

varvarS: S: arrayarray [2..N] [2..N] ofof booleanboolean;;

{ Nodos conocidos }{ Nodos conocidos }D: D: arrayarray [2..N] [2..N] ofof integerinteger;;

{ Costos de los caminos }{ Costos de los caminos }P: P: arrayarray [2..N] [2..N] ofof integerinteger;;

{ Camino de 1 a v }{ Camino de 1 a v }C: C: arrayarray [1..N, 1..N] [1..N, 1..N] ofof integerinteger;;

{ Matriz de costos de todas{ Matriz de costos de todaslas aristas }las aristas }

procedureprocedure ImprimeCaminoImprimeCamino (v: (v: integerinteger););

beginbeginifif v<>1 v<>1 thenthen

ImprimirCamino(P[vImprimirCamino(P[v]);]);write(vwrite(v););

endend;;

Page 41: Modelos de Redes: Problemas de la Ruta más corta · 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

41

Problemas de caminos mProblemas de caminos míínimos.nimos.Algoritmo de DijkstraAlgoritmo de Dijkstra

Ejemplo:Ejemplo: Mostrar la ejecuciMostrar 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

143

2

6

102

5

7

48

1

Nodo S D P S D P S D P S D P S D P2 F 2 1 F 2 1 T 2 1 T 2 1 T 2 13 F ∞ 1 F 3 4 F 3 4 T 3 4 T 3 44 F 1 1 T 1 1 T 1 1 T 1 1 ..... T 1 15 F ∞ 1 F 3 4 F 3 4 F 3 4 T 3 46 F ∞ 1 F 9 4 F 9 4 F 8 3 T 6 77 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

Page 42: Modelos de Redes: Problemas de la Ruta más corta · 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

42

Problemas de caminos mProblemas de caminos míínimos.nimos.Algoritmo de DijkstraAlgoritmo de Dijkstra

Orden de complejidadOrden de complejidad del algoritmo, con matrices de adyacencia:del algoritmo, con matrices de adyacencia:–– InicializaciInicializacióón: O(n).n: O(n).–– Ejecutar nEjecutar n--1 veces:1 veces:

Buscar el elemento con D[v] mBuscar 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(nEn total tenemos O(n22).).Con listas de adyacencia:Con listas de adyacencia:–– InicializaciInicializacióón: O(n).n: O(n).–– La actualizaciLa 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 actualizacia v. En total la actualizacióón se hace O(a) veces.n se hace O(a) veces.–– La bLa 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 serorden total seríía O(na O(n22).).–– Podemos usar una estructura ordenada para guardar los nodos candPodemos usar una estructura ordenada para guardar los nodos candidatos idatos

(por ejemplo un (por ejemplo un áárbol binario). La brbol binario). La búúsqueda requiere squeda requiere O(logO(log n) en cada n) en cada paso, en total O(n*paso, en total O(n*loglog n). Ademn). Ademáás, en la actualizacis, en la actualizacióón un nodo podrn un nodo podríía a cambiar de posicicambiar de posicióón en el n en el áárbol, luego requiere O(a*rbol, luego requiere O(a*loglog n).n).

–– En total, requiere O((a+n)*En total, requiere O((a+n)*loglog n). Si el grafo es conexo: O(a*n). Si el grafo es conexo: O(a*loglog n).n).–– Esta modificaciEsta modificacióón sern seráá adecuada cuando a<<nadecuada cuando a<<n22..

Page 43: Modelos de Redes: Problemas de la Ruta más corta · 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

43

Problemas de caminos mProblemas de caminos míínimos.nimos.

Problema de los caminos mProblema de los caminos máás cortos entre cualquier par de nodos:s cortos entre cualquier par de nodos:Encontrar los caminos mEncontrar los caminos míínimos entre cualquier par de nodos.nimos entre cualquier par de nodos.

Posible soluciPosible solucióón:n:Aplicar el algoritmo de Dijkstra N veces.Aplicar el algoritmo de Dijkstra N veces.Podemos obtener la soluciPodemos obtener la solucióón en O(nn en O(n33) ) óó O((a+n)*n*O((a+n)*n*loglog n).n).

Algoritmo de Algoritmo de FloydFloydUtiliza una matriz de adyacencia D[v, w], que serUtiliza una matriz de adyacencia D[v, w], que seráá la matriz de costos.la matriz de costos.Inicialmente D[v, w] contendrInicialmente 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 posiciEn cada paso k, en la posicióón D[v, w] estarn 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 almacenarAl final del algoritmo, D almacenaráá los costos de los caminos mlos costos de los caminos míínimos.nimos.En el paso k, el nodo k actEn 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 mes máás corto pasando por k.s corto pasando por k.–– DDkk[i[i, j]= , j]= minmin ((DDkk--11[i, j], [i, j], DDkk--11[i, k] + [i, k] + DDkk--11[k, j]), para todo i[k, j]), para todo i≠≠j.j.–– DDkk[i[i, k]= , k]= minmin ((DDkk--11[i, k], [i, k], DDkk--11[i, k] + [i, k] + DDkk--11[k, k]) [k, k]) ⇒⇒ la fila y la columna k no varla fila y la columna k no varíían en el an en el

paso k, luego spaso k, luego sóólo necesitamos una matriz D.lo necesitamos una matriz D.