Vous êtes sur la page 1sur 54

GRAFOS

ESTRUCTURA DE DATOS

JULIO CESAR NUEZ TEJERO


INGENIERA EN COMPUTACIN
DES CIENCIAS DE LA INFORMACIN

TOSHIBA

UNIVERSIDAD AUTONOMA DEL CARMEN

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Contenido

1.

INTRODUCCIN Y CONCEPTOS BSICOS ..................................................................................... 3


1.1. OPERACIONES Y SUS RESPECTIVAS DESCRIPCIONES : ....................................................................... 4
1.2. REPRESENTACIONES DE GRAFOS ..................................................................................................... 3
1.2.1. Matriz de adyacencias ......................................................................................................... 4
1.2.2. Listas de adyacencias ......................................................................................................... 6
1.2.3. Lista enlazada de listas de adyacencia.............................................................................. 7

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

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Introduccin y Conceptos Bsicos


Un grafo es una entidad matemtica introducida por Euler en 1736 para representar
entidades (vrtices) que pueden relacionarse libremente entre s, mediante el
concepto de arista. Se puede definir un Grafo basado en estas ideas, el cual
contiene elementos sobre los que esta definida una relacin de vecindad o
adyacencia. Un vrtice puede relacionarse con cualquier otro vrtice y establecer
cualquier nmero de relaciones.
Hay muchas situaciones en las cuales el modelado ms conveniente de los datos
de una aplicacin es mediante grafos, por ejemplo la representacin de una red de
carreteras, calles, telecomunicaciones, electrificacin, internet, planificacin de
tareas, etapas de un proceso industrial, etc.
Un grafo G = (V, A) se define por:

Un conjunto de n vrtices, V, a los cuales se hace referencia por sus

Un conjunto de m aristas, A, que conectan vrtices entre s. Una arista es


el vrtice i est conectado con el vrtice j.

mismo). Un subgrafo de G es cualquier grafo G = (V, A) donde A sea un


subconjunto de A Dependiendo de si el orden de los vrtices en las aristas
importa o no tenemos:

conectado con el vrtice j no implica que el vrtice j est conectado con


el vrtice i.
Grafo no dirigido: El orden no importaEjemplos de grafos y su
representacin:

Grafo no dirigido

Grafo dirigido

4
5

5
2

6
1

6
1

El grafo de la figura 1 se define por: V = [1..7], A = { 1,2 , 1,3 , 2,1 , 2,3


, 2,4 , 3,1 , 3,2 , 3,4 , 3,5 , 4,2 , 4,3 , 5,3 , 5,6 , 5,7
, 6,5 , 7,5 }.
El grafo de la figura 2 se define por: V = [1...7], A
, 2,3 , 2,4 , 3,2 ,
3,5 , 5,6 , 5,7 }.
3
Julio Cesa NuezTejero

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

En muchas aplicaciones de los grafos las aristas llevan asociada informacin


adicional. En ese caso hablaremos de grafos etiquetados. Si esa informacin es
numrica y tiene el significado del coste necesario para recorrer esa arista, entonces
usaremos el nombre de grafo ponderado o red.
Red: Grafo en el que cada arista lleva asociado un coste (longitud)

Grafo = g/g es un grafo


Vrtice = v/v es un vrtice de un grafo
Nodo Nulo
Rtulo Vrtice = R/R es un rtulo de un vrtice de un grafo
Rtulo Arco = R/R es un rtulo de un arco de un grafo
ndice = i/i es la direccin que permite encontrar un vrtice adyacente
a un vrtice dado
ndice Nulo

Operaciones y sus respectivas descripciones:


Con alcance para hacer recorridos y recavar informacin del grafo
Primer Vrtice: Grafo Vrtice Primer Vrtice (G): Vrtice
Como el nmero de vrtices de un grafo es finito, se puede hablar de la lista de
vrtices (siempre se los puede organizar como una lista, sin que esto implique
que hay uno distinguido). Esta operacin devuelve el primer vrtice de la lista de
vrtices del grafo G. Si G no tiene nodos, devuelve Nodo Nulo.
Siguiente Vrtice: (Vrtice

Grafo)

Vrtice Siguiente Vrtice (V,G): Vrtice

Esta operacin devuelve el primer vrtice que sigue a V en la lista de vrtices


del grafo G. Si G no tiene nodos o V=Nodo Nulo se plantea una situacin de
error. Cuando V es el ltimo vrtice de la lista de vrtices de G la operacin
devuelve Nodo Nulo.
Primer Adyacente: (Vrtice Grafo) ndice Primer Adyacente (V,G): ndice
Como el nmero de vrtices de un grafo es finito, obviamente el nmero de
vrtices adyacentes a uno dado, tambin lo es. Por lo tanto se puede hablar de
la lista de vrtices adyacentes (o lista de adyacentes) a un vrtice V (siempre
se los puede organizar como una lista, sin que esto implique que hay uno
distinguido). Esta operacin devuelve el ndice del primer vrtice de la lista de
adyacentes del vrtice V del grafo G. Si G no tiene nodos o V=Nodo Nulo se
plantea una situacin de error. Si V no tiene nodos adyacentes devuelve ndice
Nulo.
Siguiente Adyacente: (Vrtice
(V,I,G): ndice

ndice

Grafo)

