Sie sind auf Seite 1von 13

UNIVERSIDAD TECNOLOGICA DEL SUR

INVESTIGACION DE OPERACIONES II LA RUTA MAS CORTA LIC.RAFAEL GONZALEZ FREITES

2.4 Problema de la ruta ms corta El problema de la ruta ms corta tiene que ver con la determinacin de las ramas conectadas en una red de transporte que constituyen, en conjunto la distancia ms corta entre una fuente y un destino. Existen dos algoritmos para encontrar la ruta ms corta en redes acclicas y cclicas. Se dice que una red es acclica si no contiene lazos; de otra manera, es cclica. Los algoritmos Acclicos son usados en redes que no tienen ciclos, es decir que no tienen rutas que partiendo de un nodo lo lleven a l mismo de nuevo. Los ciclos son tambin llamados "lazos". Los algoritmos cclicos son para las redes que tienen ciclos o lazos... o en espaol vueltas en redondo. Un ejemplo de un lazo: Si del nodo "A" puedo ir al nodo "B", y del nodo "B" puedo ir al "C" y del "C" al "D" y del "D" puedo retornar al "A" de nuevo, ah hay un lazo o un ciclo. Las flechas indican en que sentido esta permitido el movimiento. Algoritmo Acclico: Si la red no tiene ciclos, apliquemos el siguiente algoritmo: Etiquetar cada nodo con el siguiente formato [distancia desde el nodo inicial, Nombre del Nodo Precedente]. Para el nodo inicial por definicin la distancia es cero (la distancia a s mismo), y el nodo precedente es vaco (ninguno): [0 , ] . Despus para cada nodo, se analiza los nodos que lo preceden por las flechas, se escoge aquel cuya distancia al nodo inicial ms la distancia al nodo presente sea mnima. Se etiqueta con la suma, y el nombre del nodo escogido... bueno, esto en carreta es muy enredador... mejor con un ejemplo, paso a paso.

Los nodos pueden representan sitios (p.e ciudades, facilidades, etc) las flechas (tambin llamadas Arcos) indican las trayectorias permitidas y sobre ellas estn las distancias (pero tambin puede representar el costo de desplazamiento, o el nivel de riesgo, o un producto de ambos). Encontremos la distancia ms corta entre el nodo "A" y el nodo "G".

1. Rotular el Nodo Inicial: Recordemos el formato del rtulo es : [distancia al primer nodo, nodo precedente]. La distancia al primer nodo, es la distancia a s mismo en ste caso, por lo tanto es cero. El nodo precedente: como no viene de ningn nodo, lo rotulamos vacio: [ 0, ] :

2. Rotular todos los nodos que dependan unicamente del nodo inicial: A el Nodo B se puede llegar desde el Nodo A, con la ruta A-C-B o con la ruta A-D-C-B. Asi que depende de otros nodos a parte del Nodo inicial. Lo mismo podemos decir del Nodo C. Pero... ... Pero al Nodo D slo se puede llegar directamente desde el Nodo A. Este es el nodo que vamos a rotular, y si hubieran ms como l tambin los rotulariamos, pero en este ejemplo slo tenemos el D. El rtulo del Nodo D, es : [distancia mnima desde el Nodo Inicial, Nodo Precedente]. La distancia mnima desde el Nodo Inicial al Nodo D es 15: pos no hay otra alternativa, che! y el Nodo Precedente el "A". Rtulo: [15, "A"]

3. Rotular Todos los Nodos que tengan la informacin suficiente para rotularlos: La informacin necesaria para rotular un Nodo con este algoritmo, es que todos los Nodos de los que dependa, deben estar ya rotulados. Por ejemplo el Nodo B: depende del A y del C. El Nodo A ya esta rotulado, pero el C an no. As que an no se puede

rotular el Nodo B. El Nodo C depende del A y del D, y ambos estan rotulados, as que si podemos rotularlo. La distancia desde A es 8, y desde D es: la distancia que tiene en el rtulo (que es la distancia mnima desde l al Nodo inicial, o sea 15), MAS la distancia entre D y C = 15 +4 = 19: entre 8 y 19 es ms pequeo 8. As que escogemos el Nodo A como precedente: el rtulo es [ 8 , "A"]

