You are on page 1of 2

EL PROBLEMA DE LA RUTA MS CORTA

El problema de la ruta ms corta determina la ruta ms corta entre un punto de origen y un punto de destino
en una red de transporte.
ALGORITMO DE LA RUTA MS CORTA
Algoritmo de Dijkstra
Los clculos del algoritmo avanzan de un nodo i a un nodo inmediatamente siguiente j, utilizando un
procedimiento especial de clasificacin. Digamos que Ui es la distancia ms corta del nodo 1 del punto de
origen al nodo i y defina dij (>=0) como la longitud del arco (i, j). Entonces la clasificacin para el nodo j se
define como

[ Uj, i ] = [Ui + dij, i ] , dij >= 0


Las clasificaciones de nodos en el algoritmo de Dijkstra son de dos tipos: Temporales y permanentes. Una
clasificacin temporal puede ser reemplazada con otra clasificacin si se puede encontrar una ruta ms corta
al mismo nodo.
El punto en el cual es evidente que no se puede encontrar una ruta mejor, el estado de la clasificacin
temporal cambia a permanente.
Los pasos del algoritmo se resumen como sigue:
Paso 0: Clasifique el nodo del punto de origen (nodo 1) con la clasificacin permanente [ 0,- ].
Determine i =1.
Paso i:
(a) Calcule las clasificaciones temporales [ Ui + dij, i ] para c/nodo j al que se puede llegar desde el
nodo i, siempre y cuando j no este clasificado permanentemente. Si el nodo j ya esta clasificado
con [ Uj,k ] a travs de otro nodo k y si Ui + dij < Uj, reemplace [ Uj,k ] con [ Ui + dij, i ].
(b) Si todos los nodos tienen clasificaciones permanentes detngase. De lo contrario, seleccione la
clasificacin [ Ur,s ] con la distancia mas corta (=Ur) entre todas las clasificaciones temporales
(rompa los empates arbitrariamente).Sea i = r y repita el paso i.

Algoritmo de Floyd
Recordemos que el algoritmo de Dijkstra nos permite determinar la ruta mas corta desde un nodo hacia los
otros, ahora veremos que el algoritmo de Floyd determina la ruta mas corta entre cualquier par de puntos.
La Idea del algoritmo de Floyd es:
Dados tres nodos i,j,k con distancias de conexin en sus arcos, es mas corto llegar a k desde i a travs de j
si:
dij + djk < dik
En este caso es mas barato reemplazar la ruta i k con i j k, este cambio es llamado: la operacin triple y
es aplicado sistemticamente a toda la red siguiendo los siguientes pasos:

Paso 0:
Defina la matriz de distancia inicial D0 y la matriz de secuencia S0, las diagonales estn marcadas con -
para indicar que estn bloqueados, si no existe una conexin entre nodos, colocar
Matriz Distancias (D)

Matriz Secuencia (S)

d12

d13

d14

d21

d23

d24

d31

d32

d34

d41

d42

d43

Paso general k
Defina el rengln k y la columna k como el rengln y la columna pivote. Aplique la operacin triple a cada
elemento dij en Dk-1 para todas las i y j. Si satisface la condicin:
dik + dkj < dij , (i k, j k, i j)
Realice los siguientes cambios:
Cree Dk reemplazando dij en Dk-1 con dik + dkj
Cree Sk reemplazando sij en Sk-1 con k. Determine k = k + 1 y repita el paso k hasta que k = numero de nodos
1.

You might also like