ndice Siguiente Adyacente


4

Julio Cesa NuezTejero

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Esta operacin devuelve el ndice del siguiente vrtice adyacente al de ndice I


de la lista de adyacentes del vrtice V en el grafo G. Si V=Nodo Nulo o I=ndice
Nulo o G no tiene nodos, se plantea una situacin de error. Cuando I es el ndice
del ltimo adyacente de la lista de adyacentes del vrtice V, la operacin
devuelve ndice Nulo.
Vrtice: (ndice

Grafo)

Vrtice Vrtice (I,G): Vrtice

Esta operacin devuelve el vrtice que se encuentra en la direccin I


correspondiente a la lista de adyacentes de V. Existir error si I=ndice Nulo o si
G no tiene nodos.
Rtulo Vrtice: (Vrtice
Rtulo_Vrtice

Grafo)

Rtulo_Vrtice Rtulo Vrtice (V, G):

Esta operacin es slo aplicable a grafos con vrtices rotulados. Entrega la


informacin asociada al vrtice V del grafo G. Si G no tiene nodos o si V=Nodo
Nulo se plantea una situacin de error.
Rtulo Arco: (Vrtice
Rtulo_Arco

Vrtice

Grafo)

Rtulo_Arco Rtulo Arco (V1,V2,G)

Esta operacin es slo aplicable a grafos con arcos rotulados. Entrega la


informacin asociada al arco (V1,V2) del grafo G. Si G no tiene nodos o si no
existe el arco (V1,V2) se plantea una situacin de error.
Para ampliar el alcance del TDA permitiendo la creacin y/o modificacin de un
grafo, se incorporan las siguientes operaciones:
Crear Grafo Nulo: Grafo

Grafo Crear Grafo Nulo (G)

Al ejecutarse esta operacin el grafo G queda sin nodos y en condiciones de


recibirlos. Es aplicable a cualquier grafo.
Insertar Vrtice: (Rtulo_Vrtice
Insertar Vrtice (R, G): Vrtice

Grafo)

Grafo

Vrtice

Esta operacin incorpora un nuevo vrtice V en el grafo G. Si se trata de un


grafo con vrtices rotulados, le asocia a V el rtulo R (siempre que se trate de
un grafo con vrtices rotulados, en caso contrario no debera figurar el
argumento R). Devuelve el valor V.
Insertar Arco: (Rtulo_Arco
Vrtice
Insertar Arco (R,V1,V2,G): ndice

Vrtice

Grafo)

Grafo

ndice

5
Julio Cesa NuezTejero

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Esta operacin incorpora un nuevo arco (V1,V2) en el grafo G. Si se trata de un


grafo con arcos rotulados le asocia a dicho arco el rtulo R (siempre que se trate
de un grafo con arcos rotulados, en caso contrario no debera figurar el
argumento R). Devuelve el valor I que es la direccin del vrtice V2, en la lista de
adyacentes a V1 en el grafo G.
Eliminar Vrtice: (Vrtice

Grafo)

Grafo Eliminar Vrtice (V, G)

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)

Grafo Eliminar Arco (V1,V2,G)

Si (V1,V2) es un arco del grafo G entonces esta operacin lo elimina, si no el


grafo G permanece sin modificaciones. Si se trata de un multi-grafo, se deber
incorporar un parmetro ms que permita identificar el arco a eliminar.

6
Julio Cesa NuezTejero

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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:

Matriz de Adyacencia (MA): Se utiliza una matriz de tamao n n donde


las filas y las columnas hacen referencia a los vrtices para almacenar en
cada casilla la longitud entre cada par de vrtices del grafo. La celda MA[i, j]
almacena la longitud entre el vrtice i y el vrtice j. Si su valor es infinito
significa que no existe arista entre esos vrtices, y MA[i, i] = 0.
Lista de Adyacencia (LA): Se utiliza un vector de tamao n (un elemento
por cada vrtice) donde LA[i] almacena la referencia a una lista de los
vrtices adyacentes a i. En una red esta lista almacenar tambin la longitud
de la arista que va desde i al vrtice adyacente.
Existen varias posibilidades a la hora de representar la lista de vrtices:
arrays dinmicos, listas enlazadas o usar una lista de adyacencia aplanada:
Se almacenan todas las listas de manera contigua en un nico vector, VA,
de tamao m, y en el vector LA se almacenan ndices al vector VA. La lista
de adyacencia del vrtice i se encuentra en VA[LA[i] .. LA[i+1]-1]. Esta
representacin es til cuando no se vaya a modificar el grafo.
La eficiencia de las operaciones bsicas en cada representacin es la siguiente:

