Вы находитесь на странице: 1из 5

1

CAMINOS MINIMOS EN
GRAFOS
DISTANCIA EN UN GRAFO
Sean G=(V,A) un grafo (o dgrafo),
u, v vrtices de G y P un camino
en G entre u y v. Al dimetro de
aristas (o arcos ) se le llama
longitud del camino P.
Se llama distancia de u a v, d(u,v),
a la mnima longitud de los
caminos que unen u con v. Si no
existe camino de u a v se dice que
la distancia entre dichos vrtices
es infinita, d(u,v)=oo
Si el grafo es ponderado, cada
arista e tiene un peso w(e). En
este caso, se llama longitud de un
camino P a la suma de los pesos
de las aristas de P
Distancias en un grafo ponderado Teorema
Si G es un grafo ponderado en el que las
aristas no reciben pesos negativos
entonces:
d(u,v)>=0 y d(u,v)=0 si y solo si u=v.
d(u,v) =d(v,u) para todo par de vrtices u, v
de G.
d(u,v)<=d(u,w) +d(w,v) para cualesquiera
vrtices u, v, w de G.
NOCIONES RELACIONADAS
CON LA DISTANCIA
El centro de un grafo conexo G, es el subgrafo
inducido por el conjunto de vrtices de
excentricidad mnima. Se designa por C(G)
La distancia total de un vertice v es
La mediana de un grafo G es el subgrafo inducido por
el conjunto de vrtices de distancia total mnima
2
Ejemplo Teorema
Si G es un grafo entonces
rad(G) <= diam(G) <= 2rad(G)
Algoritmo para Construccin del
centro de un rbol.
Entrada: Un rbol T
Salida: El centro del rbol C(T)
Estrategia: Borrar las hojas del rbol pues
no pueden ser vrtices del centro
Paso 1. Hacer H=T
Paso 2. Si H=K
1
o K
2
, entonces C(T)=H.
Paso 3. En caso contrario borrar todas las
hojas de H para obtener un rbol H'. Hacer
H'=H y volver al paso 2
Teorema
El algoritmo anterior construye el centro
C(T) de un rbol T
ALGORITMOS DE CAMINOS
MINIMOS
el conjunto de caminos mnimos desde s a los
restantes vrtices del grafo G es un rbol,
llamado el rbol de caminos mnimos desde s.
El rbol de
caminos mnimos
desde el vrtice s
ALGORITMO DE DIJKSTRA
Este algoritmo obtiene los caminos de longitud mnima
desde un vrtice s a los restantes vrtices del grafo G.
La idea bsica es realizar una exploracin en anchura
"pesada" empezando en el vrtice s. El algoritmo es de
tipo "voraz", aumentando iterativamente una nube de
vrtices a partir de s, entrando los nuevos vrtices en la
nube en orden de su distancia al vrtice s. En cada
iteracin se elige el vrtice, exterior a la nube, que es el
mas cercano a s. El algoritmo termina cuando no
quedan vrtices fuera de la nube; en ese punto
tendremos un camino mnimo desde s a cada uno de los
restantes vrtices del grafo.
3
ALGORITMO DE DIJKSTRA
Entrada: Un grafo (o dgrafo) ponderado, un vrtice s perteneciente
a V. El peso de la arista uv se indica por w(uv), poniendo w(uv)=oo
si uv no es arista. (Las aristas tienen pesos no negativos)
Clave: Mantener el conjunto T de vrtices para el que se conoce el
camino mas corto y ampliar T hasta que T=V. Para ello etiquetamos
cada vrtice z con t(z) que es la longitud del camino mas corto ya
encontrado.
Inicializacin: Sea T={}, t(s)=d(s,s)=0, t(z)=w(sz) para z distinto de s.
Iteracin:
Elegir el vrtice u perteneciente a T. con etiqueta mnima. Aadir u a T
Analizar cada arista uz con z perteneciente a T y actualizar la etiqueta
de z a min{t(z), t(u)+w(uz)}
La iteracin continua hasta que T=V(G) o hasta que t(z)=oo para cada
vrtice z perteneciente a T
En cualquier caso la etiqueta de cada vrtice z en T ser la distancia de
s a z. En el segundo caso los vrtices que no estn en T no son
accesibles desde s.
ALGORITMO DE DIJKSTRA
Teorema
El algoritmo de Dykstra calcula d(s,z) para
cada vrtice z perteneciente a V(G)
Teorema
La complejidad del algoritmo de Dijkstra
es 0(n
2
)
Observaciones importantes
El algoritmo de Dijkstra NO se puede aplicar si hay pesos
negativos.
El rbol de caminos mnimos desde el vrtice s, NO coincide
necesariamente con un rbol generador mnimo. En la figura se
presenta un grafo G en el que el rbol generador mnimo no
coincide con el rbol de caminos mnimos desde un vrtice.
ALGORITMO DE BELLMANN-
FORD
Esta variante del algoritmo de Dijkstra admite la asignacin de pesos
negativos en los arcos, aunque no permite la existencia en el
dgrafo de ciclos de peso negativo. La presencia de este tipo de
ciclos permitira rebajar ilimitadamente la distancia entre vrtices. Al
igual que el algoritmo de Dijkstra calcula la distancia mnima desde
un vrtice s del dgrafo a todos los dems.
El algoritmo de Bellman-Ford comparte con el algoritmo de Dijkstra la
idea de actualizacin de etiquetas, pero no con un proceso tipo
voraz. La etiqueta de un vrtice, t(u), es siempre una cota superior
de la distancia d(s,u) que se actualiza de forma iterada hasta que
coincide con la distancia. El algoritmo efecta n-1 veces la
actualizacin correspondiente a cada una de las aristas del dgrafo.
4
ALGORITMO DE BELLMANN-
FORD
Entrada: Un dgrafo ponderado con pesos no negativos en los
arcos, un vrtice s perteneciente a V.
Salida: La distancia desde s a cada vrtice del grafo, o una
indicacin de que el dgrafo posee un ciclo de peso negativo.
Inicializacin: Sea t(s)=d(s,s)=0, t(z)=oo para cada z distinto a s.
Iteracin:
Repetir n-1 veces lo siguiente:
Para cada arco e=uv actualizar la etiqueta de v a min {t(v), t(u)+w(uv)}
Si, tras efectuar la iteracin, no hay arcos que produzcan cambios de
etiqueta, entonces el algoritmo responde con una etiqueta t(u) para
cada vrtice.
Si, por el contrario, algn arco produce cambio de etiqueta entonces la
respuesta del algoritmo es: "El dgrafo contiene un ciclo de peso
negativo"
Ejemplo
Teorema
Dado un dgrafo ponderado D y un vrtice
s de D, el algoritmo de Bellman-Ford
calcula la distancia desde s a cada uno de
los restantes vrtices de D o indica que D
contiene un ciclo de peso negativo.
Teorema
La complejidad del algoritmo de Bellman-
Ford es O(qn)
ALGORITMO DE FLOYD-
WARSHALL
A veces no es suficiente calcular las
distancias con respecto a un vrtice s, si
no que necesitamos conocer la distancia
entre cada par de vrtices. Para ello se
puede aplicar reiteradamente alguno de
los algoritmos anteriores, variando el
vrtice s de partida. As tendramos
algoritmos de complejidad 0(n3) .
ALGORITMO DE FLOYD-
WARSHALL
Descripcin del algoritmo
Entrada: Un dgrafo ponderado sin ciclos de peso negativos. El
peso del arco uv se indica por w(uv), poniendo w(uv)=oo si uv no es
arco.
Salida: La distancia entre dos vrtices cualesquiera del grafo
Clave: Construimos la matriz W
k
a partir de la matriz
W
k-1
observando que:
Si alguna de las matrices W
k
tiene un elemento negativo en la diagonal
principal, entonces el dgrafo contiene un ciclo negativo. Si no es asi el
elemento ij de la matriz W
n
nos da la longitud de un camino mnimo entre
los vrtices v
i
y v
j
5
Ejercicios
Hallar el dimetro de los siguientes grafos: Kn,
Kr,s , C. W. Qn y Petersen.
Hallar el dimetro, el centro y la mediana de los
grafos siguientes:
Ejercicios
Cual es el centro de los siguientes
rboles?
Ejercicios
Hallar la ruta mas corta para acceder a
cada vrtice de los siguientes grafos (o
dgrafos) partiendo del vrtice s

Вам также может понравиться