4. Seguir rotulando todos los Nodos que tengan informacin suficiente hasta llegar al Nodo deseado: G. Ahora ya hay informacin suficiente para rotular los Nodos B y F. Entonces rotulemos el Nodo B (no importa cul se haga primero, igual hay que rotularlos todos). El rotulo para el Nodo B: La distancia desde A es 10, la distancia mnima al Nodo inicial desde C es: el la distancia del rtulo de C: 8 + la distancia de C a B : 3 => 8 + 3 = 11. El mnimo entre 10 y 11 es 10. Rtulo= [10, "A"].

Rtulo para el F: Desde C : 8 + 4 = 12 y desde D : 15 + 15 = 30. Entonces el Rtulo es [12, "C" ]

Rtulo para el Nodo E: Desde B : 10 + 20 = 30 y desde C: 8 + 15 = 23 Rtulo : [23,"C"]

Por ltimo para el Nodo G: la distancia desde E es 23 + 5 = 28 y desde F es 12 + 3 = 15 Rtulo [15, F]

Ahora se puede leer la trayectoria mnima partiendo del rtulo del Nodo G, dicho rotulo nos dice que viene del F el de F dice que viene del C y el del C dice que viene del A. Solucin: Distancia Mnima= 15 Ruta Ms Corta = A-C-F-G

Algoritmo cclico: La diferencia principal del algoritmo acclico y el cclico es que el cclico permite trabajar con lazos mientras el algoritmo acclico no lo permite. Por lo tanto el algoritmo cclico es mucho ms general. El algoritmo cclico difiere del algoritmo acclico en el sentido que permite tantas oportunidades como sean necesarias para reevaluar un nodo. Cuando resulta evidente que se ha alcanzado la distancia ms corta a un nodo, ste se excluye de cualquier consideracin posterior. El proceso termina cuando se ha evaluado el nodo destino La idea principal del algoritmo cclico es muy parecida al del acclico; pero en este se trabaja con dos tipos de etiquetas: Etiquetas Temporales y Etiquetas Permanentes. El formato de la etiqueta es el mismo: [distancia mnima encontrada al nodo inicial, Nombre del Nodo Precedente]. El algoritmo cclico es tambin conocido como algoritmo de Dijkstra. El Algoritmo se describe as: Rotular todos los nodos a los que se puede llegar desde el nodo inicial con etiquetas temporales, la etiqueta que se les pondr ser [distancia desde el nodo inicial, Nombre del Nodo Inicial]. Aqu no nos va a importar que estos nodos tengan caminos desde otros nodos diferentes al nodo inicial, a diferencia del algoritmo anterior. Sencillamente se rotulan como se describi. Evaluar de todas los nodos con etiquetas temporales, cual posee la distancia ms corta en la etiqueta. Marcarlo como Etiqueta Permanente (para esto puede usar un asterisco). Etiquetar todos los nodos a los que se pueda llegar desde el ltimo nodo con etiqueta permanente, si ya tienen una etiqueta temporal, esta se reevala con respecto a la distancia del nodo permanente con que se est trabajando. Si la distancia que da (o sea la distancia de la etiqueta permanente + la distancia al nodo evaluado ) es menor que la que tiene en la etiqueta sta es cambiada por una nueva etiqueta con la distancia calculada a la de la etiqueta permanente. Se chequean todas las etiquetas temporales existentes, la que tenga la distancia ms pequea se marca como etiqueta permanente y se repite el paso anterior hasta que todas las etiquetas sean permanentes. Ejemplo: Supongamos que existen 7 ciudades interconectadas (o sitios cualquiera: barrios en una ciudad, departamentos en una fabrica, etc.), cada lnea representa la trayectoria

permitida de una ciudad a otra. Las distancias (o costo de transporte) entre ciudades est representado por un valor sobre la lnea. Se pregunta por la secuencia de ciudades que dan la distancia mnima entre la ciudad A y la ciudad G.