Operaci
n
Espacio ocupado

Matriz de Adyacencia
(n2)

Longitud entre vrtices / Existencia de O(1)


aristas
Recorrido vrtices adyacentes a i
(n)
Recorrido todas las aristas
Insercin/borrado arista
Insercin/borrado vrtice

(n2)
O(1)
O(n2)

Lista de Adyacencia
(m+n)
O(grado(i))
(grado(i))
(m)
O(grado(i))
O(n)

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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

dichos esquemas se deben completar

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

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Si el grafo tiene los vrtices rotulados, la estructura se debe completar


con un mapeo Vrtice Rtulo_Vrtice.
Si el grafo tiene los arcos rotulados, las componentes de la matriz
adems debern alojar esa informacin.
Si se trata de un multi-grafo, cada una de las componentes [i,j] de la
matriz alojar una lista con los rtulos de los arcos (i,j). Si (i,j) no es un
arco del grafo, la componente [i,j] tendr una lista vaca.
Si se quiere dar cierta flexibilidad a la representacin en relacin con
el nmero de vrtices, puede declararse una matriz ms grande,
siempre guardar el grafo desde la componente [1,1] y completar la
estructura con un cursor al ltimo vrtice. De esta forma se puede
trabajar con operaciones de actualizacin, siempre con la limitacin
que implica un arreglo como estructura subyacente.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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

Si el grafo tiene los vrtices rotulados, la estructura se debe completar


con un mapeo Vrtice Rtulo_Vrtice.
Si el grafo tiene los arcos rotulados, las celdas de las listas de
adyacentes debern alojar dicha informacin.
Para dar cierta flexibilidad a la representacin respecto del nmero de
vrtices, puede declararse un arreglo con ms componentes, siempre
guardar el grafo desde la componente [1] en lugares consecutivos y
completar la estructura con un cursor al ltimo vrtice del arreglo. De
esta forma se puede trabajar con operaciones de actualizacin,
siempre con la limitacin que implica un arreglo como estructura
subyacente.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Lista enlazada de listas de adyacencia


Con el propsito de flexibilizar ms la propuesta anterior, en este caso se
reemplaza el arreglo de vrtices por una lista enlazada de vrtices. Cada celda
tendr un apuntador a la lista de adyacentes correspondiente.
En esta opcin cada vrtice es la direccin de la celda correspondiente en la
lista enlazada de vrtices y los ndices son las direcciones de las celdas de las
listas de adyacentes.
Entonces, para el caso:

El esquema de representacin es:

Si el grafo tiene los vrtices rotulados, la estructura se debe completar


incorporando la informacin en las celdas de la lista de vrtices.
Si el grafo tiene los arcos rotulados, las celdas de las listas de
adyacentes debern alojar dicha informacin.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Para el caso de un grafo no dirigido G, se los representa primero como un grafo


dirigido equivalente G y luego se elige alguna de las estructuras de datos
presentadas anteriormente. G se obtiene a partir de G de la siguiente manera:
Para cada vrtice v de G , v es vrtice de G
Para cada arco (v1,v2) de G se cumple que (v1,v2) y (v1,v2) deben pertenecer a
G
Ejemplo. Dado la siguiente red no dirigida, donde se indican la longitud/coste de
cada arista:
7
3

4
2
5

2
8

Representacin mediante matriz de adyacencia:

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

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Representacin mediante listas de adyacencia: En las listas se almacenan pares


(vrtice adyacente, longitud de arista).
1
2
3
4
5
6
7

(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
)

Representacin mediante listas de adyacencia aplanadas (vector de ndices, LA,


y de adyacencia, VA):
1
1

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
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

La figura 2 muestra algunos de los rboles generadores posibles del grafo de la


figura 1. Todos ellos tienen un peso total de 14.

Figura 2: Algunos rboles generadores mnimos

c3
2
2

d
1

f
e

f
1

4
4

b
c

3
3

2
1

1
e

f
1

2
g

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Antes de explorar los algoritmos de MST, se expondrn algunos hechos


importantes sobre los rboles generadores. Mediante G + e se denotar el grafo
que se obtiene al insertar la arista e en G.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Cualquier par de vrtices de un rbol estn conectados por un camino nico.

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

Sea F1, F2,, Fk un bosque de rboles generadores de G, y sea (u, v) el ms


pequeo de todas las aristas con solamente un punto final u V(F1). Entonces hay
un rbol generador ptimo de entre todos los rboles generadores que
K contiene a (u, v) y que contiene todas las aristas en U E(Fi ) .

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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

F Un bosque formado por las aristas ms pequeos que inciden en cada


vrtice de G
G G\ F
T T F

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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)

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

La figura 3 ilustra la ejecucin del algoritmo de BORVKA sobre el grafo de la figura


