La Ruta más Corta (Algoritmo Acicliclo)

 
 
Un algoritmo clásico de Investigación de Operaciones es el de La Ruta más Corta, usado por ejemplo para encontrar en una serie de ciudades conectadas por carreteras, la ruta para llegar de una ciudad a otra, siguiendo una trayectoria mínima. Existen dos tipos principales de algoritmos: Cíclicos y Acíclicos. Los algoritmos Acíclicos 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 también llamados "lazos".
 
Los algoritmos cíclicos son para las redes que tienen ciclos o lazos... o en español 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 Acíclico:
 
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 definición la distancia es cero (la distancia a sí mismo), y el nodo precedente es vacío (ninguno): [0 , ] . Después para cada nodo, se analiza los nodos que lo preceden por las flechas, se escoge aquel cuya distancia al nodo inicial más la distancia al nodo presente sea mínima. 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.
 
Consideremos la siguiente red:
 
 
Los nodos pueden representan sitios (p.e ciudades, facilidades, etc) las flechas (también llamadas Arcos) indican las trayectorias permitidas y sobre ellas están las distancias (pero también puede representar el costo de desplazamiento, o el nivel de riesgo, o un producto de ambos).
 
Encontremos la distancia más corta entre el nodo "A" y el nodo "G".
 
1. Rotular el Nodo Inicial : Recordemos el formato del rótulo 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 ningún 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 sólo se puede llegar directamente desde el Nodo A. Este es el nodo que vamos a rotular, y si hubieran más como él también los rotulariamos, pero en este ejemplo sólo tenemos el D.
 
El rótulo del Nodo D, es : [distancia mínima desde el Nodo Inicial, Nodo Precedente]. La distancia mínima desde el Nodo Inicial al Nodo D es 15: pos no hay otra alternativa, che! y el Nodo Precedente el "A". Rótulo: [15, "A"]
 
 
 
3. Rotular Todos los Nodos que tengan la información suficiente para rotularlos:
 
La información 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 aún no. Así que aún 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 rótulo (que es la distancia mínima desde él al Nodo inicial, o sea 15), MAS la distancia entre D y C = 15 +4 = 19: entre 8 y 19 es más pequeño 8. Así que escogemos el Nodo A como precedente: el rótulo es [ 8 , "A"]
 
 
 
4. Seguir rotulando todos los Nodos que tengan información suficiente hasta llegar al Nodo deseado:
 
G. Ahora ya hay información suficiente para rotular los Nodos B y F. Entonces rotulemos el Nodo B (no importa cuál se haga primero, igual hay que rotularlos todos). El rotulo para el Nodo B: La distancia desde A es 10, la distancia mínima al Nodo inicial desde C es: el la distancia del rótulo de C: 8 + la distancia de C a B : 3 => 8 + 3 = 11. El mínimo entre 10 y 11 es 10. Rótulo= [10, "A"].
 
 
  
Rótulo para el F: Desde C : 8 + 4 = 12 y desde D : 15 + 15 = 30. Entonces el Rótulo es [12, "C" ]
 
 
 
Rótulo para el Nodo E: Desde B : 10 + 20 = 30 y desde C: 8 + 15 = 23 Rótulo : [23,"C"]
 
 
Por último para el Nodo G: la distancia desde E es 23 + 5 = 28 y desde F es 12 + 3 = 15 Rótulo [15, F]
 
 
 
Ahora se puede leer la trayectoria mínima partiendo del rótulo 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. Solución: Distancia Mínima= 15 Ruta Más Corta = A-C-F-G
 
 

Contenido :

Social