Está en la página 1de 6

Ejemplo del Problema del Camino Más

Corto en Programación Entera

El Problema del Camino más Corto (o ruta más barata) consiste en encontrar una ruta o
camino óptimo entre un nodo fuente y un nodo destino, los cuales están enlazados a través
de una red con arcos que poseen un cierto atributo, el cual puede ser costo, distancia,
tiempo, etc.

La Programación Entera permite abordar de forma eficiente este tipo de problemas, en


especial cuando la cantidad de nodos y rutas posibles resulta ser un número significativo.
Utilizar en estos casos un enfoque intuitivo de resolución es tedioso y de no ser exhaustivo
no garantiza la identificación de la mejor alternativa o ruta.

Consideremos el siguiente diagrama donde los números asignados a cada uno de los arcos
representan la distancia en kilómetros de un nodo a otro. Se desea encontrar la ruta con la
distancia mínima para ir del nodo 1 al nodo 8.
El tamaño reducido de la red anterior permite encontrar el camino más corto simplemente
enumerando las distintas alternativas que comenzando en el nodo 1 permita llegar al nodo
8. De esta forma las rutas posibles son:

 Ruta 1-2-5-7-8: 4+8+17+9=38[km]
 Ruta 1-3-4-7-8: 3+12+20+9=44[km]
 Ruta 1-3-4-6-8: 3+12+2+22=39[km]
 Ruta 1-3-4-8: 3+12+15=30[km]
 Ruta 1-3-6-8: 3+4+22=29[km]
Problema de la ruta mas corta
Considere una red conexa y no dirigida con dos nodos especiales llamados origen y
destino. A cada ligadura (arco no dirigido) se asocia una distancia no negativa. El
objetivo es encontrar la ruta más corta (la trayectoria con la mínima distancia total)
del origen al destino (Hillier, 2010).

La esencia del procedimiento es que analiza toda la red a partir del origen; identifica
de manera sucesiva la ruta más corta a cada uno de los nodos en orden ascendente
de sus distancias (más cortas), desde el origen; el problema queda resuelto en el
momento de llegar al nodo destino (Hillier, 2010).

▸Determine la ruta más corta en millas, para el ejemplo de Seervada Park.

▸PASO 1. Iniciar desde el nodo de origen e ir avanzando hacia el nodo final


(recursividad de avance).

▸PASO  2. Colocar entre corchetes en el lado izquierdo el valor que tiene la rama y
en el lado derecho la letra o numero correspondiente al nodo predecesor.

▸PASO 3. Seleccionar el corchete con el valor menor y continuar hacia adelante a


partir de este.

▸NOTA 1: Cuando se selecciona un nuevo nodo con el valor menor, se debe ir


contemplando la suma acumulativa de las ramas anteriores correspondientes.
SOLUCIÓN DEL EJEMPLO PROTOTÍPICO POR ALGORITMO DE DIJKSTRA
▸Se selecciona el nodo A puesto que tiene la distancia más corta de los 3 nodos que
salen del origen.

▸Continuando a partir del nodo A, se busca a que nodos se conecta y se suma el


valor de la rama anterior más el valor de la rama actual y se elige el menor, en este
caso es el nodo B.

▸Se descarta el nodo B, puesto que no mejora la distancia del nodo origen al nodo
C, al contrario aumenta, y se selecciona el nodo E.
▸Se selecciona el nodo D, sin embargo, hay dos opciones que llevan al nodo D con
el mismo valor, por lo cual se consideran dos alternativas.

▸Finalmente se llega al nodo final con un valor de 13 millas que representa la


distancia más corta, siendo la ruta más corta las mostradas en rojo y azul.

También podría gustarte