1. En la figura 3(a), cada vrtice elegido es la arista ms pequeo que incide si
causar ciclos. En la figura 3(b), los vrtices a, b, c, d, e y f se contraen en un
supervrtice, y los vrtices g y h se contraen en otros supervrtices. En la figura
3(d), los dos supervrtices se contraen en un supervrtice. Todas l a s aristas
contradas constituyen un rbol generador como se muestra en la figura 3(e).
Ntese que en cada paso de Borvka se reduce el nmero de vrtices en un factor
de al menos dos. Por lo tanto, el bucle while se ejecutar al menos O (log n) veces.
En cada iteracin, todas las contracciones se pueden realizar en tiempo O(m). En
total, el algoritmo de Borvka se ejecuta en tiempo O (m log n).

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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).

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Figura 4: Ejecucin del algoritmo de Prim sobre el grafo de la figura 1


a

b
c

5
1

(a) Se aade (a, b)

1
f

b
c

2
g

(b) Se aade (b, d)

d
1

2
5

f
1
1

(c) Se aade (d, e)

f
1

(d) Se aade (d, f)

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

b
c

Estructura de Datos
DES - Ciencias de la Informacin

5
1

2
h

(e) Se aade (f, h)

3
2
d

(f) Se aade (g, h)

2
5

b
c

4
1

4
1

(g) Se aade (b, c)

1
f
2

2 h

(h) rbol generador mnimo

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).

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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:

Una arista (v, w) forma un ciclo si v y w estn en la misma componente conexa.


La relacin estar en la misma componente conexa es una relacin de
equivalencia.
Usamos la estructura de relaciones de equivalencia con punteros al padre:

Inicializacin: crear una relacin de equivalencia vaca (cada nodo es una


componente conexa).
Seleccionar las aristas (v, w) de menor a mayor.
La arista forma ciclo si: Encuentra(v)=Encuentra(w)
Aadir una arista (v, w): Unin(v, w) (juntar dos componentes conexas en
una).

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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).

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Figura 5: Ejecucin del algoritmo de Kruskal sobre el grafo de la figura 1


a

b
c

5
1

(a) Se aade (d, e)

1
f

b
c

2
g

5
1

f
1
1

(c) Se aade (e, f)

(b) Se aade (g, h)

d
1

2
5

2
h

4
f

(d) Se aade (b, d)

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

b
c

Estructura de Datos
DES - Ciencias de la Informacin

5
1

2
h

(e) Se aade (e, g)

(f) Se aade (b, c)

b
3
2

d
1

4
1

1
f

2
5

a
4

b
c

4
1

(g) Se aade (a, b)

e
2

(h) Arbol generador mnimo

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).

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Agrupacin de Datos de Expresin Gentica


Los rboles generadores mnimos tambin proporcionan una manera razonable de
agrupar puntos en el espacio en grupos naturales. Por ejemplo, Ying Xu y sus
colaboradores describen un nuevo marco para representar un conjunto de genes
multi-dimensionales expresando los datos como un rbol generador mnimo. Una
propiedad clave de esta representacin es que la expresin de datos de cada
agrupacin de genes corresponde a un subrbol del MST, el cul rigurosamente
convierte un problema de agrupamiento multidimensional en un problema de
particin del rbol. Ellos han demostrado que aunque en las relaciones entre datos
estn muy simplificadas en la representacin MST, no se pierde informacin
esencial en el caso de agrupaciones. Observaron que hay dos ventajas claves en
la representacin de un conjunto multidimensional de datos sobre un MST. Uno es
que la estructura simple de rbol facilita eficientemente la implementacin con rigor
de algoritmos de agrupacin, los cuales de otra manera exigen mucho esfuerzo
computacional. La otra es que pueden superar muchos de los problemas con los
que se enfrentan los algoritmos de agrupacin clsicos ya que un MST basado en
agrupaciones no depende del detalle de la forma geomtrica de la agrupacin. Una
nueva herramienta de software llamada EXCAVATOR (Expresin data Clustering
Analyse and Visualization Resource) se ha desarrollado basndose en este nuevo
marco. Los resultados del agrupamiento sobre datos de expresin gentica (1) de
levadura de cerveza (2) en la respuesta de los fibroblastos humanos al suero (3)
Arabidopsis en respuesta a la obtencin de quitina es muy prometedor.

Aproximaciones Basadas en MST