Etiquetar todos los nodos a donde pueda llegar desde el nodo inicial: Es decir los nodos B, C y D. Etiqueta para el nodo B: Es distancia desde el nodo que viene = 4, nombre del nodo que viene = "A" Etiqueta= [4,"A"] , de manera anloga para el nodo C = [5, "A"] y el nodo D = [3, "A"]

2. Evaluar cual de todas las etiquetas temporales, tiene la mnima distancia para que sea convertida en etiqueta permanente. Marquemos como etiqueta permanente, con un asterisco. En nuestro caso hay tres etiquetas temporales, [4,"A"], [5,"A"] y [3,"A"]. La que tiene la menor distancia es [3,"A"] en el nodo D. La convertimos en etiqueta permanente.

3. Ahora, con base en la ultima etiqueta permanente (la del nodo D por supuesto), se etiquetan todos los nodos a los que se pueda llegar desde el Nodo D (el de la ltima etiqueta permanente). En nuestro caso, son los Nodos C y F. La etiqueta para el Nodo F es [3+7=10, "D"], es decir [10, D], para el Nodo C, se puede colocar la etiqueta [3+2, "D"] = [ 5 ,"D"]. Da igual dejar la etiqueta actual, que tiene una distancia de 5, que cambiarla por esta ltima. Como se dice por ac: "nos resbala", as que dejemos la que tiene actualmente.

4. De nuevo se evala de todas las etiquetas temporales, cual es la que tiene la distancia ms pequea:[4,"A"], [5,"A"] y [10,"A"]. El nodo B que tiene la etiqueta temporal con la distancia ms pequea, se pasa a tener una etiqueta permanente.

5. Etiquetar todos los nodos a los que se puede llegar desde el nodo con la ltima etiqueta permanente, es decir el B. Estos nodos son el C y el E. La etiqueta probable para el nodo C sera [4+3, "B"]= [7,"B"], pero como ya tiene una etiqueta temporal de [5,"A"], que tiene una distancia menor, pues ni soamos con cambiarla!!! Dejmosla quietecita y miremos el Nodo E. La etiqueta para el Nodo E es [4+6, "B"] = [10, "B"]

6. Evaluar de todas las etiquetas temporales, cual es la que tiene la distancia ms corta: [10,"B"], [5,"A"] y [10,"D"]. La de menor distancia es la [5,"A"]. La marcamos como etiqueta permanente. Ahora etiquetar todos los nodos a los que se puede llegar desde el Nodo C y que no tengan ya, una etiqueta permanente. Estamos hablando del Nodo E, F y G. Para el Nodo E la etiqueta sera [5+4,"C"] =[9,"C"], que nos da una distancia menor que la que tiene ([10,"B"]). Por lo tanto la cambiamos. Para el Nodo F nos da [5+5,"C"]=[10,"C"], como ya tiene una etiqueta con 10, nos es indiferente y no la cambiamos. Para el Nodo G la etiqueta es [5+25, "C"]=[30,"C"].

7. Evaluar cual de las etiquetas temporales tiene la distancia ms corta: [9,"C"], [10, "D"] y [30,"C"]. Gana el nodo E. Lo marcamos como etiqueta permanente y desde l evaluamos para rotular a todos los nodos a los que pueda llegar, con etiquetas temporales: F y G. Para el Nodo F, lo dejamos como esta por que la distancia nos da 9+6 = 15 que es mayor que el que tiene actualmente 10, pero para el Nodo G el rotulo es [9+7,"E"] = [16, "E"]. Quedan como rtulos temporales el del nodo F y G. El menor es el del Nodo F, se marca como permanente... no hay ms rtulos temporales excepto el del Nodo G y el Nodo G quedara como [10+8, "G"]=[18,"G"] que es mayor que el que ya tiene, as que mejor dejmoslo quietico y por ltimo marqumoslo como etiqueta permanente.

Das könnte Ihnen auch gefallen