Академический Документы
Профессиональный Документы
Культура Документы
---------
1. Inicializar todas las distancias en D con un valor infinito relativo, ya que son desconocidas
al principio, exceptuando la de x, que se debe colocar en 0, debido a que la distancia de x
a x sería 0.
2. Sea a = x (Se toma a como nodo actual).
3. Se recorren todos los nodos adyacentes de a, excepto los nodos marcados. Se les llamará
nodos no marcados v.
4. Para el nodo actual, se calcula la distancia tentativa desde dicho nodo hasta sus vecinos
con la siguiente fórmula: dt(v) = Da + d(a,v). Es decir, la distancia tentativa del nodo ‘v’ es la
distancia que actualmente tiene el nodo en el vector D más la distancia desde dicho nodo
‘a’ (el actual) hasta el nodo vi. Si la distancia tentativa es menor que la distancia
almacenada en el vector, se actualiza entonces el vector con esta distancia tentativa. Es
decir, si dt(v) < Dv → Dv = dt(v).
5. Se marca como completo el nodo a.
6. Se toma como próximo nodo actual el de menor valor en D (puede hacerse almacenando
los valores en una cola de prioridad) y se regresa al paso 3, mientras existan nodos no
marcados.
peso
G=(V,E)
Puede suceder que p(x,y) sea distinto a p(y,x) para ciertas aristas
(x,y) y (y,x).Puede darse el caso que p(x,y) sea infinito pero p(y,x)
un numero finito.
distancia
Si interpretamos p(e) como Supongamos S es un
la longitud de una ruta subconjunto de V con u0
directa de a a b podemos perteneciente a S y S’=V-S.
escribir d(a,b) como la
Si P=u0....u’v’ es el
distancia mas corta.Si no
camino mas corto de u0 a S’
existe el camino entonces
entonces u’ debe claramente
d(a,b) sera infinito.
pertenecer a S y la seccion
(u0,u’) de P debe ser el
camino mas corto del camino
(u0,u’)
d(u0,v’)=d(u0,u’)+p(u’,v’)
Se utiliza tambien el label(etiqueta) ,
La formula denotado l(v). Este es el limite superior de
d(u0,v).
Inicialmente l(u0)=0 y l(v)=infinito, con v
La distancia de u0 a distinto a u0.
Esta etiqueta indica la mejor estimación
S’ esta dada por la
actual de la longitud de la ruta más corta
formula:
de u a v.
A medida que el algoritmo procede el label
d(u0,S’)=min{d(u0,u)
se va modificando cuando los vertices
+p(u,v)}
empiezan a ser adyacentes a la franja que
se esta formando.
Con u perteneciente
La formula para calcular el label queda
a S y v
como
perteneciente a S’ l(v)=min(l(v)+(l(u)+p(u,v))) con u perteneciente
a la franja
Codigo
Complejidad
A arcos y N nodos
O(AxT(actualizar_distancia) + NxT(encontrar_minimo))
= O(A+N²)=O(N²)
Si A<<N²:
Vertice A B C D E F G
Vertice H I J K L M N P