La construccin del rbol generador mnimo (MST) de un grafo es el primer paso
para la obtencin de soluciones aproximadas a otros problemas. Un ejemplo es el
Problema del Viajante (TSP). El enunciado es: Dado G, grafo completo con pesos
en las aristas, se desea hallar un ciclo hamiltoniano, es decir que pase una vez por
cada vrtice, de peso mnimo. Este problema se clasifica como NP-Completo
incluso cuando la funcin de peso satisfaga la desigualdad triangular, por ejemplo,
para todos los vrtices x, y, z V, w(x, z)
w(x, y) + w(y, z). La desigualdad
triangular se presenta en muchas situaciones prcticas. Se puede ver que la
estrategia siguiente ofrece un algoritmo aproximado con factor 2 de aproximacin
para el problema del vendedor viajante con la desigualdad triangular. Primeramente,
se encuentra un rbol generador mnimo T para el grafo dado. Luego se dobla el
MST y se construye un trayecto T. Finalmente, se aaden atajos para que ningn
vrtice sea visitado ms de una vez, lo cual se hace recorriendo en rbol en
preorden. El camino resultante tiene longitud de no ms de dos veces el ptimo.
Ms adelante se ver que las aproximaciones basadas en MST proporcionan una
buena aproximacin para los problemas de rboles de Steiner.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

RBOL GENERADOR MXIMO (MaxST)


Para algunos problemas prcticos, es necesario considerar los rboles generadores
mximos: Si queremos determinar un rbol generador cuyo peso es mximo entre
todos los rboles generadores para una red (G, w) dada. Evidentemente, un rbol
generador T para (G, w) es mximo si y slo si T es mnimo para para (G, -w). De
ah que se pueda encontrar un rbol generador mximo reemplazando w por w y
utilizando uno de los algoritmos de Prim, kruskal o Borvka. Alternativamente, se
podra tambin quedarse con w y solamente reemplazar mmino por mximo en los
algoritmos de Prim, Kruskal o Borvka. Para el algoritmo de Kruskal, se necesita
ordenar las aristas en orden decreciente de pesos.

Ejemplo de aplicacin del algoritmo de MaxST


Se considera el problema de enviar informacin confidencial a n personas. Se define
un grafo G con n vrtices correspondiente a n personas; dos vrtices i y j son
adyacentes si es posible enviar informacin directamente desde i a j. para cada
arista ij, sea pij la probabilidad de que la informacin enviada sea oda por
casualidad; supongamos que estas probabilidades son independientes para cada
uno. Ahora se sustituye qij = 1 pij, es decir, por la probabilidad de que la
informacin enviada no sea escuchada por casualidad. A fin de enviar informacin
a todas las n personas, se busca un subgrafo generador de G para el que la
produccin de los qij (sobre las aristas que inciden en el subgrafo) es mxima.
Reemplazando qij por w(ij) = log qij se reduce el problema a encontrar un rbol
generador de mximo peso.

Problema de la Fiabilidad de la Red


Se consideran los vrtices del ejemplo anterior como los nodos de una red de
comunicacin y sea interpretado pij como la probabilidad de que la conexin entre
i y j falle. Entonces un rbol generador mximo es un rbol en que maximiza la
probabilidad de que la comunicacin no sea interrumpida entre todos los nodos de
la red.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Problema del Cuello de Botella


Sea (G, w) una red, donde G es un grafo conexo, y sea

e1
W

=
V0

V1

e2

V2

en

Vn ,

Un camino. Entonces c(W) = min {w(ei): i = 1, , n} se le llama capacidad del camino


W. Para cada par de vrtices (u, v) de G, se quiere determinar el camino de u a v
con mxima capacidad.
El siguiente teorema de Hu reduce el problema del cuello de botella a encontrar un
rbol generador mximo. As, los algoritmos de Prim, Kruskal y Borvka
modificados para encontrar el rbol generador mximo- se pueden utilizar para
resolver el problema del cuello de botella.

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.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

RBOLES DE CAMINO MNIMO


