Академический Документы
Профессиональный Документы
Культура Документы
ESTRUCTURA DE DATOS
TOSHIBA
Estructura de Datos
DES - Ciencias de la Informacin
Contenido
1.
2.
ALGORITMOS ..................................................................................................................................... 6
2.1. RBOLES GENERADORES MNIMOS ...................................................................................... 6
2.1.1. ALGORITMO DE BORVKA ............................................................................................ 10
2.1.2. ALGORITMO DE PRIM ..................................................................................................... 13
2.1.3. ALGORITMO DE KRUSKAL.............................................................................................. 17
2.2. APLICACIONES ......................................................................................................................... 21
2.2.1.1. Televisin por cable ............................................................................................... 21
2.2.1.2. Diseo de circuitos ................................................................................................. 21
2.2.1.3. Conexin de islas ................................................................................................... 21
2.2.1.4. Agrupacin de Datos de Expresin Ge ntica ..................................................... 22
2.2.1.5. Aproximaciones Basadas en MST ........................................................................ 22
2.2.2. RBOL GENERADOR MXIMO (MaxST) ....................................................................... 23
2.2.3. Problema de la Fiabilidad de la Red................................................................................ 23
2.2.4. Problema del Cuello de Botella ....................................................................................... 24
2.3. RBOLES DE CAMINO MNIMO .............................................................................................. 25
2.3.1. ALGORITMO DE DIJKSTRA ............................................................................................ 21
2.3.2. ALGORITMO DE BELLMAN-FORD .................................................................................. 30
2.3.3. ALGORITMO DE WARSHALL-FLOYD ............................................................................. 35
2.3.4. APLICACIONES................................................................................................................. 37
2.3.4.1. Multidifusin ........................................................................................................... 37
2.3.4.2. Aproximaciones Basadas en SPT......................................................................... 38
2
Julio Cesa NuezTejero
Estructura de Datos
DES - Ciencias de la Informacin
Grafo no dirigido
Grafo dirigido
4
5
5
2
6
1
6
1
Estructura de Datos
DES - Ciencias de la Informacin
Grafo)
ndice
Grafo)
Estructura de Datos
DES - Ciencias de la Informacin
Grafo)
Grafo)
Vrtice
Grafo)
Grafo)
Grafo
Vrtice
Vrtice
Grafo)
Grafo
ndice
5
Julio Cesa NuezTejero
Estructura de Datos
DES - Ciencias de la Informacin
Grafo)
Esta operacin elimina el vrtice V del grafo G. Elimina tambin todos los arcos
en los que V est involucrado. Si V no es un vrtice de G, G permanece sin
modificaciones.
Eliminar Arco: (Vrtice
Vrtice
Grafo)
6
Julio Cesa NuezTejero
Estructura de Datos
DES - Ciencias de la Informacin
Representaciones de grafos
Aunque en general al representar datos de la vida real mediante un grafo los vrtices
suelen llevar asociada informacin, en lo que sigue supondremos que esa
informacin se almacena en una lista indexada y por lo tanto podemos hacer
referencia a los vrtices utilizando nicamente el ndice donde estn almacenados
en esa lista. En lo que sigue las representaciones hacen referencia nicamente a la
manera de almacenar las aristas.
Las operaciones bsicas sobre grafos son las de comprobacin de existencia de
arista entre dos vrtices (o conocer su longitud, si el grafo es etiquetado), recorrer
la lista de vrtices adyacentes a uno dado, la insercin y borrado de una arista, y la
insercin y borrado (junto con las aristas asociadas) de un vrtice. En muchas
aplicaciones, sin embargo, el conjunto de vrtices no vara durante la ejecucin.
Las dos representaciones principales de grafos son las siguientes:
Operaci
n
Espacio ocupado
Matriz de Adyacencia
(n2)
(n2)
O(1)
O(n2)
Lista de Adyacencia
(m+n)
O(grado(i))
(grado(i))
(m)
O(grado(i))
O(n)
Segn el modelo
adecuadamente.
del
Matriz
Adyacencias
grafo,
de
V1
V1
V2
V3
Vn
V1
v
V2
V3
v
Estructura de Datos
DES - Ciencias de la Informacin
Arreglo
de
listas
Adyacencia
s
Lista
de
Listas
de
Adyacencia
s
Vn
V2
V3
v
v
V4
v
Matriz de adyacencias
Se trata de una representacin mediante un arreglo de dos dimensiones
(matriz). Los ndices de la matriz representan los vrtices del grafo y cada una
de las componentes [i,j] toma un valor lgico segn el arco (i,j) pertenezca o no
al grafo que representa.
En este caso, los conjuntos Vrtice e ndice coinciden. Para el siguiente ejemplo
El esquema es:
1
2
L
M
j
v
LM
Estructura de Datos
DES - Ciencias de la Informacin
Estructura de Datos
DES - Ciencias de la Informacin
Listas de adyacencias
Los ndices del arreglo representan los vrtices del grafo y cada una de las
componentes [i] tiene un enlace a la lista de adyacentes al vrtice i.
En este caso el tipo ndice est compuesto por las direcciones de las celdas de
las listas de adyacentes y el enlace Nulo.
Es decir, al siguiente caso:
Le corresponde:
1
2
LM
Estructura de Datos
DES - Ciencias de la Informacin
Estructura de Datos
DES - Ciencias de la Informacin
4
2
5
2
8
1
0
8
1
2
8
0
5
2
3
1
5
0
7
5
2
7
0
5
0
9
3
9
0
3
0
5
3
1
1
1
2
3
4
5
6
7
9
6
Estructura de Datos
DES - Ciencias de la Informacin
(2,8
)
(1,8
)
(1,1
)
(2,2
)
(3,5
)
(5,9
)
(5,3
)
(3,1)
(3,5)
(4,7)
(3,7)
(7,3)
(4,2
)
(2,5
)
(5,5)
(6,9
)
2
3
3
6
4
1
0
5
1
2
6
1
5
7
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(2,8 (3,1 (1,8 (3,5 (4,2 (1,1 (4,7 (2,5 (5,5 (2,2 (3,7 (3,5 (7,3 (6,9 (5,9 (5,3
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
Estructura de Datos
DES - Ciencias de la Informacin
Algoritmos
RBOLES GENERADORES MNIMOS
Un rbol generador mnimo (MST) de un grafo G con pesos es un rbol generador
de G cuya suma de pesos de las aristas es mnima. En otras palabras, un rbol
generador mnimo es un rbol constituido por un subconjunto de aristas de un grafo
no dirigido, con dos propiedades:
1. Expande el grafo, es decir, incluye todos los vrtices del grafo
2. Es mnimo, es decir, el peso total de todos las aristas es lo ms pequeo
posible
El problema del rbol generador mnimo se incluye siempre en los libros de texto
porque tiene muchas aplicaciones, es un ejemplo importante donde algoritmos
ambiciosos siempre alcanzan una solucin ptima, y se necesitan estructuras de
datos inteligentes para que funcionen eficientemente.
Un rbol generador mnimo no es necesariamente nico.
En todo este captulo se va a llamar rbol generador mnimo al de peso mnimo.
Figura 1: Grafo con pesos;
2
d
5
1
e
2
g
4
f
2
1
Estructura de Datos
DES - Ciencias de la Informacin
c3
2
2
d
1
f
e
f
1
4
4
b
c
3
3
2
1
1
e
f
1
2
g
Estructura de Datos
DES - Ciencias de la Informacin
Estructura de Datos
DES - Ciencias de la Informacin
Dado que el rbol es conexo, cualquier par de vrtices en el rbol estn conectados
por al menos un camino. Sea T un rbol, y se asume que hay dos caminos distintos
P1 y P2 desde el vrtice u al vrtice v. Existe una arista e = (x, y) de P1 que no es
una arista de P2. Se puede ver que (P1 P2) e es conexo y contiene el camino
Pxy desde el vrtice x al vrtice y. Pero entonces Pxy + e es un ciclo. Lo cual es una
contradiccin. As, debe de haber al menos un camino entre los dos vrtices en el
rbol.
Sea T un rbol generador de un grafo G, y sea e una arista de G que no est en
T.
Entonces, T + e contiene un nico ciclo.
Sea e = (u, v). Dado que T no contiene ciclos, cada ciclo de T + e contiene a e.
Adems, X es un ciclo de T + e si y slo si X e es un camino de u a v en T. Por el
lema 1, tal camino es nico en T. De esta manera, T + e contiene un nico ciclo.
En este captulo se van a estudiar tres algoritmos que se conocen muy bien para
resolver el problema del rbol generador mnimo:
Algoritmo de Borvka
Algoritmo de Prim
Algoritmo de Kruskal
Estructura de Datos
DES - Ciencias de la Informacin
ALGORITMO DE BORVKA
En cada paso de Borvka, cada supervrtice selecciona su arista adyacente ms
pequeo.
Estas aristas se aaden al MST, evitando ciclos. Entonces los nuevos supervrtices,
por ejemplo, los componentes conexos se calculan contrayendo el grafo sobre las
aristas que se aaden al MST. Este proceso se repite hasta que solamente queda
un supervrtice. En otras palabras se contraen n-1 aristas. La unin de estas aristas
forma un rbol generador mnimo.
Algoritmo: BORVKA
Entrada: Un grafo no dirigido y con peso G = (V, E, w)
Salida: Un rbol generador mnimo T.
T
Mientras |T| < n -1
hacer
Estructura de Datos
DES - Ciencias de la Informacin
Ejemplo:
Figura 3: Ejecucin del algoritmo de BORVKA sobre el grafo de la figura 1
a
(a, b, c, d, e, f)
2
d
(g,
h
(a)
(b)
a
(a, b, c, d, e, f)
2
d
5
1
(a, b, c, d, e, f, g, h)
f
1
(g,
h)
(c)
(d)
1
h
(e)
Estructura de Datos
DES - Ciencias de la Informacin
Estructura de Datos
DES - Ciencias de la Informacin
ALGORITMO DE PRIM
Se elige un vrtice arbitrariamente y se trabaja con un rbol generador mnimo
parcial. En cada paso se aade una arista que conecte con el vrtice ms cercano
pero que no est todava en el actual rbol generador mnimo parcial. As se va
formando el rbol generador hasta que el rbol incluye todos los vrtices del grafo
dado. Esta estrategia es voraz en el sentido de que en cada paso el rbol generador
parcial crece aadindole la arista ms pequea entre todas las aristas vecinas
posibles.
Esquema:
1. Empezar en un vrtice cualquiera v. El rbol consta inicialmente slo del
nodo v.
2. Del resto de vrtices, buscar el que est ms prximo a v (es decir, con la
arista (v, w) de coste mnimo). Aadir w y la arista (v, w) al rbol.
3. Buscar el vrtice ms prximo a cualquiera de estos dos. Aadir ese vrtice
y la arista al rbol de expansin.
4. Repetir sucesivamente hasta aadir los n vrtices.
La solucin se construye poco a poco, empezando con una solucin vaca.
Implcitamente, el algoritmo maneja los conjuntos:
1. V: Vrtices del grafo.
2. U: Vrtices aadidos a la solucin.
3. V-U: Vrtices que quedan por aadir.
Se usan dos arrays:
1. MAS_CERCANO: Para cada vrtice de V-U indica el vrtice de U
que se encuentra ms prximo.
2. MENOR_COSTE: Indica el coste de la arista ms cercana.
Estructura del algoritmo de Prim: C[v, w] Matriz de costes
1. Inicialmente U= {1}. MAS_CERCANO[v]= 1.
MENOR_COSTE[v]= C[1, v], para v= 2..n
2. Buscar
el
nodo
v,
con
MENOR_COSTE
mnimo.
Asignarle un valor muy grande (para no volver a cogerlo).
3. Recalcular MAS_CERCANO y MENOR_COSTE de los nodos
de V-U. Para cada w de V-U, comprobar si C[v, w] es menor
que MENOR_COSTE[w].
4. Repetir los dos puntos anteriores hasta que se hayan aadido
los n nodos.
Estructura de Datos
DES - Ciencias de la Informacin
Algoritmo: PRIM
Entrada: Un grafo no dirigido y con peso G = (V, E, w)
Salida: Un rbol generador mnimo T.
T
Sea r un vrtice elegido arbitrariamente del conjunto V.
U {r}
Mientras |U| < n hacer
Encontrar un u U y v V U tal que la arista (u, v) sea la arista mnimo entre U y
V U.
TT{(u,v)}
T T{v}{v}
Ejemplo
La figura 4 ilustra la ejecucin del algoritmo de PRIM sobre el grafo de la figura 1.
Se empieza por el vrtice a. Dado que (a, b) es la arista mnimo que incide sobre a,
se incluye en el rbol generador que se est construyendo (figura 4(a)). En la figura
4(b), se aade la arista (b, d) porque es la arista ms pequea entre {a, b} y V {a,
b}. Cuando hay un empate, como en la figura 4(c), cualquier arista ms pequea
podra funcionar bien. Se procede de esta forma hasta que se expanden todos los
vrtices. El rbol generador mnimo definitivo se muestra en la figura 4(h).
Estructura de Datos
DES - Ciencias de la Informacin
b
c
5
1
1
f
b
c
2
g
d
1
2
5
f
1
1
f
1
b
c
Estructura de Datos
DES - Ciencias de la Informacin
5
1
2
h
3
2
d
2
5
b
c
4
1
4
1
1
f
2
2 h
El algoritmo de Prim parece que pasa la mayor parte de su tiempo buscando la arista ms
pequea para crecer. Un mtodo ms directo para encontrar una arista ms pequea consiste
en buscar en las listas de adyacentes de los vrtices de V; entonces cada iteracin cuesta un
tiempo del orden O(m). Produciendo un tiempo total de ejecucin del orden de O(mn). Utilizando
pilas binarias, se puede mejorar a un orden O(m log n). Utilizando pilas de Fibonacci, el
algoritmo de Prim se ejecuta en tiempo O(m + n log n).
Estructura de Datos
DES - Ciencias de la Informacin
ALGORITMO DE KRUSKAL
Se crea un bosque donde cada vrtice del grafo es inicialmente un rbol. Luego se
ordenan segn el peso todas las aristas del grafo. Para cada arista (u, v), se realiza
lo siguiente: Si el vrtice u y v pertenecen a dos rboles diferentes, entonces se
aade (u, v) al bosque, combinando los dos rboles en un nico rbol. Se procede
as hasta que todas las aristas hayan sido procesadas.
Esquema: G= (V, A)
1. Empezar con un grafo sin aristas: G= (V, )
2. Seleccionar la arista de menor coste de A.
3. Si la arista seleccionada forma un ciclo en G, eliminarla. Si no, aadirla a
G.
4. Repetir los dos pasos anteriores hasta tener n-1 aristas.
Implementacin del algoritmo
Necesitamos:
Ordenar
las
aristas
de
A,
de
menor
O(a log a).
Saber si una arista dada (v, w) provocar un ciclo.
mayor:
Estructura de Datos
DES - Ciencias de la Informacin
Algoritmo: KRUSKAL
Entrada: Un grafo no dirigido y con peso G = (V, E, w)
Salida: Un rbol generador mnimo T.
Ordenar las aristas en E en orden no decreciente de pesos.
T
Crear un conjunto para cada vrtice.
Para cada arista (u, v) clasificado en orden hacer
x FIND(u)
y FIND(v)
Si
entonces
y
T
T {(u, v)}
UNION(x, y)
Ejemplo
La figura 5 ilustra la ejecucin del algoritmo de Kruskal sobre el grafo de la figura
1. Inicialmente, cada vrtice es un rbol del bosque. Las aristas clasificadas en
orden son: ((d, e), (g, h), (e, f), (d, f), (b, d), (e, g), (f, h), (b, c), (a, b), (c, h), (a, g)).
Como (d, e) une dos rboles distintos en el bosque, de ese modo se combinan los
dos rboles A continuacin se considera (g, h). El vrtice g y el vrtice h pertenecen
a dos rboles diferentes, por lo tanto se aade la arista (g, h) al bosque como se
muestra en la figura 5(b). En la figura 5(d), cuando se procesa (d, f), ambos d y f
pertenecen al mismo rbol, por lo tanto, no se hace nada con esa arista. El mnimo
rbol generador final se muestra en la figura 5(h).
Estructura de Datos
DES - Ciencias de la Informacin
b
c
5
1
1
f
b
c
2
g
5
1
f
1
1
d
1
2
5
2
h
4
f
b
c
Estructura de Datos
DES - Ciencias de la Informacin
5
1
2
h
b
3
2
d
1
4
1
1
f
2
5
a
4
b
c
4
1
e
2
Ordenar las aristas en orden no decreciente se realiza en tiempo O(m log m). El
tiempo total de ejecucin para determinar si una arista junta dos rboles
diferentes en el bosque se realiza en tiempo O(m (m, n)), donde es la funcin
inversa de Ackermann. Por lo tanto, el tiempo de ejecucin asinttico del
algoritmo de Kruskals es O(m log m), el cual es el mismo que O(m log n) ya que
log m = (log n), a esta conclusin se llega observando que m= O(n2) y m= (n).
Estructura de Datos
DES - Ciencias de la Informacin
APLICACIONES
Los rboles generadores mnimos son tiles en la construccin de redes, para
describir la manera de conectar un conjunto de sitios utilizando la menor cantidad
total de cable. La mayor parte del trabajo de los rboles generadores mnimos ha
sido conducido por las compaas de comunicacin.
Televisin por cable
Un ejemplo es una compaa de televisin por cable instalando cable a un nuevo
vecino. Si se est obligado a enterrar el cable solamente a lo largo de determinados
caminos, entonces habra un grafo que represente qu puntos se conectan por esos
caminos. Algunos de esos caminos podran ser ms caros porque son ms largos
o requiere que el cable se entierre a mayor profundidad. Un rbol generador para
esos grafos podra ser un subconjunto de esos caminos que no tenga ciclos pero
que conecte cada casa.
Habra varios rboles generadores posibles. Un rbol generador mnimo podra ser
uno con el mnimo coste total.
Diseo de circuitos
En el diseo de un circuito electrnico, a menudo es necesario para cablear algunas
clavijas juntas para hacerlas elctricamente equivalentes. Un rbol generador
mnimo necesita la menor cantidad de cable para interconectar un conjunto de
puntos.
Conexin de islas
Supongamos un grupo de islas que queremos conectar con puentes para que sea
posible viajar de una isla a cualquier otra del grupo. Ms all, supongamos que el
gobierno desea gastarse el mnimo dinero en este proyecto. Los ingenieros son
capaces de calcular el coste de un puente de conexin para cada par de islas
posibles. El conjunto de puentes que te permiten viajar de una isla a cualquier otra
con el mnimo coste para el gobierno es el rbol generador mnimo.
Estructura de Datos
DES - Ciencias de la Informacin
Estructura de Datos
DES - Ciencias de la Informacin
Estructura de Datos
DES - Ciencias de la Informacin
e1
W
=
V0
V1
e2
V2
en
Vn ,
Sea (G, w) una red sobre un grafo conexo G, y sea T un rbol generador mximo.
Entonces, para cada par (u, v) de vrtices, el nico camino desde u hacia v en T es
un camino de mxima capacidad en G.
Estructura de Datos
DES - Ciencias de la Informacin
Estructura de Datos
DES - Ciencias de la Informacin
2
d
5
1
4
1
4
c
5
1
2
g
f
1
h
(a)
4
1
f
1
h
(b)
Estructura de Datos
DES - Ciencias de la Informacin
3
2
-1
e
2
4
f
Estructura de Datos
DES - Ciencias de la Informacin
ALGORITMO DE DIJKSTRA
El algoritmo de Dijkstra resuelve el problema de encontrar el camino mnimo desde
un origen a un destino. Resulta que uno puede encontrar el camino mnimo desde
un origen dado a todos los vrtices de un grafo al mismo tiempo; de ah, este
problema a veces se llama el problema del camino mnimo con un origen nico. De
hecho, este algoritmo se puede utilizar para entregar el conjunto de aristas que
conectan todos los vrtices tal que la suma de las longitudes de las aristas desde el
origen hasta cada nodo sea mnimo.
Para cada vrtice v V, el algoritmo de Dijkstra mantiene un atributo [v], el cual
es un lmite superior del peso del camino mnimo desde el origen a v. Se llama [v]
al camino mnimo estimado. Inicialmente, el camino mnimo estimado de todos los
vrtices restantes al vrtice origen se fija a . El algoritmo de Dijkstra tambin
mantiene el conjunto S de vrtices cuyos pesos del camino mnimo definitivo desde
el origen todava no se ha determinado. El algoritmo selecciona repetidamente el
vrtice u S con el mnimo camino mnimo estimado y reevala el camino mnimo
estimado de los vrtices adyacentes a u. La reevaluacin es a menudo referida a
un paso de generacin. Una vez que el vrtice se elimina de S, se determina el peso
del camino mnimo desde el origen y el algoritmo termina.
Estructura de Datos
DES - Ciencias de la Informacin
[v]
[v] NIL
[s] 0
T
SV
Mientras S hacer
Elegir u S con el mnimo [u]
S S - {u}
Si u s entonces T T {( [u], u)}
Para cada vrtice v adyacente a u hacer Si
1
d
5
1
e
2
4
f
Estructura de Datos
DES - Ciencias de la Informacin
b 3
1
e
4
1
f
Figura 5: Se elige el vrtice b, y las aristas (b, c) y (b, d) se expanden. La arista (a,
b) se aade al rbol de camino mnimo.
a
c
7
1
5
e
2
4
1
1
1
2 h
Estructura de Datos
DES - Ciencias de la Informacin
c
7
1
d
1
e
4
1
f
c
7
1
e
1
d
1
f
1
1
h
6
Estructura de Datos
DES - Ciencias de la Informacin
c
7
1
d
1
e
1
f
2 h
c
7
1
d
5
1
4
1
f
2
g
1
h
Figura 10: Se elige el vrtice c, y la arista (c, h) se expande. La arista (b, h) se aade
al rbol de camino mnimo.
a
c4
7
5
1
4
1
f
7
g 2
11
Estructura de Datos
DES - Ciencias de la Informacin
Figura 11: Se elige el vrtice f, y las aristas (f, d) y (f, d) se expanden. La arista (e,
f) se aade al rbol de camino mnimo.
a
c4
1
d
f
2
Figura 12: Arbol de camino mnimo construido mediante el algoritmo de Dijkstra para
el grafo de la figura 3.
a
c4
1
d
5
1
e
f
1
Figura 13: Grafo dirigido, con pesos y con una arista con peso negativo
a
c2
1
d
e
-3
4
f
Estructura de Datos
DES - Ciencias de la Informacin
c2
1
d
4
1
-3
f
2
6
2
1
d
5
1
e
g
1
Figura 16: rbol de camino mnimo correcto.
a
c2
1
d
5
e
-3
f
2
Estructura de Datos
DES - Ciencias de la Informacin
Estructura de Datos
DES - Ciencias de la Informacin
Estructura de Datos
DES - Ciencias de la Informacin
ALGORITMO DE BELLMAN-FORD
Los algoritmos de caminos mnimos aprovechan generalmente la propiedad de que
un camino mnimo entre dos vrtices contiene otros caminos mnimos dentro de l.
Esta propiedad de subestructura ptima admite ambas; la programacin dinmica y
el mtodo voraz. Se ha visto que el algoritmo de Dijkstra puede fallar cuando se
calcula el rbol de caminos mnimos cuando el grafo tiene alguna arista con peso
negativo. El algoritmo de Bellman-Ford funciona de una forma ms general que el
algoritmo de Dijkstra: resuelve el problema del rbol de camino mnimo incluso
cuando el grafo tiene aristas negativos. Si hay un ciclo con pesos negativos, el
algoritmo indica que no existe solucin.
Recalcar que el algoritmo de Dijkstra nicamente extiende aquellas aristas que
inciden en los vrtices elegidos con el mnimo camino estimado. El fallo del
algoritmo de Dijkstra para grafos con aristas con pesos negativos se debe al hecho
de que no se calcula el efecto domin causado por aristas negativas. Si se revisa la
figura 14 otra vez, y se promocionara el efecto de la arista negativa hacia delante,
se podra haber construido un rbol de camino mnimo correcto. Esto sirve de
ejemplo al diseo del algoritmo de Bellman-Ford el cual expande todas las aristas
en cada iteracin.
Inicialmente, el camino mnimo estimado del resto de vrtices excepto el origen se
asigna . Luego el algoritmo realiza n-1 pasadas sobre todas las aristas del grafo.
En cada pasada, si [v] > [u] + w(u, v), entonces se asigna a el valor de [v] a
[u] + w(u, v) y se modifica el predecesor del vrtice v. Una importante
caracterstica del algoritmo de Bellman-Ford es que en la iteracin kesima, el
camino mnimo estimado para el vrtice v, por ejemplo, [v], es igual a la longitud
del camino mnimo desde el origen a v con k aristas como mximo. Si despus de
n -1 pasadas, existe una arista (u, v) tal que [v] > [u] + w(u, v), entonces se ha
detectado un ciclo negativo. De otra forma, para todos los restantes vrtices excepto
el origen, se construye el rbol de camino mnimo aadiendo las aristas a partir de
su predecesor a ellos.
Estructura de Datos
DES - Ciencias de la Informacin
Algoritmo: BELLMAN-FORD
Entrada: Un grafo dirigido y con peso G = (V, E, w); Un vrtice origen s.
Salida: Un rbol generador T con el camino mnimo con raz s.
Para cada vrtice v V hacer
[v]
[v] NIL
[s] 0
Para i 0 hasta n 1 hacer Para
cada (u, v) E hacer
Si [v] > [u] + w(u, v) entonces
T
Para cada v V s hacer
T T {( [v], v)}
Estructura de Datos
DES - Ciencias de la Informacin
Ejemplo:
Figura 17: Los caminos mnimos estimados
a
5
1
e
g
5
-3
4
1
1
1
f
2
Estructura de Datos
DES - Ciencias de la Informacin
[c],
[d],
1
5
-3
f
2
5g
6h
[f] se modifica.
1
5
4
1
e
2
-3
f
2
c2
1
5
4
1
-3
5g
[h] se modifica.
f
2
5h
[e]
[h] se
Estructura de Datos
DES - Ciencias de la Informacin
c2
1
5
1
e
g5
-3
4
1
3
f
2
h
5
Estructura de Datos
DES - Ciencias de la Informacin
ALGORITMO DE WARSHALL-FLOYD
El algoritmo de Floyd-Warshall compara todos los posibles caminos a travs grafo
entre cada par de vrtices. Se permiten aristas con pesos negativos y se supone
que no hay ciclos de peso negativo para poder aplicar el aplicar este algoritmo.
El algoritmo es capaz de hacer esto con slo V3 comparaciones (esto es notable
considerando que puede haber hasta V2 aristas en el grafo, y que cada combinacin
de aristas se prueba). Lo hace mejorando paulatinamente una estimacin del
camino mnimo entre dos vrtices, hasta que se sabe que la estimacin es ptima.
Sea un grafo G con conjunto de vrtices V, numerados de 1 a N. Sea adems una
funcin caminoMinimo(i,j,k) que devuelve el camino mnimo de i a j usando
nicamente los vrtices de 1 a k como puntos intermedios en el camino. Ahora, dada
esta funcin, nuestro objetivo es encontrar el camino mnimo desde cada i a cada j
usando nicamente los vrtices de 1 hasta k + 1.
Hay dos candidatos para este camino: un camino mnimo, que utiliza nicamente
los vrtices del conjunto (1...k); o bien existe un camino que va desde i hasta k + 1,
despus de k + 1 hasta j que es mejor. Sabemos que el camino ptimo de i a j que
nicamente utiliza los vrtices de 1 hasta k est definido por caminoMinimo(i,j,k), y
est claro que si hubiera un camino mejor de i a k + 1 a j, la longitud de este camino
sera la concatenacin del camino mnimo de i a k + 1 (utilizando vrtices de (1...k))
y el camino mnimo de k + 1 a j (que tambin utiliza los vrtices en (1...k)).
Estructura de Datos
DES - Ciencias de la Informacin
procedimiento FloydWarshall ()
para k: = 0 hasta n 1
para todo (i,j) en (0...n 1)
camino[i][j] = mn ( camino[i][j], camino[i][k]+camino[k][j]);
Estructura de Datos
DES - Ciencias de la Informacin
APLICACIONES
El problema del rbol de caminos mnimos aparece en la prctica y se presenta
como un subproblema en muchos algoritmos de optimizacin de redes. El rbol de
camino mnimo se utiliza mucho en multidifusin de IP y en algunas de las
aplicaciones a nivel de multidifusin para algoritmos de ruteo.
Multidifusin
La multidifusin es uno de los mecanismos por el que el poder de Internet puede
ser ms utilizado de una manera eficiente. Cuando ms de un receptor est
interesado en recibir una transmisin desde un remitente o un conjunto de
remitentes, la multidifusin es el mecanismo ms eficiente y viable.
El ruteo de la multidifusin se refiere a la construccin de un rbol con raz en el
origen y que se extiende a todos los destinatarios. Generalmente, hay dos tipo de
rboles; rboles de Steiner y rboles de caminos mnimos. Los rboles de Steiner
o rboles de grupos compartidos, tienden a minimizar el coste total del rbol
resultante. Los rboles de caminos mnimos o rboles basados en el origen tienden
a minimizar el coste de cada camino desde el origen a cualquier destino.
A continuacin, se describe brevemente los dos protocolos muy conocidos de ruteo:
Protocolo de Ruteo de Informacin y Primer Camino mnimo Abierto (OSPF).
RIP es un protocolo de vector de distancias que permite el ruteo para intercambiar
informacin sobre destinos para rutas de computacin a travs de la red. Los
destinos pueden ser redes o un destino especial utilizado para convertir a una ruta
por defecto. En RIP, los algoritmos de Bellman-Ford hacen que cada router
peridicamente realice un broadcast de sus tablas de ruteo a todos sus vecinos. Por
lo tanto, el router conoce las tablas de sus vecinos y decide a qu vecino destino
remite un paquete.
OSPF es un protocolo de ruteo desarrollado por el Protocolo de Internet (IP) para
redes. OSPF se cre porque a mediados de los 80, RIP fue cada vez ms incapaz
de servir a las extensas y heterogneas redes de Internet. Como la mayor parte de
los algoritmos que unen estados, OSPF utiliza un modelo de grafo terico de red
topolgica para calcular los caminos mnimos. Cada router peridicamente publica
informacin acerca del estado de sus conexiones. OSPF propaga informacin sobre
las adyacencias a todos los routers de la red donde cada router localmente calcula
los caminos mnimos por el algoritmo de Dijkstra.
BIBLIOGRAFIA
http://es.wikipedia.org/wiki/Algoritmo_de_Floyd-Warshall
http://imp.act.uji.es:8080/algoritmica/repo/Tocho3
http://www.dma.fi.upm.es/gregorio/grafos/ArbolesOptimos/descargas/Memoria_Te
oria.pdf
http://www.ing.ula.ve/~aguilar/actividad-docente/AYDA/Clase4MiniSem.pdf