Se considera una red no dirigida y conexa con un nodo especial llamado origen o
raz. A cada arista se le asocia una distancia, un nmero no negativo. El objetivo es
encontrar el conjunto de aristas que conecten todos los nodos tal que la suma de
las longitudes de las aristas desde el origen a cada nodo es mnimo. Le llamamos
rbol de camino mnimo (SPT) que tiene como raz el origen.
Para minimizar las longitudes totales de los caminos, el camino desde la raz a cada
nodo debe ser el camino de conexin mnimo. De otra manera, se sustituye tal
camino por el camino mnimo y se consigue un rbol generador menos pesado
cuyas longitudes totales del camino desde la raz a todos los nodos son ms
pequeas. MST no siempre es un rbol de caminos mnimos.
Los rboles de caminos mnimos no son necesariamente nicos. La figura 1 muestra
dos rboles de camino mnimo con origen el vrtice a para el grafo de la figura 0. La
figura 1(a) va desde a a g, y luego desde g a e. En la figura 1(b), se va desde a a b,
desde b a d, y desde d a e. Todos estos caminos son de longitud 7, que es la longitud
del camino mnimo de a a e. Ntese que el peso total de las aristas de los dos
rboles de camino mnimo puede que no sea la misma. Por ejemplo, el peso total
de las aristas del rbol de camino mnimo en la figura 1(a) es 18, mientras que el
rbol de caminos mnimos en la figura 1(b) es 17. (El peso total de las aristas del
rbol generador mnimo es 14).
Siempre y cuando todos los pesos de las aristas sean no negativos, el rbol de
camino mnimo est bien definido. Desafortunadamente, las cosas se complican
cuando se tienen aristas con pesos negativos. Para un grafo no dirigido, un camino
se vuelve mnimo cuando repetidamente se aade una arista con peso negativo a
l. En esta situacin, un camino mnimo que contiene una arista con peso negativo
no est bien definido ya que siempre se puede encontrar un camino con menor
peso yendo hacia atrs y as sucesivamente sobre aristas de peso negativo. Se
considera la arista de la figura 2. En este grafo, la arista (d, e) tiene peso negativo.
Como en un grafo no dirigido una arista puede ser atravesado en ambos sentidos,
un camino que repetidamente utiliza (d, e) reducir su longitud. Sin embargo, para
un grafo dirigido, siempre y cuando no existan ciclos con peso negativo que se
puedan alcanzar desde la raz, los pesos del camino mnimo estn bien definidos.
As, cuando se habla sobre tpicos relacionados con
caminos
mnimos,
habitualmente se centran en resolver problemas sobre grafos dirigidos. Sin
embargo, la mayor parte de los algoritmos pueden ser fcilmente adaptados a
grafos no dirigidos.
A continuacin se describen algoritmos para construir rboles de caminos mnimos.
El algoritmo de Dijkstra asume que todos los pesos del grafo son no negativos. Sin
embargo, el algoritmo de Bellman-Ford permite pesos negativos en las aristas del
grafo. Si no hay ciclo con pesos negativos, el algoritmo de Bellman- Ford genera el
camino mnimo y sus pesos. De lo contrario, el algoritmo detecta ciclos negativos e

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

indica que no existe solucin.

Figura 0: Ejemplo de grafo no dirigido y con pesos


a

2
d

5
1

4
1

Figura 1: rboles de caminos mnimos con raz en el vrtice a para el grafo de la


figura 0.
a

4
c

5
1
2
g

f
1

h
(a)

4
1

f
1

h
(b)

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Figura 2: Grafo no dirigido con una arista con peso negativo.

3
2

-1
e
2

4
f

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

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

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

[v] > [u] + w(u, v) entonces


[v] [u] + w(u, v)
[v] u
Ejemplo:
Figura 3: Grafo dirigido y con pesos
a4

1
d

5
1

e
2

4
f

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Figura 4: Se elige el vrtice a, y las aristas (a, b) y (a, g) se expanden.

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

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Figura 6: Se elige el vrtice g, y las aristas (g, e) y (g, h) se expanden. La arista


(a, g) se aade al rbol de camino mnimo.

c
7

1
d

1
e

4
1
f

Figura 7: Se elige el vrtice d, y la arista (d, e) se expande. La arista (b, d) se


aade al rbol de camino mnimo.
a

c
7

1
e

1
d

1
f

1
1

h
6

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Figura 8: Se elige el vrtice h. La arista (g, h) se aade al rbol de camino mnimo.


a

c
7

1
d

1
e

1
f

2 h

Figura 9: Se elige el vrtice e, y la arista (e, f) se expande. La arista (d, e) se aade


al rbol de camino mnimo.
a

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

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Figura 14: Fallo con el algoritmo de Dijkstra.


a

c2

1
d

4
1

-3

f
2
6

Figura 15: rbol de camino mnimo errneo.


a

2
1
d

5
1
e

g
1
Figura 16: rbol de camino mnimo correcto.
a

c2

1
d

5
e
-3

f
2

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Se considera el grafo de la figura 3. La siguiente figura ilustra como funciona el


algoritmo de Dijkstra al construir el rbol de camino mnimo con raz en el vrtice
a. Inicialmente, todos los valores
[.] son , excepto
[a] = 0. El conjunto S
contiene todos los vrtices del grafo. El vrtice a, que se muestra como vrtice
sombreado en la figura 4, tiene el mnimo valor y se elige como vrtice u en el
bucle while. Se elimina a de S. Entonces las aristas (a, b) y (a, g), que se muestran
con lneas de puntos, se expanden.
En la figura 5, el vrtice sombreado b tiene el mnimo valor entre todos los vrtices
de S y se elige como vrtice u en el bucle while. Se elimina b de S. La arista en
negro (a, b) se aade al rbol de camino mnimo que se est construyendo, y las
aristas (b, c) y (b, d) se expanden.
Ambos vrtices d y g en la figura 6 tienen el mnimo valor entre todos los vrtices
de S. Se elige g como vrtice u en el bucle while. Se elimina g de S. La arista en
negro (a, g) se aade al rbol de camino mnimo, y las aristas con lneas
discontinuas (g, e) y (g, h) se expanden.
Dado que el vrtice d en la figura 7 tiene un valor mnimo entre todos los vrtices
de S, se elige el vrtice u en el bucle while. Se elimina d de S. La arista en negro
(b, d) se aade al rbol de camino mnimo, y la arista (d, e) con lneas discontinuas
se expande.
Ambos vrtices e y h en la figura 8 tienen el mnimo valor entre todos los vrtices
de S. Ahora se elige h como vrtice u en el bucle while. Se elimina h de
S. La arista en negro (g, h) se aade al rbol de camino mnimo. Ninguna arista se
expande.
Ahora el vrtice e en la figura 9 tiene el mnimo valor entre todos los vrtices de
S. Se elige u como vrtice en el bucle while. Se elimina e de S. La arista en negro
(d, e) se aade al rbol de camino mnimo que se est construyendo y la arista de
lneas discontinuas (e, f) se expande.
Ambos vrtices c y f en la figura 10 tienen el mnimo valor entre todos los vrtices
de S. Se elige c como vrtice u en el bucle while. Se elimina c de S. La arista en
negro (b, c) se aade al rbol de camino mnimo y la arista de lneas discontinuas
(c, h) se expande.
Ahora el vrtice f es el nico vrtice en S (figura 11), y se elige como vrtice u en el
bucle while. Se elimina f de S. La arista en negro (e, f) se aade al rbol de camino
mnimo, y las aristas (f, d) y (f, h) con lneas discontinuas se expanden.
En la figura 12 se muestra el rbol de camino mnimo construido mediante el
algoritmo de Dijkstra.
Se puede observar en el ejemplo anterior que una vez que el vrtice se elimina de
S, su valor permanece invariable. Esto es cierto siempre y cuando todos los pesos

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

de las aristas sean no negativos. El fundamento detrs de esto es muy directo


porque siempre se elige el vrtice en S con el mnimo valor . Sin embargo, esto
puede no mantenerse en grafos dirigidos con pesos negativos entre aristas.
El algoritmo de Dijkstra selecciona el vrtice u S con el mnimo camino mnimo
estimado y reevala el camino mnimo estimado para todos los vrtices adyacentes
a u. En el caso peor, la complejidad mediante el algoritmo de Dijkstra depende de
la manera de encontrar el nodo con el mnimo camino mnimo estimado. Una
implementacin sencilla que examina todos los nodos de S para
Encontrar la mnima ejecucin en tiempo O(n2). Una modificacin del algoritmo de
Dijkstra, donde el mnimo se puede encontrar usando pilas binarias con tiempo
O(log n), por lo que el tiempo de la ejecucin total es del orden de O(m log n).
Usando pilas de Fibonacci, se puede conseguir un tiempo de ejecucin del orden
de O(m + n log n).
La figura 13 muestra un ejemplo de un grafo no dirigido con aristas con peso
negativo que para el que el algoritmo de Dijkstra produce una respuesta incorrecta.
Al aplicar el algoritmo de Dijkstra al grafo de la figura 13, se alcanzar el estado que
se muestra en la figura 14. Dado que la arista (g, e) es de peso negativo -3, el peso
del camino (a, g, e) es 5 - 3 = 2. El cual es mejor que el peso del camino mnimo
final (a, b, d, e), que es de peso total 4. Adems, la arista (e, f) se ha expandido. No
hay manera mediante el algoritmo de Dijkstra de volver a expandir todas las aristas
afectados por un efecto domin.
El grafo del la figura 15 muestra el rbol de camino mnimo errneo que se ha
obtenido mediante el algoritmo de Dijkstra. Ntese que (g, e) es de peso negativo,
y est ausente en el rbol de camino mnimo construido mediante el algoritmo de
Dijkstra.
El rbol de camino mnimo correcto se muestra en la figura 16.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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

[v] [u] + w(u, v)


[v] u
Para cada (u, v) E hacer
Si [v] > [u] + w(u, v) entonces Output
Existe un ciclo negativo Exit

T
Para cada v V s hacer
T T {( [v], v)}

El algoritmo de Bellman-Ford se ejecuta en tiempo O(m n) ya que hay O(n)


iteraciones, y cada iteracin se realiza en tiempo O(m). La correccin obedece al
hecho de que en la iteracin kesima, el camino mnimo estimado para cada vrtice
es igual a la longitud del camino mnimo desde el origen a ese vrtice con k aristas
como mximo. Ya que un camino simple en G contiene al menos n-1 aristas, el
camino mnimo estimado se estabiliza despus de n-1 iteraciones a menos que
exista un ciclo negativo en el grafo.
Las siguientes figuras muestran cmo funciona la ejecucin del algoritmo de
BELLMAN-FORD. En la figura 13, las aristas con lneas oscuras registran que

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

aquellos que causan algn efecto en la generacin. Inicialmente, [a] = 0. En la


figura 17, la generacin de la arista (a, b) cambia [b] de a 2; y la generacin de
la arista (a, g) cambia [g] de a 5. El camino mnimo estimado [a], [b] y [g]
estn finalizados. El camino mnimo estimado
[c], [d], [e], [f] y [h] son
todava ya que sus correspondientes vrtices no pueden ser alcanzados desde el
vrtice a por un camino con slo una arista.
En la figura 18, la generacin de la arista (b, c) cambia [c] de a 4; la generacin
de la arista (b, d) cambia [d] de a 3; la generacin de la arista (g,
e) cambia [e] de a 2; y la generacin de la arista (g, h) cambia [h] de a 6.
Hasta esta etapa, el camino mnimo estimado [a], [b], [c], [d], [e] y [g]
estn finalizados. El camino mnimo estimado [f] es todava ya que el vrtice f
no puede ser alcanzado desde el vrtice a por un camino con al menos dos aristas,
y el camino mnimo estimado [h] ser modificado posteriormente.
En la figura 19, la generacin de la arista (e, f) cambia [f] de a 3. En la figura
20, la generacin de la arista (f, h) cambia [h] de 6 a 5.
La figura 21 muestra el rbol final de camino mnimo construido mediante la
aplicacin del algoritmo de Bellman-Ford.

Ejemplo:
Figura 17: Los caminos mnimos estimados
a

[b] y [g] se modifican.

5
1
e

g
5

-3

4
1

1
1

f
2

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Figura 18: Los caminos mnimos estimados


modifican.
a

[c],

[d],

1
5

-3

f
2

5g

Figura 19: El camino mnimo estimado

6h

[f] se modifica.

1
5

4
1

e
2

-3

f
2

Figura 20: El camino mnimo estimado

c2

1
5

4
1

-3
5g

[h] se modifica.

f
2

5h

[e]

[h] se

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Figura 21: rbol de camino mnimo construido mediante el algoritmo de BellmanFord.

c2

1
5

1
e

g5

-3

4
1
3

f
2

h
5

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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)).

Por lo tanto, podemos definir caminoMinimo(i,j,k) de forma recursiva:


caminoMinimo(i, j, k) = min(caminoMinimo(i, j, k-1),
caminoMinimo(i, k, k-1) + caminoMinimo(k, j, k1)); caminoMinimo(i, j, 0) = pesoArista(i, j);

Esta frmula es la base del algoritmo Floyd-Warshall. Funciona ejecutando primero


caminoMinimo(i,j,1) para todos los pares (i,j), usndolos para despus hallar
caminoMinimo(i,j,2) para todos los pares (i,j)... Este proceso contina hasta que k =
n, y habremos encontrado el camino mnimo para todos los pares de vrtices (i,j)
usando algn vrtice intermedio.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

Estructura de Datos
DES - Ciencias de la Informacin

Algoritmo Warshall Floyd


Convenientemente, cuando calculamos el k-esimo caso, se puede sobrescribir la
informacin salvada en la computacin k -1. Esto significa que el algoritmo usa
memoria cuadrtica. Hay que cuidar la inicializacin de las condiciones:
/* Suponemos que la funcin pesoArista devuelve el coste del camino que va de i a
j (infinito si no existe).
Tambin suponemos que n es el nmero de vrtices y pesoArista(i,i) = 0 */
int camino[ ][ ];
/* Una matriz bidimensional. En cada paso del algoritmo, camino[i][j] es el camino
mnimo de i hasta j usando valores intermedios de (1k-1). Cada camino[i][j] es
inicializado a pesoArista(i,j) */

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]);

Comportamiento con Ciclos Negativos


Para que haya coherencia numrica, Floyd-Warshall supone que no hay ciclos
negativos (de hecho, entre cualquier pareja de vrtices que forme parte de un ciclo
negativo, el camino mnimo no est bien definido porque el camino puede ser
infinitamente pequeo). No obstante, si hay ciclos negativos, Floyd-Warshall puede
ser usado para detectarlos. Si ejecutamos el algoritmo una vez ms, algunos
caminos pueden decrementarse pero no garantiza que, entre todos los vrtices,
caminos entre los cuales puedan ser infinitamente pequeos, el camino se reduzca.
Si los nmeros de la diagonal de la matriz de caminos son negativos, es condicin
necesaria y suficiente para que este vrtice pertenezca a un ciclo negativo.

Universidad Autnoma del Carmen


Ciudad del Carmen, Campeche
Campus I

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.

Aproximaciones Basadas en SPT


Adems de las aplicaciones a problemas de ruteo en redes, los algoritmos de
rboles de caminos mnimos podran tambin servir como una buena aproximacin
para algunos problemas NP-Completos. Por ejemplo, para rboles de caminos
mnimos con raz en algn vrtice es una 2-aproximacin para el problema del rbol
generador con coste mnimo de ruteo (MRCT), el cual es un problema NP-Completo.

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

Vous aimerez peut-être aussi