Sei sulla pagina 1di 127

INTRODUCCIÓN A LA

TEORÍA DE GRAFOS
Primera Edición

c
Derechos reservados
Reproducido y editado por Ediciones Elizcom
Primera edición, diciembre del 2010
200 ejemplares
ISBN: 978-958-99325-7-5
www.elizcom.com
ventas@elizcom.com
Cel: 3113340748
Armenia, Quindío
Contenido

PRÓLOGO iii

1. GRAFOS 1
1.1. Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Representación de un Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3. Matriz de Adyacencias de un Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4. Lista de Adyacencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5. Coeficiente de estabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2. RELACIONES Y GRAFOS 17
2.1. Relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2. Matriz de una Relación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3. Gráfica de una Relación ℜ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4. Propiedades de una Relación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5. Operaciones entre Relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.6. Producto Lógico de Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.7. Trayectorias y Relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.8. Algoritmo de Warshall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3. CONEXIDAD 39
3.1. Grafo Conexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2. Algoritmo para Conexidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3. Algoritmo para Grafos no Dirigidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

4. CIRCUITO EULERIANO 45
4.1. Circuito de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1.1. Puentes de Königsberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.2. Algoritmo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5. CICLO HAMILTONIANO 53
5.1. Ciclo de Hamilton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2. Algoritmo Hamiciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3. Problema del Agente Viajero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.4. Algoritmo del Vecino más Cercano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6. LA TRAYECTORIA MÁS CORTA 61


6.1. Trayectoria Mínima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.2. Algoritmo del Camino Mínimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.3. Trayectoria del Valor Mínimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.4. Algoritmo de DIJKSTRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6.5. Algoritmo de Floyd-Warshall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.6. Algoritmo Matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.7. La Trayectoria Óptima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
i
ii CONTENIDO

7. ÁRBOLES 83
7.1. Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.2. Subárboles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7.3. Árbol Binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7.4. Árboles Etiquetados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.5. Árbol Posicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
7.6. Otras Formas de Árboles Ordenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.7. Representación Matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7.8. Representación Secuencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.9. Representación Enlazada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
7.10. Conversión de un Árbol General a Binario . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.11. Recorrido de un Árbol Binario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.12. Notación Polaca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.13. Búsqueda y Ordenamiento con Árboles Binarios . . . . . . . . . . . . . . . . . . . . . . . . 101

8. ÁRBOLES NO DIRIGIDOS 107


8.1. Árbol No Dirigido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
8.2. Árbol Generado de Relaciones Conexas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
8.3. Árbol Generador de Mínimo Peso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.4. Algoritmo de Prim (Robert C. Prim, 1957) . . . . . . . . . . . . . . . . . . . . . . . . . . 110
8.5. Algoritmo de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
8.6. Árbol Generador de Mínima Distancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.7. Algoritmo de Dijkstra (Árbol de mínima distancia) . . . . . . . . . . . . . . . . . . . . . . 113

A. Caicedo B., G. Wagner de G., R. M. Méndez


PRÓLOGO

La Matemática Discreta y una de sus áreas principales como es la teoría de grafos ocupan hoy en día
un lugar muy importante entre los conocimientos básicos que deben adquirir las personas que se dedican
al estudio de las ciencias de la computación, las matemáticas aplicadas, la teoría de la optimización, la
planeación estratégica, etc. Además la Teoría de Grafos puede servir para el modelamiento de sistemas,
la simulación, la estructuración de datos y el análisis y diseño de algoritmos.

Este libro pretende ser una guía introductoria para un segundo curso de matemáticas discretas, con
una duración de un semestre y en efecto se ha elaborado con base al programa curricular de Matemáticas
Discretas II (Teoría de Grafos) de la carrera de Ingeniería de Sistemas de la Universidad del Quindío. Se
ha experimentado durante varios semestres con los estudiantes de dicha disciplina y se ha complementado
con las notas de clase de estos cursos.

El tema central del libro es una introducción a la teoría de grafos, considerando los grafos y los ár-
boles como una estructura dinámica que puede aplicarse en la solución de problemas prácticos y a la
creación de algoritmos aplicables a la estructuración de datos.

Aunque el curso cubre varios temas, se ha limitado mucho el contenido de cada capítulo y su pro-
fundidad se ha moderado para que sea apenas un curso introductorio a nivel de pregrado. Se han omitido
las pruebas y demostraciones de teoremas para agilizar más el aprendizaje.

El material de cada capítulo se ha complementado con suficientes ejemplos y gráficas para aclarar un
poco el carácter abstracto de la teoría. Al final de cada capítulo se incluye un grupo de ejercicios que
ayudarán a reforzar los conocimientos adquiridos.

Los Autores, Diciembre de 2010.

iii
iv PRÓLOGO

A. Caicedo B., G. Wagner de G., R. M. Méndez


ulo
pít
Ca

1 GRAFOS

Los grafos se presentan con frecuencia en la vida real, tal es el caso de una red de carreteras
que enlace un cierto grupo de ciudades; aquí los nodos de la red o ciudades representan los
vértices del grafo, las carreteras que unen las ciudades representan los arcos o aristas; así
a cada arco se asocia una información tal como la distancia entre ciudades, consumo de
gasolina, costo de mantenimiento, etc.

b b b
Los grafos son una estructura de datos no lineal, la cual se
b puede usar para modelar diversas aplicaciones. Es una parte
b b
b b
importante de la Teoría Combinatoria en Matemáticas, lo
que le da un carácter bastante amplio y complejo. En esta
b
b unidad sólo se hará una introducción a los conceptos básicos
b
de la teoría de grafos y a los algoritmos que permiten su
aplicación a problemas prácticos.

1.1 Conceptos Básicos

Definición 1.1 Grafo


Un grafo G consta de un conjunto de vértices o nodos V y un conjunto de arcos A, cada uno de
los cuales une un vértice con otro.
G = (V, A) = (N, A)

Los arcos que unen los nodos también se llaman aristas del grafo y se representan por medio de un par
de elementos, (vi , vj ), donde los elementos son los nodos que une el arco.

Definición 1.2 Grafo Dirigido


Si en un grafo los arcos tienen una dirección, el grafo se llama grafo dirigido u orientado.

En un grafo orientado cada arco se representa por medio de un par ordenado (vi , vj ) donde el primer
elemento es el nodo origen o fuente y el segundo es el nodo destino de ese arco, por lo tanto se puede
decir que el arco va desde vi hasta vj y que vj es adyacente a vi . Un grafo orientado también se llama un
digrafo. Si los arcos del grafo no indican una dirección, el grafo es no dirigido y en él cada arco se puede
representar nombrando los nodos que lo forman sin importar el orden es decir:

(vi , vj ) = (vj , vi )

1
2 GRAFOS

Ejemplo 1
La figura 2. muestra dos grafos, el primero no dirigido y el segundo un digrafo, ambos, de 4 nodos y
5 arcos. b b b b

b b b b

Figura 2. Grafo dirigido y no dirigido

Los nodos de un grafo se pueden usar para representar los objetos y los arcos para representar relaciones
entre esos objetos. En el ejemplo anterior los nodos podrían ser ciudades y los arcos las rutas aéreas entre
esas ciudades. A los nodos y arcos de un grafo se pueden asignar nombres o valores (etiquetas), creándose
así lo que se llama un grafo etiquetado.

Definición 1.3 Orden de un Grafo

El número de nodos de un grafo se llama orden del grafo y se denota como:


ord(g) = |N (G)| = N
El número de aristas o arcos es |A(g)| = A =talla de G = e(G)
Otra notación: Gn =grafo de orden n. G(n, m) =grafo de orden n y talla m

Definición 1.4 Grado de un Vértice


El grado de un vértice x es el número de vértices adyacentes a él, esto es, el número de arcos
incidentes a x y se denota grad(x).

Ejemplo 2

v1 v2 v3

grad(v1 ) = 2 grad(v2 ) = 0 grad(v3 ) = 4

A continuación enunciaremos un teorema que relaciona el número de aristas de un grafo con el orden de
los vértices de este; además se da uno de los conceptos más importantes en el estudio de los grafos como
es el de la trayectoria.

Teorema 1

Si N (G) = x1 , x2 , ..., xn ; entonces,


grad(x1 ) + . . . + grad(xn ) = 2A.
Donde A es el número de aristas incidentes

A. Caicedo B., G. Wagner de G., R. M. Méndez


Conceptos Básicos 3

Definición 1.5 Trayectoria


Una trayectoria T en un grafo es una secuencia de nodos v1 , v2 , . . . , vn tal que (v1 , v2 ) ,
(v2 , v3 ) , . . . , (vn−1 , vn ) son arcos.

Cuando el grafo no tiene valores asociadas a sus arcos, la longitud de la trayectoria es el número de arcos
que la componen.

Ejemplo 3
En la figura 3 la secuencia 1 − 2 − 4 es una trayectoria de longitud 2, y la secuencia 1 − 3 − 5 − 2 − 4
es una trayectoria de longitud 4.
1 2

3 4

Figura 3. Trayectoria de un grafo

Cuando los vértices de una trayectoria son todos distintos, excepto posiblemente el primero y el último,
la trayectoria se define como una trayectoria simple. Una trayectoria que comienza y termina en el mismo
nodo se llama un ciclo o circuito. Los ciclos de longitud 1 se llaman bucles o lazos porque salen de un
nodo e inciden en el mismo nodo sin pasar por ningún otro.

Ejemplo 4
a
e1
e3 e7
e6
b e4 d e

e2
e5

c
Figura 4. Digrafo etiquetado

El grafo de la figura 4 es un digrafo etiquetado. La trayectoria b − c − d − b es un ciclo y a la vez una


trayectoria simple. Este ciclo también se puede nombrar usando las etiquetas de los arcos: e2 , e5 , e3 o
por medio de las parejas de nodos que forman los arcos: (b, c) , (c, d) , (d, b) . El arco e7 es un bucle.
Los arcos e3 y e4 se llaman paralelos.

Definición 1.6 Grafo Acíclico


Un grafo G es acíclico si no contiene ciclos.

Los digrafos acíclicos son usados para modelar situaciones de conjuntos de tareas que necesitan tener una
secuencia particular y donde es importante que no existan ciclos puesto que una tarea en un ciclo estaría
precedida de sí misma, es decir, que se repetiría.
A. Caicedo B., G. Wagner de G., R. M. Méndez
4 GRAFOS

Ejemplo 5
La siguiente tabla es una lista parcial de tareas para construir una casa. Para cada tarea T , la segun-
da columna muestra aquellas arcos que deben ser completadas antes que T pueda ser comenzada.
Construir un digrafo para mostrar la relación entre las tareas.

Tareas Prerrequisitos
1. Hacer cimientos Ninguno
2. Adicionar piso base 1
3. Hacer columnas 1
4. Levantar paredes y techo 2y3
5. Adicionar cielo raso 4
6. Instalar plomería 4
7. Instalar redes eléctricas 4y5
8. Pegar piso 4y6
9. Instalar puertas 4y8
10. Pintar paredes interiores 4, 7, 8 y 9
11. Pulir piso 10

1 2 3 5 7

4 6 8

9 10 11

Figura 5. Digrafo acíclico de tareas

El grafo resultante se muestra en la figura 5.

Determinar si un digrafo es acíclico es equivalente a encontrar un etiquetamiento consistente para el


digrafo. Un etiquetamiento consistente es una forma de numerar los nodos en forma tal que cada nodo
tenga un número más bajo que cualquier nodo que él preceda.

Definición 1.7 Etiquetamiento consistente


Sea G = (N, A) un digrafo. Sea {n1 , n2 , . . . , nn } un etiquetamiento de los nodos. El etiquetamiento
es consistente si (ni , nj ) ∈ A ⇒ i < j.

Un digrafo puede tener varios etiquetamientos consistentes diferentes.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Conceptos Básicos 5

Teorema 2

Sea G = (N, A) un digrafo. G tiene un etiquetamiento consistente si y solo si G es acíclico.

Prueba

La demostración en el primer sentido se puede hacer en la siguiente forma: supóngase que el


digrafo G tiene un etiquetamiento consistente n1 , n2 , . . . , nn . Si existe un ciclo ni1 , ni2 , ..., nik
se debe tener que i1 = ik y que i1 < i2 < . . . < ik , pero esto es una contradicción, entonces G
no puede tener un ciclo.

Para la demostración en el otro sentido se parte del supuesto de que el digrafo es acícli-
co y se usará un algoritmo llamado algoritmo del Ordenamiento Topológico para construir
el etiquetamiento consistente. El algoritmo parte del hecho de que un digrafo debe tener
una fuente; la metodología del algoritmo consiste en etiquetar el conjunto de fuentes y luego
removerlas de su consideración, luego será etiquetado el siguiente nivel de fuentes y así
sucesivamente. Eventualmente se presentará una de las siguientes situaciones: o todos los nodos
han sido etiquetados sucesivamente o permanecen nodos sin etiquetar que no son fuentes,
implicando que el digrafo contiene un ciclo, lo cual contradice el supuesto.

Algoritmo de Etiquetamiento Topológico

Hacer A(n) conjunto de antecedentes de n. Hacer S conjunto de nodos no etiquetados cuyos conjuntos
de antecedentes sea vacío.

begin
Para n ∈ N hacer
computar A(n)
etiqueta = O
Mientras S 6= ∅ hacer
begin
etiqueta = etiqueta +1
n = nodo con A(n) = ∅
asignar la etiqueta a n y sacarlo de consideración. Establecer a S
Para cada nodo no etiquetado u ∈ N , hacer
A(u) = A(u) − {n}
end
Si todos los nodos no están etiquetados entonces
reportar: "hay un ciclo en el digrafo".
end.

A. Caicedo B., G. Wagner de G., R. M. Méndez


6 GRAFOS

Ejemplo 6
Aplicar el algoritmo del ordenamlento topológico al siguiente digrafo para obtener un etiquetamiento
consistente.

2 3

1 4

6 5

Figura 6.

Solución

1. Computar los conjuntos de antecedentes A(n) para cada n ∈ N A(1) = ∅, A(2) = {1}, A(3) =
{2, 4}, A(4) = {1, 2, 6}, A(5) = {4, 6}, A(6) = {1}. Etiqueta = 0. S = {1}, S 6= ∅.

2. Desarrollar el bucle principal:

a) n = 1. Etiquetar 1 con E(1) y sacarlo de consideración. S = {2, 6}. Computar nuevo


conjunto de antecedentes: para todo u no etiquetado hacer A(u) = A(u) − {n} A(2) =
∅, A(3) = {2, 4}, A(4) = {2, 6}, A(5) = {4, 6}, A(6) = ∅
b) n = 6 Etiquetar 6 con E(2) y sacarlo de consideración. S = {2}. Computar nuevo conjunto
de antecedentes: A(2) = ∅, A(3) = {2, 4}, A(4) = {2}, A(5) = {4}
c) n = 2 Etiquetar 2 con E(3) y sacarlo de consideración. S = {4}. Computar nuevo conjunto
de antecedentes: A(3) = {4}, A(4) = ∅, A(5) = {4}.
d ) n = 4 Etiquetar 4 con E(4) y sacarlo de consideración. S = {3, 5}. Computar nuevo
conjunto de antecedentes: A(3) = ∅, A(5) = ∅.
e) n = 3 Etiquetar 3 con E(5) y sacarlo de consideración. S = {5}. Computar nuevo conjunto
de antecedentes: A(5) = ∅
f ) n = 5 Etiquetar 5 con E(6) y sacarlo de consideración. S = ∅

3. Todos los nodos están etiquetados. Parar.

Definición 1.8 Grafo Simple

Un grafo G se denomina simple o sencillo si cumple:

1. No tiene lazos.

2. No existe más que que un arco para cada par de nodos j

Un grafo que no es sencillo se le llama grafo múltiple o multigrafo.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Conceptos Básicos 7

b b

b b b

b b

Figura 7. a) Grafo Simple b) Grafo Múltiple

Definición 1.9 Grafo Completo


Es aquel en el que cada par de nodos distintos están unidos por un arco o cualquier nodo está unido
a todos los otros.

Un grafo completo con r nodos es llamado un r-grafo y se acostumbra notarlo con Kr .

Ejercicio 1
Graficar los siguientes grafos: K1 , K2 , K3 , K4 , K5 y K6

Teorema 3

r(r − 1)
Un r-grafo no dirigido contiene exactamente arcos.
2

Prueba

En Kr cada nodo tiene grado r − 1. Luego la suma de los grados es:

grad(x1 ) + ... + grad(xr ) = r(r − 1) = a un número par

r(r − 1)
Por el teorema 1, esta suma también es igual a 2A. Por lo tanto 2A = r(r − 1) y A =
2

Corolario
Para cada grafo Kr no dirigido se cumple que:
N (N − 1)
A≤
2

Definición 1.10 Grafo Regular


Un grafo en el cual cada nodo tiene grado r se llama regular de grado r o r-regular.

A. Caicedo B., G. Wagner de G., R. M. Méndez


8 GRAFOS

Ejercicio 2
1. Trazar dos grafos 3-regular con 6 nodos

2. Trazar los siguientes grafos:


a) 0-regular
b) 1-regular
c) 2-regular

Teorema 4

Un grafo regular debe tener un número par de nodos

Prueba

Sea S=suma de los grados del grafo r-regular con n nodos,


S = grad(x1 ) + grad(x2 ) + · · · + grad(xn ) = n · r = #par
⇒ nr = #par ⇒ si r es impar, n es par

Teorema 5

En un grafo no dirigido de n nodos, el número de nodos de grado impar es par

Ejemplo 7
b b b

b b b

1.2 Representación de un Grafo

Existen diversas formas de representar un grafo dirigido o no-dirigido, pero entre ellas las más usadas
y fáciles de implementar por computador son: la matriz de adyacencias y la lista de adyacencias. Esta
última es la más conveniente para efectos de computación puesto que opera más rápido y ocupa menos
memoria.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Matriz de Adyacencias de un Grafo 9

1.3 Matriz de Adyacencias de un Grafo

Sea G = (N, A) un grafo de n nodos. La Matriz de Adyacencias M para G es una matriz Mnxn de valores
booleanos, donde M (i, j) es verdad si y solo si existe un arco desde el nodo i al nodo j.
(
1, si existe el arco (i, j)
M (i, j) =
0, en caso contrario

Las filas y las columnas de la matriz representan los nodos del grafo.
Cuando el grafo no es dirigido la matriz de adyacencias es simétrica.
La matriz de adyacencias es la misma matriz de la relación A de N en N porque indica cuales nodos
están relacionados (unidos por un arco)

Ejemplo 8
La siguiente es la matriz de adyacencias del grafo orientado que se muestra en la figura 8.

a b c d b
 
a 0 1 1 0
b 0 0 1 1 a d
M (i, j) =  
c 1 0 0 1
d 1 0 0 0
c
Figura 8.

Nota: Para un digrafo, la matriz de adyacencias depende del orden de los nodos. Para distintos órdenes
en los nodos se obtienen distintas matrices de adyacencias de un mismo grafo G

Ejemplo 9
Grafo orientado con su correspondiente matriz de adyacencias (matriz de pesos o valores)
120

2 3
1 2 3 4 5
  100
1 0 100 0 0 0 1 110
20 0 120 0 0  200
M (i, j) = 3 
 0 0 0 200 0 
4  0 110 0 0 80  4
5 0 0 0 0 0
80
5
Figura 9.

A. Caicedo B., G. Wagner de G., R. M. Méndez


10 GRAFOS

Ejemplo 10
Considere el esquema de Von Newmann, para un computador que consta de los siguientes dispositivos:
V = (a, b, c, d, e) donde a es un dispositivo de entrada, b es una unidad aritmética, c es una unidad
de mando, d es una unidad de memoria y e es un dispositivo de salida. Las relaciones entre unidades
y dispositivos se representan en el grafo de la figura 10.

b c d

Figura 10.

Si con un 1 se indica que hay un paso de información (relación) desde el componente vi al componente
vj , la matriz que representa al grafo es:
a b c d e
 
a 0 1 1 1 0
b0 0 1 1 1

M (i, j) = c 
 1 1 0 1 1 

d0 1 1 0 1
e 0 0 1 0 0

Ejemplo 11
Un mensajero debe visitar los seis puntos mostrados en la figura 11a) partiendo del punto a y
terminando en el punto f. El conoce la distancia que separa a cada par de puntos y desea establecer
el recorrido que debe seguir para recorrer la mínima distancia y ahorrar tiempo.

4
a b a b
11 6 19

15
c f 16 c f
5 8
4
3
d e d e

a) b)
Figura 11.
Con las distancias entre los puntos se construye el grafo no dirigido etiquetado:
Para hallar el recorrido de mínima distancia se podrian listar todas las posibles trayectorias desde a
hasta f y escoger la menor. Una de tales trayectorias es : a − b − c − d − e − f de longitud 22.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Lista de Adyacencias 11

De hecho este no es el mejor método para resolver el problema. Se han desarrollado algoritmos muy
eficientes que con la ayuda del computador pueden producir una solución muy óptima en un tiempo
bastante corto. Uno de estos algoritmos es el propuesto por DIJKST RA y que se estudiará más adelante.

1.4 Lista de Adyacencias

Sea G = (N, A) un grafo. La lista de adyacencias para un nodo i es una lista, en cualquier orden, de
todos los nodos adyacentes a i.

En esta representación el grafo incluye dos partes: un directorio y un conjunto de listas enlazadas. Hay
una entrada al directorio por cada nodo del grafo.

Ejemplo 12
La figura 12 muestra un grafo dirigido y su correspondiente representación en lista de adyacencias.

1 2 1 b
2 b
3 b

2 b
4 b

3 b
2 b

3 4 4 b
3 b

Figura 12.
La entrada en el directorio del nodo i apunta a una lista enlazada que representa los nodos que
son conectados al nodo i. Cada registro de la lista enlazada tiene dos campos: el primero es un
identificador de nodo y el otro es un enlace al siguiente elemento de la lista j. La lista enlazada
representa arcos.

Ejemplo 13
La figura 13 muestra un grafo con su correspondiente lista de adyacencias.

1 b
2 b

6
2 b
2 b
3 b

2 3 5 3 b
5 b
6 b

4 b
3 b

1 5 b b

4
6 b b

Figura 13.

Si este grafo no fuera orientado, la lista de adyacencias sería la que se muestra en la figura 14.

A. Caicedo B., G. Wagner de G., R. M. Méndez


12 GRAFOS

1 b
2 b

2 b
1 b
2 b
3 b

3 b
2 b
4 b
5 b
6 b

4 b
3 b

5 b
3 b

6 b
3 b

Figura 14.

Ejemplo 14
Otra forma de presentar la lista de adyacencias

A B C Lista de adyacencias
A : B, P
B : A, C, P, Q
C: B
P : A, B
P Q Q: B

G = [A : B, P ; B : A, C, P, Q; C : B; P : A, B; Q : B]

Representación enlazada de G

1.5 Coeficiente de estabilidad

Un concepto muy aplicable de la teoría de grafos es el coeficiente de estabilidad interna y externa que
sirve para resolver problemas referentes a modelos de comunicación.

Definición 1.11
Sea G (N, A) y S ⊂ N (S subconjunto de nodos de G) . Se dice que S es interiormente estable si
no contiene ninguna pareja de nodos adyacentes.

Recuérdese que dos nodos ni y nj son adyacentes si son distintos y al menos existe un arco (ni , nj ) o
(nj , ni ) .

Definición 1.12 Coeficiente de estabilidad interna

El coeficiente de estabilidad interna α (G) de G es igual a:

α (G) = máx {S}

Es decir α (G) es el número de elementos que contiene el mayor subconjunto S interiormente estable.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Coeficiente de estabilidad 13

Ejemplo 15 1 3 2

6 4

8 7
Figura 15.

En el grafo de la figura 15, los conjuntos de nodos {1, 2, 7} ; {6, 7, 1} ; {5, 4, 3} y {8, 4, 3} son conjuntos
interiormente estables. El coeficiente de estabilidad interno de G es α (G) = máx {S} = 5 con S =
{1, 2, 6, 7, 5}

Ejemplo 16
Capacidad de un Conjunto de Señales
Considérese un transmisor que puede emitir cinco señales diferentes {a, b, c, d, e} . Estas señales se
reciben en un receptor de tal forma que cada una puede dar lugar a dos interpretaciones diferentes:
a puede dar p o q, b puede dar q o r, c : r o s, d : s o t, y e : t o p. Esta información se puede
representar en el grafo de la figura 16.a.
a p b

b q

c r a c

d s

e t e d

a) Figura 16. b)

¿Cuál es el número máximo de señales que pueden emitirse simultáneamente en forma tal que no
exista posibilidad de confusión en la recepción?
El problema equivale a buscar un conjunto interiormente estable y máximo, del grafo de la figura
16a en donde dos nodos son adyacentes si representan dos señales que puedan confundirse. Se llega
así a construir un nuevo grafo, ver f ig. 16 b donde:
a se une con b porque ellas pueden producir q
b se une con c porque ellas pueden producir r
c se une con d porque ellas pueden producir s
d se une con e porque ellas pueden producir t
e se une con a porque ellas pueden producir p
El grafo obtenido tiene los siguientes conjuntos interiormente estables:
{a, c}, {a, d}, {b, d}, {b, e} y {c, e}
donde α(G) = 2. Luego, el número máximo de señales que se puede emitir sin crear confusión es 2.

A. Caicedo B., G. Wagner de G., R. M. Méndez


14 GRAFOS

A continuación definiremos el Coeficiente de estabilidad externa

Definición 1.13 Coeficiente de estabilidad externa


Un subconjunto T de nodos de un grafo G es exteriormente estable si todo nodo ni ∈
/ T está ligado
al menos a un nodo de T por un arco cuyo extremo inicial es ni .

Definición 1.14
El coeficiente de estabilidad externa β(G) de G es igual β(G) = min{T }, lo que significa que es
igual al número de elementos del menor conjunto exteriormente estable.

Ejemplo 17
En el grafo de la figura 17 los siguientes conjuntos son exteriormente estables:
{c, d, e, f, h}, {c, e, h} y {c, e, f, h}
a b c

El coeficiente de estabilidad externa es:


e d β(G) = min{T } = 3, T = {c, e, h}
f

h
g
Figura 17.

Ejemplo 18
Redes de Comunicación
Considérese un conjunto de subestaciones telefónicas con sus respectivas redes, como lo indica El
grafo de la figura 18.
1 4 B

11
A 2 5 8
10
3 6 9

7
Figura 18.

¿Cuál es el número mínimo de subestaciones que deben fallar para que las centrales A y B no
pueden intercomunicarse?. El problema se reduce a encontrar un conjunto mínimo de articulaciones
que divida al grafo G en dos subgrafos disyuntos, conteniendo uno a A y el otro a B. Sea T = {4, 5, 9}.
T es un subconjunto de nodos exteriormente estable porque todos los nodos que no pertenecen a T
están ligados al menos a uno de los nodos de T por un arco que se inicia en ellos. Además T es el
mínimo de los subconjuntos exteriormente estables que se pueden obtener de G. El coeficiente de
estabilidad externa para G es β(G) = min{T } = 3. Se concluye que si fallan las subestaciones 4, 5 y
9, las centrales A y B no pueden comunicarse.
A. Caicedo B., G. Wagner de G., R. M. Méndez
Coeficiente de estabilidad 15

Ejercicios Capítulo 1

1. Sea N = {1, 2, 3, 4} un conjunto de nodos y A = {(1, 3), (2, 4), (4, 3)} un conjunto de arcos, dibujar
el grafo correspondiente.
2. Dados los dos grafos de la figura 19, establecer el conjunto de nodos N y el conjunto de arcos A.
a f 1

b d g 2 3 4
7

c e 5 6

Figura 19.
3. En los grafos del ejercicio anterior determinar el orden y el número de arcos de cada uno. Usar la
notación correspondiente.
4. En el grafo de la figura 20, determinar el grado de cada uno de sus nodos.
a d

b e

Figura 20.

5. Hallar dos trayectorias entre los nodos b y e del grafo de la figura 20.
6. Para los grafos de la figura 21 encontrar una trayectoria que vaya desde a hasta a y que pase por
cada arco una sola vez.
a b c b c

d e a d

f f e

Figura 21.

7. Examinar los siguientes grafos y determinar cuáles son simples y cuáles no, justificar la respuesta.

a b a b 1 2 1 2

3
c d c d 3

Figura 22.

A. Caicedo B., G. Wagner de G., R. M. Méndez


16 GRAFOS

8. Trazar un grafo completo de 5 nodos.

9. Trazar un K6 grafo.

10. Probar que un K7 grafo tiene 21 arcos. Dibujarlo.

11. Trazar un grafo regular de grado 4.

12. Establecer la matriz de adyacencias para cada uno de los grafos de la figura 23.

a b a d e
g
b c
c
c d f h
a
i
d e e f b

a 12 1
b 20
5
20 12 e 2 8 5
10
4 6
14
c d 3 4
Figura 23.

13. Establecer la lista de adyacencias para cada uno de los grafos del ejercicio número 12.

14. Para el grafo de la figura 24 establecer los coeficientes de estabilidad interna y externa.

1
4
B

A 2 5

7
3 6

Figura 24.

A. Caicedo B., G. Wagner de G., R. M. Méndez


ulo
pít
Ca

2 RELACIONES Y GRAFOS

El concepto fundamental de las Matemáticas Discretas es el de Relación, por ello en esta sección
se hace una breve introducción a las relaciones y se utilizarán para designar la correspondencia
entre los objetos o nociones tales como los nodos de un grafo.

2.1 Relaciones

Definición 2.1 Relación

Sean A y B conjuntos no vacíos. Una relación binaria de A en B es un subconjunto de A × B

Si ℜ ⊆ A × B y (a, b) ∈ ℜ, se dice que a está relacionado con b por ℜ y se escribe


aℜb.

Ejemplo 1
Sean A = {3, 7, 9} y B = {x, y} entonces ℜ = {{3, x), (9, y)} es una relación de A en B.

Cuando los conjuntos A y B son iguales se dice que ℜ ⊆ A × A es una relación en A en lugar de una
relación de A en A.

Si el conjunto de referencia para la relación es el conjunto N de puntos (nodos) y la relación binaria


es ℜ ⊂ N 2 , entonces la colección formada por N y ℜ se denomina un grafo G. Algunos autores llaman a
N el portador del grafo y a ℜ la signatura del grafo.

Si ℜ ⊆ A × B es una relación de A en B, existen dos conjuntos asociados a ℜ:

1. El dominio de ℜ que se escribe Dom(ℜ), es el conjunto de elementos de A que están relacionados


con algún elemento de B, por lo tanto Dom(ℜ) ⊆ A.

2. El codominio de ℜ que se escribe Cod(ℜ) es el conjunto de elementos de B que están relacionados


con algún elemento de A, por lo tanto Cod(ℜ) ⊆ B.

17
18 RELACIONES Y GRAFOS

Ejemplo 2
Sean A = {1, 3, 5} y B = {0, 1, 2, 4, 7}. Se define la siguiente relación de A en B:

AℜB ⇔ a < b

Entonces: ℜ = {(1, 2), (1, 4), (1, 7), (3, 4), (3, 7), (5, 7)}; Dom(ℜ) = {1, 3, 5} y Cod(ℜ) = {2, 4, 7}.

2.2 Matriz de una Relación

Definición 2.2 Matriz de una Relación


Si ℜ es una relación de A en B, es posible representar a ℜ como una matriz Mℜ = [mij ] con
elementos de la forma: 
 1, si (a , b ) ∈ ℜ
i j
mij =
 0, si (a , b ) ∈
i j / ℜ

Ejemplo 3
Sean A = {0, 7, 5, 9} y B = {1, 3, 10} y la relación dada por:

AℜB ⇔ a > b
7

1 3 10
3
 
0 0 0 0
0 5 71 1 0 
Mℜ =  
1 51 1 0 
9 1 1 0
9 10
Figura 1.

Entonces: ℜ = {(5, 1), (5, 3), (7, 1), (7, 3), (9, 1), (9, 3)}. La matriz de ℜ se ve en la figura 1:

Nota: En un grafo no dirigido Mℜ = M de adyacencias

Ejemplo 4
Sean X = {3, 9, 1} e Y = {a, b} . Luego ℜ = {(3, a), (9, b), (1, a), (1, b)}.

a b
 
3 1 0
Mℜ = 9  0 1 
1 1 1

A. Caicedo B., G. Wagner de G., R. M. Méndez


Gráfica de una Relación ℜ 19

2.3 Gráfica de una Relación ℜ

Si A es un conjunto finito y ℜ es una relación en A, los elementos de A se pueden representar como


puntos del plano, unidos por arcos dirigidos si ai ℜaj . La gráfica resultante para esta relación se llama un
grafo dirigido.

Ejemplo 5
Sean A = {a, d, c, m} y ℜ = {(a, d), (a, c), (d, c), (c, d), (c, m), (m, m)}. El grafo dirigido de ℜ es el de
la figura 2.
d

a m

c
Figura 2.

Ejemplo 6
Determinar la relación representada por el grafo de la figura 3.
2

1 4 5

Figura 3.

Puesto que ai ℜaj si y solo si existe el arco de ai a aj se tiene:


ℜ = {(1, 2), (1, 4), (2, 1), (3, 1), (3, 5), (3, 3), (4, 4), (4, 5)}.

2.4 Propiedades de una Relación

Reflexiva
Una relación ℜ en un conjunto A es reflexiva si (a, a) ∈ ℜ, es decir, aℜa, ∀a ∈ ℜ. ℜ es reflexiva si cada
elemento a ∈ A está relacionado consigo mismo.
A. Caicedo B., G. Wagner de G., R. M. Méndez
20 RELACIONES Y GRAFOS

Definición 2.3 Irreflexiva


ℜ es irreflexiva si algún elemento no está relacionado consigo mismo.

La matriz de una relación reflexiva tiene unos en toda su diagonal principal. La matriz de una relación
irreflexiva tiene al menos un cero en la diagonal principal.

Ejemplo 7
El siguiente grafo muestra una relación reflexiva.

a b

c d

Figura 4.

Simétrica
Una relación ℜ en un conjunto A es simétrica si cuando aℜb ⇒ bℜa ∀a, b

Definición 2.4 Antisimétrica


ℜ es asimétrica si aℜb entonces bℜa , ℜ es antisimétrica si cuando aℜb y bℜa ⇒ a = b, ∀a y ∀b

Ejemplo 8
Sea ℜ = {(a, b) ∈ A × A |a < b }. Luego:

1. Si a < b ⇒ b ≮ a ⇒ ℜ no es simétrica, es asimétrica.

2. Si a 6= b ⇒ a ≮ b ó b ≮ a ⇒ ℜ es antisimétrica.

Teorema 1

La matriz Mℜ = [mij ] de una relación simétrica satisface:


1. Si mij = 1 ⇒ mji = 1.
2. Si mji = 0 ⇒ mij = 0. Luego Mℜ = (Mℜ )T entonces Mℜ es simétrica.

Ejemplo 9
   
1 1 0 1 1 0
Si Mℜ =  1 0 1 , entonces MℜT = 1 0 1
0 1 0 0 1 0

Teorema 2

La matriz Mℜ de una relación asimétrica satisface:


1. Si mij = 1 ⇒ mji = 0.
2. mij = 0 para i = j.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Propiedades de una Relación 21

Teorema 3

La matriz Mℜ de una relación antisimétrica satisface que si i 6= j ⇒ mij = 0 ó mji = 0

De los anteriores teoremas se pueden concluir las siguientes afirmaciones:

1. Si ℜ es una relación asimétrica, entonces el grafo dirigido no puede tener simultáneamente un arco
desde el nodo i al nodo j y un arco desde el nodo j al nodo i. No puede haber ciclos de longitud 1.

2. Si ℜ es antisimétrica, entonces para i 6= j no puede haber un arco desde i a j y un arco desde j a


i. Pueden existir ciclos de longitud 1.

3. Si ℜ es simétrica, entonces, si existe el arco de i a j, también existe el arco desde j a i.

Definición 2.5 Relación Conexa


Una relación simétrica ℜ en A se llama conexa si existe una trayectoria desde cualquier elemento
de A a cualquier otro elemento de A, es decir, el grafo es completo

Ejemplo 10
El grafo de la figura 5 representa una relación conexa.

a b c

Figura 5.

Transitiva
Una relación ℜ en un conjunto A es transitiva si cuando aℜb y bℜc entonces aℜc.
En una relación transitiva se tiene: si mij = 1 y mjk = 1 ⇒ mik = 1.
En un grafo dirigido las condiciones aℜb y bℜc ocurrirán si y solo si existe una trayectoria de longitud
dos desde a hasta c. es decir, que aℜ2 c implica que aℜc. ℜ2 ⊆ ℜ, siendo ℜ un subconjunto de A × A.
Cualquier par de nodos conectados por un arco deben estar conectados por una trayectoria de longitud
2.
Con base al concepto anterior se puede establecer la siguiente definición de transitividad.

Definición 2.6 Transitividad


ℜ es transitiva si y solo si ℜn ⊆ ℜ ∀n ≥ 2. ℜ es transitiva si ℜ2 = ℜ

Ejemplo 11
2
1 2 3 (MR )⊙ = MR → R es transitiva
 
1 1 1 1 2
Sea A = {1, 2, 3} y MR = 2  0 0 1
3 0 0 1
1 3

A. Caicedo B., G. Wagner de G., R. M. Méndez


22 RELACIONES Y GRAFOS

Ejemplo 12
a b 1 2  
0 1 0 1
 
1 0 1 1
5 



0 1 0 0
c d e 3 4
1 1 0 0
Transitiva Antisimétrica Irreflexiva
Transitiva Simétrica
No transitiva

Definición 2.7 Relación de Equivalencia


Una relación ℜ sobre un conjunto A se llama relación de equivalencia si cumple que es reflexiva,
simétrica y transitiva.

Ejemplo 13
   
1 0 0 1 0 1
   
   
0 1 1  0 1 0
   
0 1 1 1 0 1
Relación de equivalencia Reflexiva, simétrica, no transitiva

2.5 Operaciones entre Relaciones

Así como es posible manipular números y fórmulas usando las reglas del álgebra, también es posible
definir operaciones que permitan manipular relaciones. Una vez definidas ciertas operaciones se puede
operar con ellas sobre relaciones existentes para obtener otras relaciones.

Algunas de las operaciones que se pueden definir sobre relaciones son:


Relación Complementaria

Sean A y B dos conjuntos finitos y ℜ una relación de A en B. Se define la relación complemen-


taria ℜ como:
aℜb ⇔ aℜb

Nota: ℜ ⊂ A × B

Ejemplo 14
Sean A = {3, 4, 5}, B = {a, b, c} y ℜ = {(3, a)(3, b)(4, c)(5, c)}. ℜ = {(3, c)(4, a)(4, b)(5, a)(5, b)}.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Operaciones entre Relaciones 23

Intersección de Relaciones
Sean A y B dos conjuntos finitos, ℜ y S relaciones definidas de A en B. Se define la intersección
de las dos relaciones como:
a(ℜ ∩ S)b ⇔ aℜb y aSb

Nota: (a, b) ∈ (ℜ ∩ S), si está en ℜ y también está en S

Unión de Relaciones
Sean A y B dos conjuntos finitos, ℜ y S relaciones definidas de A en B. Se define la unión de
las dos relaciones como:
a(ℜ ∪ S)b ⇔ aℜb ó aSb

Nota: (a, b) ∈ (ℜ ∪ S), si está en ℜ o está en S

Relación Inversa

Sean A y B dos conjuntos finitos, R una relación de A en B. Se define la relación inversa ℜ−1
como una relación de B en A tal que:
bℜ−1 a ⇔ aℜb

Nota: (b, a) ∈ (ℜ−1 ), si (a, b) ∈ ℜ

Ejemplo 15
Sean
A = {1, 5, 7, 9}, B = {x, y},
S = {(1, y)(5, x)(7, y)(9, x)} y
ℜ = {(1, x)(1, y)(5, y)(7, x)(7, y)(9, x)}.

Calcular 1. ℜ, 2. ℜ ∩ S, 3. ℜ ∪ S y 4. ℜ−1

Solución

1. Para hallar el complemento se compara la relación dada con A × B, donde,

A × B = {(1, x), (1, y), (5, x), (5, 7), (7, x), (7, y), (9, x), (9, y)}

así, el complemento de ℜ es: ℜ = {(5, x), (9, y)}.

2. La intersección ℜ ∩ S se forma con el conjunto de parejas en común entre ℜ y S, así,


ℜ ∩ S = {(7, y), (9, x)(1, y)}.

3. La unión ℜ ∪ S se forma juntando las parejas de ℜ con las de S sin repetir parejas, por lo que
ℜ ∪ S = {(1, x), (1, y), (5, x), (5; y), (7, x), (7, y), (9, x)}.
4. ℜ−1 se forma tomando las parejas de ℜ e invirtiendo el orden de los elementos, así la relación
inversa está dada por ℜ−1 = {(x, 1), (y, 1), (y, 5), (x, 7), (y, 7), (x, 9)}.

A. Caicedo B., G. Wagner de G., R. M. Méndez


24 RELACIONES Y GRAFOS

Composición de Relaciones

Se pueden crear nuevas relaciones a partir de otras existentes, una forma de hacer esto es
mediante la composición de relaciones.

Sea ℜ una relación entre A y B y sea S una relación entre B y C luego, la composi-
ción ℜ y S es la relación entre A y C y se nota ℜ ◦ S y está dada por:
ℜ ◦ S = {(x, z) : x ∈ A, z ∈ C y existe y ∈ B tal que xℜy y ySz.

Gráficamente se tiene:
ℜ S

b b
y z

b b

u w

A B C
Figura 6. ℜ ◦ S

De la figura anterior se deduce que la composición de relaciones consiste en relacionar elementos de A


con elementos de C, usando elementos de B como intermediarios.

Ejemplo 16
Si se tiene en la figura 7 una composición de relaciones, entonces
ℜ ◦ S = {(1, 2), (3, 2), (2, 2), (3, 3), (4, 2)}.
ℜ S
1
1 b b

2 2
2 b b b

3 3
3 b b b

4
4 b b

A B C
Figura 7.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Producto Lógico de Matrices 25

2.6 Producto Lógico de Matrices

Ahora se quiere definir una operacion matricial que combine la representacion matricial de dos relaciones
para obtener una representación matricial de la composición de relaciones.

Sea A = {a1 , a2 , ..., am }, B = {b1 , b2 , ..., bn } y C = {c1 , c2 , ..., cp }. Sea ℜ una relación de A en B y
sea S una relación de B en C. ℜ se representa por una matriz M1m×n ; S se representa por la matriz
M2n×p , entonces la relación compuesta ℜ ◦ S se representa por la matriz M3m×p .

La operación matricial que se busca para representar la composición, se denota con el símbolo ⊙ lo
cual permite escribir:
M3 = M1 ⊙ M2
Para determinar más fácilmente como está definida esta operación, se puede considerar el esquema de las
dos relaciones dadas (ver figura 8).

Para cada i ∈ {1, ..., m} y j ∈ {1, ..., p}, M3 (i, j) = verdad si y solo si ai ℜ ◦ Scj lo cual es cierto si
y solo si ∃k ∈ {1, ..., n} tal que ai ℜbj y bk Scj .

Usando las definiciones de las operaciones lógicas ∧ y ∨ (and y or)1 se puede obtener la fórmula co-
mo sigue:
M3 (i, j) = [M1 (i, 1) ∧ M2 (1, j)] ∨ [M1 (i, 2) ∧ M2 (2, j)] ∨ ... ∨ [m1 (i, n) ∧ M2 (n, j)]
La matriz M3 obtenida en esta forma se llama el producto lógico o booleano de las matrices M1 y M2 .

ℜ S
a1 b1 c1

a2 b2 c2

.. .. ..
. . .

ai bk cj

.. .. ..
. . .

am bn cp
Figura 8.

1
+/∨ 0 1 ∗/∧ 0 1
0 0 1 0 0 0
1 1 1 1 0 1

A. Caicedo B., G. Wagner de G., R. M. Méndez


26 RELACIONES Y GRAFOS

Definición 2.8

Si Am×p y Bp×n son matrices booleanas se define: A ⊙ B = [eij ] como el producto booleano de A y B,
donde
eij = (ai1 ∧ b1j ) ∨ (ai2 ∨ b2j ) ∨ ... ∨ (aip ∧ bpj )

Este producto booleano es similar al producto ordinario de matrices pero aplicando las operaciones booleanas ∧
y ∨.

Ejemplo 17
Sea A = {a, b}, B = {a, b, c} y C = {a, b, c, d}. ℜ es una relación de A en B. ℜ = {(a, a), (a, b), (b, b)}. S una
relación de B en C. S = {(a, a), (a, c), (a, d), (b, a), (c, b), (c, d)}, por lo tanto:
 
  1 0 1 1
1 1 0
Mℜ = , MS =  1 0 0 0 
0 1 0
0 1 0 1
Entonces ℜ ◦ S = {(a, a), (a, c), (a, d), (b, a)} como se ve en el esquema de la figura 9
En forma matricial se tiene  
  1 0 1 1
1 1 0
Mℜ◦S = Mℜ ⊙ MS = ⊙ 1 0 0 0
0 1 0
0 1 0 1
 
(1 ∧ 1) ∨ (1 ∧ 1) ∨ (0 ∧ 0) . . . (1 ∧ 1) ∨ (1 ∧ 0) ∨ (0 ∧ 1)
=
(0 ∧ 1) ∨ (1 ∧ 1) ∨ (0 ∧ 0) . . . (0 ∧ 1) ∨ (1 ∧ 0) ∨ (0 ∧ 1)
   
1∨1∨0 0∨0∨0 1∨0∨0 1∨0∨0 1 0 1 1
= =
0∨1∨0 0∨0∨0 0∨0∨0 0∨0∨0 1 0 0 0

Nótese que esta última matriz es equivalente a la matriz de la relación representada en el esquema anterior.
A B C A C
ℜ a S ℜ◦S
a b b b
a a b b
a

bb b
b b
b
b b

cb b
c b
c

b
d b b b
d
Figura 9. ℜ ◦ S

El siguiente teorema establece algunas relaciones interesantes entre las matrices de relaciones y las operaciones
booleanas entre ellas.

Teorema 4

Sean ℜ y S dos relaciones en A, entonces se cumple que:


1. Mℜ∪S = Mℜ ∨ MS
2. Mℜ∩S = Mℜ ∧ MS
3. Mℜ◦S = Mℜ ⊙ MS
4. (Mℜ )n = Mℜ◦ℜ◦... = Mℜ ⊙ Mℜ . . . (n veces)

A. Caicedo B., G. Wagner de G., R. M. Méndez


Producto Lógico de Matrices 27

Ejemplo 18    
1 0 1 0 1 1
   
Sean Mℜ = 1 0 0  y M S = 1 1 0, se tiene entonces,
1 1 1 0 1 0
   
1 1 1 0 0 1
   
Mℜ∪S = 1 1 0 , Mℜ∩S = 1 0 0
1 1 1 0 1 0
   
1 1 1 0 0 1
   
Mℜ ∨ MS = 1 1 0 , Mℜ ∧ MS = 1 0 0
1 1 1 0 1 0

Ejemplo 19
Si ℜ = {(a, b), (a, c), (b, a)}, S = {(a, c), (b, a), (b, b), (c, a)}, entonces
 
2 1 0
 
Mℜ◦S = Mℜ ⊙ MS = Mℜ × MS = 0 0 1
0 0 0

Ejemplo 20 A B C

1 a x

2 b y

3 c z

ℜ = {(1, b), (2, a), (2, c)}, S = {(a, y), (b, x), (c, y), (c, z)}

a b c x y z
   
1 0 1 0 a 0 1 0
   
Mℜ = 2 
1 0 1
 MS = b 
1 0 0

3 0 0 0 c 0 1 1
x y z x y z
   
1 1 0 0 1 1 0 0
   
Mℜ◦S = 2 
0 1 1
 Mℜ × MS = 2 
0 2 1

3 0 0 0 3 0 0 0

Nota: Mℜ◦S y Mℜ × MS tienen ceros en las mismas posiciones

A. Caicedo B., G. Wagner de G., R. M. Méndez


28 RELACIONES Y GRAFOS

2.7 Trayectorias y Relaciones

La idea de una trayectoria en un digrafo tiene muchas interpretaciones, dependiendo de la aplicación que está
siendo modelada. Por ejemplo, si el digrafo es un modelo de una red de comunicación, las trayectorias en el
digrafo mostrarán las posibles rutas para mensajes entre diferentes computadores. Hay tres problemas que surgen
al tratar de aplicar el modelo a la realidad:
1. Establecer la existencia de trayectorias entre dos nodos.
2. Contar el número de trayectorias entre dos nodos.
3. Encontrar la trayectoria más corta entre un par de nodos dados.

Definición 2.9
Sea ℜ una relación en un conjunto A. Una trayectoria de longitud n de a hasta b es una sucesión finita
π = a, x1 , x2 ,. . . xn−1 , b que se inicia en a y termina en b, y tal que aℜx1 , x1 ℜx2 ,. . . , xn−1 ℜb.

Una solución al primer problema de determinar cuáles nodos están conectados por trayectorias a otros nodos
puede ser establecida en dos formas: la primera analizando visualmente el grafo y determinando la trayectoria
y la segunda en términos de la matriz de la relación que representa los arcos del digrafo. El primer método no
es práctico cuando el grafo tiene muchos nodos y arcos, razón por la cual en esta sección, se hará el estudio del
segundo método.

Las trayectorias en una relación pueden usarse para definir nuevas trayectorias. Si n es un entero positivo fi-
jo, se define una relación ℜn como xℜn y y significa que existe una trayectoria de longitud n de x a y en ℜ, o x
está relacionado con y mediante un recorrido de n arcos.

Recordando cómo se definió la composición de relaciones, se concluye que la composición de ℜ con si misma
da trayectorias de longitud 2, y la composición de este resultado con ℜ da trayectorias de longitud 3 y así sucesi-
vamente. Luego se puede proceder con un argumento inductivo para encontrar todas las trayectorias.

También se puede definir una relación ℜ∞ en A como xℜ∞ y indica que existe alguna trayectoria en ℜ de x
a y, no importa la longitud.

ℜ∞ se le llama relación de conectividad de ℜ. (clausurativa, transitiva)

Nota: Mℜ∞ muestra quiénes quedan conectados mediante trayectorias de cualquier longitud

Ejemplo 21
Sea A un conjunto de personas y ℜ la relación “conocerse mutuamente”, entonces:
aℜb significa que a y b se conocen el uno al otro.
aℜ2 b significa que a y b tienen un conocido en común.
aℜn b significa que a conoce a x1 , que conoce a x2 ,. . . ,que conoce a xn−1 , que conoce a b.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Trayectorias y Relaciones 29

Ejemplo 22
El siguiente grafo representa un conjunto de vuelos con escala intermedia.
5
1 2

3 4 6

Figura 10.

Luego:
1ℜ2 5 porque 1ℜ2 y 2ℜ5
1 2 5
1ℜ2 4 porque 1ℜ2 y 2ℜ4
2ℜ2 5 porque 2ℜ4 y 4ℜ5
2ℜ2 6 porque 2ℜ5 y 5ℜ6
3ℜ2 5 porque 3ℜ4 y 4ℜ5
4ℜ2 6 porque 4ℜ5 y 5ℜ6 3 4 6
2
Grafo de la relación ℜ

Ejemplo 23
Para el grafo de la figura 11 determinar ℜ∞ .

1 2

ℜ∞ = {(1, 1) , (1, 2) , (1, 3) , (1, 4) , (2, 1) , (2, 2) , (2, 3) , (2, 4) , (3, 4)}

1 2 3 4
 
1 1 1 1 1
2 1 1 1 1
Mℜ∞ =  
3 0 0 0 1
3 4 4 0 0 0 0

Figura 11.

Ejemplo 24
1 2
ℜ∞ = {(1, 2), (1, 3), (1, 4), (3, 2), (3, 3), (3, 4)}

1 2 3 4
 
1 0 1 1 1
20 0 0 0
M ℜ∞ =  
3 4 30 1 1 1
4 0 0 0 0

A. Caicedo B., G. Wagner de G., R. M. Méndez


30 RELACIONES Y GRAFOS

Teorema 5

Sea G = (N, A) un digrafo. Sea n1 , . . . , n2 nodos en A. Para cada i, j hay una trayectoria desde ni a nj
en G si y solo si existe k = 1, 2, 3, . . . tal que ni ℜk nj , por lo tanto:
ℜ∞ = ℜ ∪ ℜ2 ∪ ℜ3 ∪ . . .

Teorema 6

Sea G = (N, A) un digrafo, ℜ una relación en A y sea n = |N | entonces:


ℜ∞ = ℜ ∪ ℜ2 ∪ ℜ3 ∪ . . . ℜn
es decir que las potencias de ℜ mayores que n no son necesarias para calcular ℜ∞ .

Teorema 7

Para n ≥ 1 y ℜ una relación en un conjunto finito A, se tiene:


Mℜn = Mℜ ⊙ Mℜ ⊙ . . . ⊙ Mℜ
| {z }
n veces

Definición 2.10
xℜ∞ y si y solo si xℜy o xℜ2 y o xℜ3 y o . . .

Del teorema anterior y teniendo en cuenta que Mℜ∪S = Mℜ ∨ MS se concluye que:

M ℜ∞ = Mℜ ∨ M ℜ2 ∨ M ℜ3 ∨ . . . ∨ M ℜn

que también se puede escribir de la forma:



Mℜ∞ = Mℜ ∨ (Mℜ )2⊙ ∨ (Mℜ )3⊙ ∨ . . . ∨ (Mℜ )n

donde,
(Mℜ )n
⊙ = Mℜ ⊙ . . . ⊙ Mℜ (n factores)

Definición 2.11
La relación de accesibilidad o alcanzabilidad ℜ∗ de una relación ℜ en un conjunto N de n elementos se
define como xℜ∗ y si y solo si x = y o xℜ∞ y.

En otras palabras esto indica que un nodo y es alcanzable desde x si y es x o existe una trayectoria de cualquier
longitud desde x a y.

La matriz de la relación de accesibilidad o alcanzabilidad o matriz de caminos se nota Mℜ∗ .

Teorema 8

Mℜ∗ = In ∨ Mℜ∞ donde In es la matriz identidad de n × n, luego:


M ℜ∗ = In ∨ M ℜ ∨ M ℜ2 ∨ . . . ∨ M ℜn

A. Caicedo B., G. Wagner de G., R. M. Méndez


Trayectorias y Relaciones 31

Ejemplo 25
Para la relación ℜ representada por el siguiente grafo, determinar cuáles parejas de nodos están unidas por
trayectorias de longitud 2 arcos.
b d

c e
Solución
Figura 12.
1. Analizando visualmente el grafo se tiene:
ℜ2 = {(a, a), (a, b), (a, c), (a, d), (b, d), (b, e), (c, d), (d, d)}
2. En una forma más analítica y usando la matriz de relaciones se tiene:
 
1 1 0 0 0
 
0 0 1 1 0 
 
M ℜ = 0 0 0 1 1 
 
0 0 0 1 0 
0 0 0 0 0
     
1 1 0 0 0 1 1 0 0 0 1 1 1 1 0
     
0 0 1 1 0  0 0 1 1 0  0 0 0 1 1 matriz de
     
Mℜ2 = M ℜ ⊙ M ℜ = 0 0 0 1 1  ⊙ 0 0 0 1 1  = 0 0 0 1 0 = caminos de
     
0 0 0 1 0  0 0 0 1 0  0 0 0 1 0 longitud 2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ejemplo 26
Encontrar la matriz de alcance (conectividad) para el digrafo de la figura 13.
1 2

3 4

Figura 13.
Solución
La matriz de la relación en el digrafo es:
 
0 1 0 0
 
0 0 1 0
Mℜ =  
1 0 0 0
1 0 0 0

a partir de ella se pueden calcular otros productos:

A. Caicedo B., G. Wagner de G., R. M. Méndez


32 RELACIONES Y GRAFOS

   
0 0 1 0 1 0 0 0
   
2 1 0 0 0 , 0 1 0 0
Mℜ2 = (Mℜ )⊙ = Mℜ ⊙ Mℜ =   Mℜ3 = (Mℜ )3⊙ = Mℜ2 ⊙ Mℜ =  
0 0 1 0 0 0 1 0
0 1 0 0 0 0 1 0
 
0 1 0 0
 
4 0 0 1 0
Mℜ4 = (Mℜ )⊙ = Mℜ3 ⊙ Mℜ =  
1 0 0 0
1 0 0 0

La matriz de relación de conectividad es

Mℜ∞ = Mℜ ∨ Mℜ2 ∨ Mℜ3 ∨ Mℜ4


       
0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0
       
0 0 1 0  ∨ 1 0 0 0  ∨ 0 1 0 0  ∨ 0 0 1 0
=       
1 0 0 0  0 1 0 0  0 0 1 0  1 0 0 0
1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0
 
1 1 1 0
 
1 1 1 0
= 
1 1 1 0
1 1 1 0

Teorema 9

Sea M la matriz de adyacencias de un digrafo G. El elemento de la i-ésima fila y j-ésima columna de M n


con n > 0 es igual al número de caminos de longitud n que van desde el i-ésimo nodo hasta el j-ésimo nodo

Ejemplo 27
Sea G el siguiente digrafo y su correspondiente matriz de adyacencias
v1 v2  
0 0 0 1 1
 
 
0 0 1 0 0
 
 
v3 M = 0 1 0 0 0
 
 
0 1 1 0 1
 
v5 v4
1 1 0 0 0

  Figura 14.
0 1 1 0 1
 
0 1 0 0 0 Los valores diferentes de 0, indican cuántas trayectorias de
M2 =
 
M ×M = 0 0 1 0 0 = longitud 2 existen entre cada par de nodos
 
1 2 1 0 0
0 0 1 1 0
 
1 2 1 0 0
 
0 0 1 0 0 Los valores diferentes de 0, indican cuántas trayectorias de
M3 = M2 × M =
 
0 1 0 0 0 = longitud 3 existen entre cada par de nodos
 
0 1 2 1 0
0 2 1 0 1

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo de Warshall 33

 
0 1 2 1 0
 
0 1 0 0 0 Los valores diferentes de 0, indican cuántas trayectorias de
M4 = M3 × M =
 
0 0 1 0 0 = longitud 4 existen entre cada par de nodos
 
0 3 2 0 1
1 2 2 0 0
 
0 3 2 0 1
 
0 0 1 0 0 Los valores diferentes de 0, indican cuántas trayectorias de
M5 = M4 × M =
 
0 1 0 0 0 = longitud 5 existen entre cada par de nodos
 
1 3 3 0 0
0 2 2 1 0
 
1 7 6 2 2
  el elemento de la i-ésima fila y j-ésima
0 2 3 0 0 columna indica el número de trayecto-
T 5 = M + M 2 + M 3 + M 4 + M 5 = 0
 
3 2 0 0 = rias de longitud 5 o menor entre v y
  i
2 10 9 1 2 v
j
2 7 6 2 1
Si un elemento de esta matriz no es nulo, queda claro que vj es alcanzable o accesable desde vi mediante una
trayectoria o camino de longitud máxima 5.

2.8 Algoritmo de Warshall

Como el cálculo de M ∗ o matriz de alcanzabilidad es muy laborioso mediante la unión de potencias de la matriz
de adyacencias, o sea usando
M∗ = M1 ∨ M2 ∨ · · · ∨ Mn
Stephen Warshall propuso en 1962 el siguiente procedimiento para hallar la matriz de alcanzabilidad a partir de
la matriz de adyacencias de G.

Para un grafo G, sea M su matriz de adyacencias n × n

Procedimiento
W =M
para k = 1 hasta n
para i = 1 hasta n
para j = 1 hasta n
hacer W (i, j) = W (i, j) ∨ [W (i, k) ∧ W (k, j)]

Definición 2.12

Sea G = (N, A) un digrafo. Se define la familia de relaciones W (k) como sigue:


Sea v1 , v2 , . . ., vn un etiquetamiento de los vértices y
1. Para u, v ∈ N decimos que u W (1) v si y sólo si existe el arco (u, v) o existe una trayectoria de u a v
usando a v1 como vértice intermedio.
2. Para u, v ∈ N decimos que u W (k+1) v si y sólo si u W (k) v o existe una trayectoria de u a v usando
algún subconjunto de vértices v1 , . . . , vk+1 como vértices intermedios.

A. Caicedo B., G. Wagner de G., R. M. Méndez


34 RELACIONES Y GRAFOS

De esta definición se deriva que W (n) = M ∗ = matriz de alcanzabilidad o accesibilidad. Si consideramos las
relaciones W (k) como conjuntos, se obtiene que:

W (1) ⊆ W (2) ⊆ . . . ⊆ W (n)

así que cada sucesiva relación contiene a las relaciones precedentes.

Ejemplo 28
Hallar la matriz M ∗ de alcanzabilidad para el siguiente digrafo, usando el algoritmo de Warshall

1 2
La matriz de adyacencias es
1 2 3 4
 
1 0 1 0 0
20 0 1 0
M=  
31 0 0 0
3 4 4 1 0 1 0

Figura 15.

En este momento W = M y W será modificado mediante el proceso iterativo que usa la fórmula: nuevo
W (i, j) = W (i, j) ∨ [W (i, k) ∧ W (k, j)]
Proceso iterativo
Primera iteración
Para k = 1 nodo intermedio

i = 1, j = 1 W (1, 1) = W (1, 1) ∨ [ W (1, 1) ∧ W (1, 1) ]


= 0 ∨ [ 0 ∧ 0 ] =0
j=2 W (1, 2) = W (1, 2) ∨ [ W (1, 1) ∧ W (1, 2) ]
= 1 ∨ [ 0 ∧ 1 ] =1
j=3 W (1, 3) = W (1, 3) ∨ [ W (1, 1) ∧ W (1, 3) ]
= 0 ∨ [ 0 ∧ 0 ] =0
j=4 W (1, 4) = W (1, 4) ∨ [ W (1, 1) ∧ W (1, 4) ]
= 0 ∨ [ 0 ∧ 0 ] =0
i = 2, j = 1 W (2, 1) = W (2, 1) ∨ [ W (2, 1) ∧ W (1, 1) ]
= 0 ∨ [ 0 ∧ 0 ] =0
j=2 W (2, 2) = W (2, 2) ∨ [ W (2, 1) ∧ W (1, 2) ]
= 0 ∨ [ 0 ∧ 1 ] =0
j=3 W (2, 3) = W (2, 3) ∨ [ W (2, 1) ∧ W (1, 3) ]
= 1 ∨ [ 0 ∧ 0 ] =1
j=4 W (2, 4) = W (2, 4) ∨ [ W (2, 1) ∧ W (1, 4) ]
= 0 ∨ [ 0 ∧ 0 ] =0
i = 3, j = 1 W (3, 1) = W (3, 1) ∨ [ W (3, 1) ∧ W (1, 1) ]
= 1 ∨ [ 1 ∧ 0 ] =1
j=2 W (3, 2) = W (3, 2) ∨ [ W (3, 1) ∧ W (1, 2) ]
= 0 ∨ [ 1 ∧ 1 ] =1
j=3 W (3, 3) = W (3, 3) ∨ [ W (3, 1) ∧ W (1, 3) ]
= 0 ∨ [ 1 ∧ 0 ] =0
j=4 W (3, 4) = W (3, 4) ∨ [ W (3, 1) ∧ W (1, 4) ]
= 0 ∨ [ 1 ∧ 0 ] =0
i = 4, j = 1 W (4, 1) = W (4, 1) ∨ [ W (4, 1) ∧ W (1, 1) ]
= 1 ∨ [ 1 ∧ 0 ] =1
j=2 W (4, 2) = W (4, 2) ∨ [ W (4, 1) ∧ W (1, 2) ]
= 0 ∨ [ 1 ∧ 1 ] =1
j=3 W (4, 3) = W (4, 3) ∨ [ W (4, 1) ∧ W (1, 3) ]
= 1 ∨ [ 1 ∧ 0 ] =1
j=4 W (4, 4) = W (4, 4) ∨ [ W (4, 1) ∧ W (1, 4) ]
= 0 ∨ [ 0 ∧ 0 ] =0

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo de Warshall 35

Se ha obtenido la siguiente matriz


1 2 3 4
 
1 0 1 0 0 Los unos de esta matriz indican cuáles parejas de nodos están
2 0 0 1 0 comunicados directamente por un arco o usando al nodo v1
W (1) =  
3 1 1 0 0 como nodo intermedio.
4 1 1 1 0
Segunda Iteración
Para hallar W (2) partimos con todas las trayectorias encontradas en W (1) y establecemos las trayectorias
que usan a v1 y v2 como nodos intermedios.
Para k = 2 y usando los valores de W (1) ejecutamos el mismo proceso iterativo y se obtiene:
1 2 3 4
 
1 0 1 1 0 Los unos de esta matriz indican cuales parejas de nodos están
(2) 2 0 0 1 0  comunicados directamente por un arco o por una trayectoria
W =  
que usa los nodos v1 y v2 como nodos intermedios
3 1 1 1 0
4 1 1 1 0
Tercera Iteración
Para k = 3 y usando los valores de W (2) , ejecutamos el mismo proceso iterativo y se obtiene:
1 2 3 4
 
1 1 1 1 0 Los unos de esta matriz indican cuales parejas de nodos están
(3) 2 1 1 1 0 conectados directamente por un arco o por una trayectoria
W =  
que usa los nodos v1 , v2 y v3 como nodos intermedios.
3 1 1 1 0
4 1 1 1 0
Cuarta Iteración
Para k = 4 y usando los valores de W (3) y ejecutando el mismo proceso iterativo se obtiene:

1 2 3 4
 
1 1 1 1 0
2 1 1 1 0
W (4) =   = Matriz de alcanzabilidad
3 1 1 1 0
4 1 1 1 0

Obsérvese que W (3) = W (4) porque el nodo 4 es un nodo fuente, él no recibe ningún arco, entonces no se
pueden establecer nuevas trayectorias. El proceso se detiene cuando:
1. W k−1 = W k
2. W k = matriz de unos
3. W k = W n
Trayectorias de acceso o alcanzabilidad

W (4) (1, 1) = 1 ⇒ Trayectoria de acceso: 1→2→3→1


W (4) (1, 2) = 1 ⇒ Trayectoria de acceso: 1→2
W (4) (1, 3) = 1 ⇒ Trayectoria de acceso: 1→2→3
W (4) (2, 1) = 1 ⇒ Trayectoria de acceso: 2→3→1
W (4) (2, 2) = 1 ⇒ Trayectoria de acceso: 2→3→1→2
W (4) (2, 3) = 1 ⇒ Trayectoria de acceso: 2→3
W (4) (3, 1) = 1 ⇒ Trayectoria de acceso: 3→1
W (4) (3, 2) = 1 ⇒ Trayectoria de acceso: 3→1→2
W (4) (3, 3) = 1 ⇒ Trayectoria de acceso: 3→1→2→3
W (4) (4, 1) = 1 ⇒ Trayectoria de acceso: 4→1
W (4) (4, 2) = 1 ⇒ Trayectoria de acceso: 4→3→1→2
W (4) (4, 3) = 1 ⇒ Trayectoria de acceso: 4→3

A. Caicedo B., G. Wagner de G., R. M. Méndez


36 RELACIONES Y GRAFOS

Ejercicios Capítulo 2

1. Sea A el conjunto de los números reales. Se define la siguiente relación ℜ en A: xℜy si y solo si x e y
satisfacen la ecuación
x2 y2
+ =1
16 81
Establecer el dominio y el codominio de ℜ.
2. Dada la relación ℜ = {(1, 3), (4, 5), (7, 9), (8, 20)} establecer su dominio y codominio.
3. Para la siguiente relación ℜ = {(a, 3), (b, 5), (c, 7)} establecer la matriz de la relación.
4. Sean A = {7, 10, 4, 12}, B = {3, 8, 5} y la relación AℜB ⇔ a < b. establecer el conjunto de parejas que
conforman a ℜ y la matriz de ℜ.
5. Trazar el grafo que represente cada una de las relaciones de los ejercicios 2, 3 y 4.
6. La siguiente es la matriz de una relación ℜ,
 
1 0 1 1
 
 
M ℜ = 1 1 0 0
 
0 0 1 0

establecer la relación ℜ en forma de conjunto de parejas y trazar el grafo orientado correspondiente.


7. Dada la siguiente matriz de una relación
x y z
 
a 1 0 1
Mℜ = b  1 1 1
c 0 1 1
establecer:

a) Dom(ℜ)
b) Cod(ℜ)
c) Conjunto de parejas.
d ) Trazar el grafo correspondiente.

8. Sean A = {1, 2, 3, 4, 8}, B = {1, 4, 6, 9} y la relación aℜb si y solo si a es un divisor de b (a|b). Establecer el
conjunto de parejas de ℜ y trazar el grafo.
9. Sean A = {1, 2, 3, 4, 5}, B = {5, 2, 1, 4, 10} y la relación aℜb si y solo si a es un múltiplo de b. Establecer el
conjunto de parejas de ℜ y trazar el grafo.
10. Sea A = {1, 2, 3, 4}. Encontrar la relación ℜ en A determinada para la siguiente matriz:
 
1 1 0 1
 
0 1 1 0
Mℜ =  
0 0 1 1
1 0 0 0
11. Dado el grafo de la figura 16, determinar:

a) Mℜ .
b) Conjunto de parejas.
c) Dominio y codominio de ℜ.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo de Warshall 37

4 2
1

5 3
Figura 16.
12. Sea A = {1, 2, 3, 4} y la relación dada por:

ℜ = {(1, 1) , (1, 2) , (2, 1) , (2, 2) , (3, 4) , (4, 3) , (3, 3) , (4, 4)}

verificar que ℜ es una relación de equivalencia.


13. Sea A el conjunto de enteros positivos y la relación:

aℜb ⇔ a ≡ b (mod 2)

Mostrar que ℜ es una relación de equivalencia.


14. Determinar si las relaciones ℜ dadas por los siguientes grafos son reflexiva, irreflexiva, simétrica, asimétrica
o transitiva.
2 1 2

1 5 3 5

4 3 4
Figura 17.
15. En los ejercicios de a hasta h, determinar si la relación ℜ sobre el conjunto A es reflexiva, irreflexiva,
simétrica, asimétrica o transitiva.
a) A = Z; aℜb ⇔ a ≤ b + 1
b) A = Z+ ; aℜb ⇔ a = bn , n ∈ Z+
c) A = Z; aℜb ⇔ |a − b| = 4
d ) A = Z+ ; aℜb ⇔ |a − b| ≤ 2
e) A = Z; aℜb ⇔ a + b es par
f ) A = Z; aℜb ⇔ a + b es impar
g) A = Z; aℜb ⇔ a − b es par
h) A = Z; aℜb ⇔ a − b es impar
16. Sea A = {x, y, z} . Determinar si la relación ℜ cuya matriz Mℜ se muestra a continuación, es una relación
de equivalencia.  
1 0 1
 
 
M ℜ = 0 1 1
 
0 1 1

A. Caicedo B., G. Wagner de G., R. M. Méndez


38 RELACIONES Y GRAFOS

17. Para los ejercicios de a hasta e, considere la relación ℜ cuyo grafo dirigido se ilustra en la figura 18.

1 2 7

3 6
4

5
Figura 18.

a) Listar todas las trayectorias de longitud 3 que se inicien en el nodo 1.


b) Encontrar un ciclo que se inicie en el nodo 2.
c) Trazar el grafo dirigido de ℜ2 .
d ) Encontrar Mℜ2 , ℜ∞ y Mℜ∞ .
e) Encontrar todas las trayectorias de longitud 4 que se inicien en el nodo 4.

18. Sean ℜ y S las siguientes relaciones sobre A = {1, 2, 3, 4}

S = {(2, 1) , (3, 3) , (3, 4) , (4, 1) , (4, 2)} y


ℜ = {(1, 1) , (1, 3) , (3, 2) , (3, 4) , (4, 2)}

Encontrar cada una de las siguientes relaciones compuestas:


a) ℜ ◦ S
b) S ◦ ℜ
c) ℜ ◦ ℜ
d) S ◦ S
19. Para las relaciones del ejercicio 18 hallar:
a) ℜ
b) S
c) ℜ−1
d ) S −1
20. Aplicar el algoritmo de Warshall para hallar la matriz de alcanzabilidad del siguiente grafo

1 2 3

4 5

Figura 19.

A. Caicedo B., G. Wagner de G., R. M. Méndez


ulo
pít
Ca

3 CONEXIDAD

El concepto de conexidad en la teoría de grafos es uno de los conceptos más importantes


y de mayor aplicabilidad. Para desarrollar este concepto se hace uso de otros que ya fueron
tratados en la unidad anterior, tales como trayectoria y ciclo o circuito.

Como en la mayoría de las situaciones de optimización en redes y árboles se requiere


que el grafo o red inicial sea conexa, es conveniente establecer un algoritmo que determine si
un grafo es conexo o nó. Este es el propósito central de la presente unidad.

3.1 Grafo Conexo

Definición 3.1 Grafo Conexo


Un grafo se dice ser conexo si para cada par de vértices x e y existe una trayectoria desde x hasta
y la cual use máximo n-1 arcos.

Un grafo conexo consiste de una sola pieza, mientras que un grafo que no es conexo consiste de dos o más
piezas. Estas piezas son subgrafos del grafo original y son llamadas componentes.

Definición 3.2 Grafo Fuertemente Conexo


Un grafo orientado es fuertemente conexo si para cada par de vértices x e y existe una trayectoria
desde x hasta y y una trayectoria desde y hasta x. Las trayectorias pueden ser diferentes

Definición 3.3 Grafo Dirigido Conexo


Un grafo dirigido es llamado conexo si para cada par de vértices x e y existe una trayectoria desde
un nodo al otro.

Sea M una matriz de adyacencias del grafo G donde cada elemento mij de M es de la forma
(
1, si existe el arco (i, j)
mij =
0, si no existe el arco (i.j)

39
40 CONEXIDAD

Al efectuar M ∗ M = M 2 sus entradas indicarán el número de trayectorias diferentes que existen entre
cada par de nodos y que tengan longitud de 2 arcos. Similarmente en M 2 ∗ M = M 3 sus entradas
indicarán el número de trayectorias diferentes que existen entre cada par de nodos y que tienen longitud
de tres arcos.

En al menos una de las matrices M, M 2 , . . . , M n−1 habrá una entrada no cero en la (i, j) − ésima
posición si existe una trayectoria entre i y j.

Al formar la matriz C = M + M 2 + M 3 + . . . + M n−1 , ésta tendrá una entrada cero para cualquier
nodo que no esté conectado a otro. Si C es totalmente no cero entonces el grafo es conexo.

A partir de la matriz de adyacencias se puede determinar si un grafo es conexo o nó siguiendo el al-


goritmo que a continuación se describe.

3.2 Algoritmo para Conexidad

paso 0. Entrar la matriz de adyacencias M.


Hacer n el número de nodos.

paso 1. Hacer C = M
Hacer I = 1

paso 2. Si C tiene todas las filas libres de ceros ejecutar paso 4, en caso contrario continuar.

paso 3. Hacer I = I + 1
Si I = n, ejecutar paso 5, en caso contrario hacer C = C + M I y regresar al paso 2.

paso 4. Parar, Imprimir el grafo es conexo.

paso 5. Parar, Imprimir, el grafo no es conexo.

Ejemplo 1
Usando el algoritmo anterior, determinar si el grafo de la figura 1 es conexo

1 3
4

5 6

Figura 1.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo para Conexidad 41

Solución
Paso 0. Matriz de adyacencias. n = 6.
 
0 1 0 1 0 0
 
1 0 1 0 0 0
 
0 1 0 0 1 1
M = 
1 0 0 0 1 0
 
0 0 1 1 0 1
0 0 1 0 1 0

paso 1. Hacer C = M , I = 1
paso 2. C no tiene todas las filas libres de cero. Continuar
paso 3. Hacer I = I + 1 = 2 I 6= n, hacer C = C + M2 .
     
0 1 0 1 0 0 2 0 1 0 1 0 2 1 1 1 1 0
     
1 0 1 0 0 0  0 2 0 1 1 1  1 2 1 1 1 1
     
0 1 0 0 1 1  1 0 3 1 1 1  1 1 3 1 2 2
C= + = 
1 0 0 0 1 0  0 1 1 2 0 1  1 1 1 2 1 1
     
0 0 1 1 0 1  1 1 1 0 3 1  1 1 2 1 3 2
0 0 1 0 1 0 0 1 1 1 1 2 0 1 2 1 1 2

paso 2. C no tiene todas las filas libres de cero. Continuar


paso 3. Hacer I = I + 1 = 3 I 6= n, Hacer C = C + M 3.
     
2 1 1 1 1 0 0 3 1 3 1 2 2 4 2 4 2 2
     
1 2 1 1 1 1  3 0 4 1 2 1  4 2 5 2 3 2
     
1 1 3 1 2 2  1 4 2 2 5 4  2 5 5 3 7 6
C= + = 
1 1 1 2 1 1  3 1 2 0 4 1  4 2 3 2 5 2
     
1 1 2 1 3 2  1 2 5 4 2 4  2 3 7 5 5 6
0 1 2 1 1 2 2 1 4 1 4 2 2 2 6 2 6 4

paso 2. C tiene todas las líneas libres de cero. Ir al paso 4.


paso 4. Parar. Imprimir el grafo es conexo.

Cuando se hace mención a la frase “está conectado por una trayectoria”, se está definiendo una relación
ℜ sobre el conjunto de los vértices de un grafo. Para un grafo no dirigido, la relación bajo A (un conjunto
de arcos) es simétrica, entonces, ℜ es simétrica y transitiva. Asumiendo que cada vértice está conectado
a si mismo por una trayectoria de longitud cero, entonces ℜ es reflexiva. Luego ℜ es una relación de
equivalencia.

El conjunto de vértices puede ser particionado en clases de equivalencia.

Dado que en cada clase de equivalencia todas las aristas están conectando sus vértices, se pueden construir
subgrafos de G, los cuales se llaman componentes de conectividad o simplemente componentes conexas
del grafo.

A. Caicedo B., G. Wagner de G., R. M. Méndez


42 CONEXIDAD

Definición 3.4
Sea el grafo G (N, A) y ni ∈ N uno de los nodos. Se denota Cni el conjunto formado por el nodo
ni y todos los nodos de G ligados a ni , por una trayectoria.

Definición 3.5
Se llama componente conexa de G a un subgrafo de G engendrado por un conjunto de la forma
Cni .

Ejemplo 2
En el grafo siguiente las dos subgráficas son componentes conexas del grafo dado.
2
4

1 3 6

Figura 2.

Definición 3.6
El número de componentes de un grafo G es llamado el número de conectividad de G y es notado
por C (G) .

Teorema 1

G es conexo si y solo si C (G) = 1.

3.3 Algoritmo para Grafos no Dirigidos

El siguiente algoritmo calcula el número de conectividad C (G) de un grafo G.

Sea G (N, A) un grafo no dirigido. Sea C (G) el número de conexidad de G. El procedimiento es el


siguiente:

Se parte de cualquier nodo y se procede a encontrar todos los nodos que son vecinos al nodo origi-
nal. Luego se procede a encontrar todos los vecinos de ellos y así sucesivamente hasta que no haya más
vecinos. Esto significa que se ha encontrado una componente completa. Luego se salta a la siguiente
componente y se ejecuta el mismo procedimiento. Como el grafo es finito, entonces eventualmente todos
los nodos son alcanzados.
A. Caicedo B., G. Wagner de G., R. M. Méndez
Algoritmo para Grafos no Dirigidos 43

ALGORITMO
Inicio
N′ ← N
C←0
mientras N ′ 6= ∅ haga
inicio
Escoger n ∈ N ′
Encontrar todos los nodos conectados a n y guardarlos en W
Remover todos estos nodos de N ′ , es decir, hacer N ′ = N ′ − W
C =C +1
Terminar
Terminar

Ejemplo 3
Aplicar el algoritmo anterior al grafo de la figura 3.

2 5 6 7

1 3 10
b

8
4 9
Figura 3.
SOLUCIÓN
N ′ = {1, 2, . . . , 10} C = 0
Primera iteración:
N ′ 6= ∅ continuar
Escoger n = 5 arbitrariamente
W = {5, 6, 7, 8, 9} nodos conectados a n (componente)
N ′ = N ′ − W = {1, 2, 3, 4, 10}
C =0+1=1
Segunda iteración
N ′ 6= ∅ continuar
Escoger n = 1 arbitrariamente
W = {1, 2, 3, 4} nodos conectados a n (componente)
N ′ = N ′ − W = {10}
C =1+1=2
Tercera iteración
N ′ 6= ∅ continuar
Escoger n = 10 arbitrariamente
W = {10} nodos conectados a n (componente)
N′ = N′ − W = ∅
C =2+1=3
Cuarta iteración
N ′ = ∅ Parar
No se pudieron visitar todos los nodos, entonces el grafo no es conexo.

A. Caicedo B., G. Wagner de G., R. M. Méndez


44 CONEXIDAD

Ejercicios Capítulo 3

1. Use el algoritmo de conexidad para determinar si el grafo cuya matriz de adyacencias que se da a
continuación, es conexo o nó.  
0 0 1 0 0
 
0 0 0 1 0
 
1 0 0 0 1
 
0 1 0 0 1
0 0 1 1 0

2. Por simple inspección determinar cuál es el arco que hace que el siguiente grafo sea conexo
b b

b b b

b b

Figura 4.

3. Verificar si los siguientes enunciados son ciertos o no.


a) Un grafo con A ≥ N es conexo.
b) Un grafo con A ≤ V − 2 no es conexo.
c) Un grafo que contiene un ciclo permite la remoción de algún arco y sigue siendo conexo.
4. Use el algoritmo anterior para verificar si el grafo de la figura 5 es conexo o no.
c
b

d
Figura 5.

5. Aplique un algoritmo para mostrar si el siguiente grafo no dirigido es conexo o no.


a b

e
c

d f
Figura 6.

A. Caicedo B., G. Wagner de G., R. M. Méndez


ulo
pít
Ca

4 CIRCUITO EULERIANO

Cuando se posee una red no dirigida conexa se puede diseñar un circuito que recorra todos
sus nodos, partiendo de un nodo específico y regresando a él, pero sin pasar más de una vez
por cada arco, además escogiendo el circuito de forma tal que el recorrido sea mínimo.

Este tipo de problema se resuelve hallando un circuito euleriano de longitud mínima.

4.1 Circuito de Euler

Definición 4.1 Circuito Euleriano


En una red conexa, un circuito que recorra todos los nodos y todos los arcos pasando una vez por
cada arco, se llama circuito euleriano.

Si la red no es conexa puede ocurrir que no exista un circuito euleriano.

Definición 4.2 Trayectoria Euleriana


Una trayectoria euleriana es una trayectoria que incluye cada arco exactamente una sola vez.

El problema de determinar un circuito euleriano de longitud mínima de una red conexa, también es
llamado El Problema del Cartero o Problema Chino del Cartero el cual apareció formulado por primera
vez por M. K. Kwan en el Chinese Mathematical Journal. Sus orígenes se remontan a 1736 cuando
Leonard Euler estudió el problema de los puentes de Königsberg.

4.1.1. Puentes de Königsberg


La ciudad de Königsberg, situada en Prusia Oriental, en la época de Euler (1707-1783) y hoy perteneciente
a Rusia con el nombre de Kaliningrado es atravesada por el río Pregel o Pregolia. La parte central de la
ciudad se encuentra sobre una isla del río llamada Kniphof que se une a las dos orillas por cuatro puentes,
dos a cada lado; un quinto puente une a Kniphof con otra isla que también está unida a las orillas por
dos puentes, uno hacia cada orilla.
45
46 CIRCUITO EULERIANO

Figura 1. Puentes de Königsberg

En aquella época alguien propuso el siguiente problema: “¿Será posible, en una sola caminata, pasar por
los siete puentes sin cruzar ninguno de ellos dos veces?”. En la ciudad de San Petesburgo, entonces capital
de Rusia, el matemático suizo Leonard Euler, analizó el problema y escribió un trabajo que presentó a
la Academia Rusa de Ciencias. Este trabajo demostró que el problema tal como había sido propuesto no
tiene solución.

El problema lo esquematizó en un grafo donde sustituyó las porciones de tierra por puntos o nodos
y los puentes por líneas o arcos como se muestra en la figura 2.

B D

C
Figura 2.

Bajo esta simplificación el problema se resumía en coger un lápiz y a partir de un nodo del grafo y sin
levantarlo, tratar de recorrer todo el grafo sin repetir arco. Esto equivaldría a atravesar físicamente los
siete puentes del problema, donde el concepto recorrer el grafo es pasar todos los arcos solamente una
vez y regresar al punto de partida.

En su trabajo Euler descubrió que un grafo puede ser recorrido (cruzado) si todos sus nodos son pares.
Obsérvese que en el grafo de los puentes todos los nodos son de grado impar.

Para iniciar el proceso de hallar un ciclo euleriano en una red conexa, son de gran ayuda los siguientes
teoremas:

Teorema 1

G es un gafo conexo y de grado par si y solo si G tiene un ciclo euleriano.

Teorema 2

Un grafo conexo es euleriano si y solo si cada nodo tiene grado par.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Circuito de Euler 47

Definición 4.3
Una red par es aquella en la cual el número de arcos que inciden a todos y cada uno de los nodos
es par.

Corolario

Un grafo conexo contiene una trayectoria euleriana, pero no un ciclo euleriano, si y solo sí
exactamente dos nodos tienen grado impar. La trayectoria debe comenzar en un nodo impar y
terminar en otro nodo impar.

Ejemplo 1
Si en el grafo de los puentes se retira el arco BD, solamente los nodos A y C serán de grado impar
y el grafo podrá cruzarse pero no se logrará regresar al punto de partida (figura 3a). Si se agrega
un nuevo arcoAC, solamente los nodos B y D serán impares y se podrá cruzar el grafo pero no se
podrá regresar al punto de partida (figura 3b). Si se hacen conjuntamente los dos casos anteriores
(retirar el arco BD y agregar el arco AC) todos los nodos quedan de orden par y el grafo podrá ser
recorrido y regresar al nodo de partida (figura 3c).

A A A

B D B D B D

C C C

a) b) c)
Figura 3.

Con relación al corolario anterior se puede afirmar que la trayectoria euleriana empieza en un nodo impar
y termina en el otro nodo impar.

De acuerdo a estos teoremas, si el grafo es par entonces la solución óptima al problema del cartero
es un ciclo euleriano. El cartero no tiene que repetir ningún arco.

Para una red par la búsqueda de un ciclo euleriano se puede desarrollar en la siguiente forma:
1. Dividir el conjunto de datos en dos subconjuntos: uno que contenga los arcos usados en el circuito
y otro que contenga los no usados. Inicialmente todos los arcos están en el segundo conjunto.
2. El circuito es construido transfiriendo arcos del segundo conjunto al primero a medida que se van
usando.
3. Partiendo de un nodo origen cualquiera se selecciona un arco no usado que sea incidente a ese nodo
origen. Este arco se considera usado y se transfiere del segundo conjunto al primero.
4. Se repite el proceso hallando un nuevo arco no usado incidente al último nodo del arco anterior
usado. Así el circuito se construye arco por arco, hasta que eventualmente se regresa al nodo origen.
A. Caicedo B., G. Wagner de G., R. M. Méndez
48 CIRCUITO EULERIANO

El siguiente algoritmo se basa en los conceptos anteriores y permite hallar un circuito de Euler de longitud
mínima en redes conexas de orden par.

4.2 Algoritmo de Euler

Paso 0. Determinar el orden de cada nodo del grafo G = (N, A). Hacer S el conjunto de todos los
nodos de orden impar. Si S es vacío ejecutar el paso 1.
Paso 1. Hallar un ciclo euleriano:

a. Marcar el origen del ciclo con s y el último nodo visitado con t. Hacer U = conjunto
de arcos que van a formar el ciclo parcial. Hacer V = conjunto de arcos que forman
ciclos parciales empezando en s.

b. Escoger cualquier arco entre t y q que esté sin usar, marcarlo como usado y adicionarlo
a U. Hacer t = q.

c. Si t diferente de s, repetir paso 1b, en caso contrario continuar.

d. Inserta U en V , en el punto donde el nodo s es alcanzado por primera vez. U queda


vacío. Encontrar un nodo t que esté visitado en V pero que tenga arcos incidentes no
usados. Si tal nodo no existe PARAR. En caso contrario hacer s = t y repetir paso 1b.

Ejemplo 2
Hallar la trayectoria del cartero para el grafo de la figura 4 aplicando el algoritmo anterior.

3
4

6 5 1
2

3
3 4

5
Figura 4.

paso 0. La matriz de distancias es


 
0 4 2 ∞ ∞
4 0 5 3 6
 
D=2 5 0 3 7
∞ 3 3 0 ∞
∞ 6 7 ∞ 0

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo de Euler 49

El grado de los nodos es:


nodo 1 grado 2
nodo 2 grado 4
nodo 3 grado 4
nodo 4 grado 2
nodo 5 grado 2
No hay nodos de grado impar. S = 0, ejecutar paso 3.

paso 1. Hallar un ciclo euleriano de G.


1a. Hacer s = 1 y t = s. U = V = ∅. Todos los arcos de A están sin usar.
1b. Escoger el arco (1, 2) y marcarlo como usado. U = {(1, 2)}, t = 2.
1c. Aún t diferente de s, repetir paso 1b.
1b. Escoger el arco (2, 5) y marcarlo como usado. U = {(1, 2)(2, 5)}, t = 5
1c. Aún t diferente de s, repetir paso 1b.
1b. Escoger el arco (5, 3) y marcarlo como usado. U = {(1, 2)(2, 5)(5, 3)}, t = 3
1c. Aún t diferente s, repetir paso 1b.
1b. Escoger el arco (3, 1) y marcarlo como usado. U = {(1, 2)(2, 5)(5, 3)(3, 1)}, t = 1.
1c. Ahora t = s. continuar
1d. Insertar U en V . Como V = ∅ entonces:
V = U = {(1, 2)(2, 5)(5, 3)(3, 1)}. Hacer U = ∅
En V hay dos nodos que tienen arcos incidentes no usados:
Nodo 2 tiene 2 arcos no usados: (3, 2), (4, 2).
Nodo 3 tiene 2 arcos no usados: (2, 3), (4, 3).
Escoger uno de estos nodos y hacerlo igual a t. Sea t = 2 = s. Repetir paso 1b
1b. Escoger el arco (2, 4) y marcarlo como usado. U = {(2, 4)}, t = 4.
1c. Aún t es diferente de s repetir paso 1b.
1b. Escoger el arco (4, 3) y marcarlo como usado. U = {(2, 4)(4, 3)}, t = 3.
1c. Aún t es diferente de s repetir paso 1b.
1b. Escoger el arco (3, 2) y marcarlo como usado. U = {(2, 4)(4, 3)(3, 2)}, t = 2.
1c Ahora t = s, continuar.
Insertar U en V en la posición donde se encuentre t por primera vez
V = {(1, 2), U, (2, 5)(5, 3)(3, 1)}
V = {(1, 2)(2, 4)(4, 3)(3, 2)(2, 5)(5, 3)(3, 1)}
Hacer U = ∅
En V ya no hay nodos con arcos incidentes sin usar. PARAR. El ciclo óptimo es

V = {(1, 2)(2, 4)(4, 3)(3, 2)(2, 5)(5, 3)(3, 1)}

Long(V ) = 4 + 3 + 3 + 5 + 6 + 7 + 2 = 30

Si el grafo es conexo y de orden par, el paso 1 del algoritmo anterior se puede reemplazar por el siguiente
procedimiento:

A. Caicedo B., G. Wagner de G., R. M. Méndez


50 CIRCUITO EULERIANO

paso 0. Verificar que el grafo G = (N, A) es conexo con todos los nodos de orden par.
paso 1. Hacer C = {x} con x ∈ N (un nodo arbitrario),
paso 2. Mientras |A(G)| > 0 hacer:
begin
paso 3. Escoger x en N (C) con grado mayor de 0, y que no haya sido escogido con anterio-
ridad.
paso 4. Crear un ciclo D máximo simple que comience en x
paso 5. Hacer A(G) = A(G) − A(D)
paso 6. Hacer C = ciclo obtenido desde C al insertar D en la posición x.
end.
paso 7. Tomar C como el ciclo euleriano. Parar.

Ejemplo 3
Aplicar el procedimiento anterior para establecer si el grafo de la figura 5 contiene un ciclo euleriano.
1 2 9 3 4

8 7 6 5
Figura 5.

Obsérverse que el grafo tiene todos sus nodos de grado par.


La aplicación sucesiva del algoritmo se muestra en la siguiente tabla, escogiendo el nodo 9 como nodo
inicial y N = {1, 2, 3, 4, 5, 6, 7, 8, 9}

Paso X C D |A(G)| > 0 A(G)


1 9 {9}
2 si
3 9
4 {9, 6, 7, 9}
5 11 − 3 = 8
6 {9, 6, 7, 9}
2 si
3 6
4 {6, 3, 4, 5, 6}
5 8−4=4
6 {9, 6, 3, 4, 5, 6, 7, 9}
2 si
3 7
4 {7, 2, 1, 8, 7}
5 4−4=0
6 {9, 6, 3, 4, 5, 6, 7, 2, 1, 8, 7, 9}
2 no parar

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo de Euler 51

Ejercicios Capítulo 4

1. Aplicar el algoritmo general de Euler para hallar un circuito euleriano en el grafo de la figura 6,
usando el nodo a como nodo inicial.
a

d c e

f g
Figura 6.

2. Mostrar que el grafo de la figura 7 tiene una trayectoria euleriana, pero no un circuito euleriano.
Construir la trayectoria.
a

b c

d e
Figura 7.

3. Mostrar que el grafo de la figura 8 no tiene trayectoria euleriana.

Figura 8.

4. Un ingeniero supervisor de carreteras tiene asignado un circuito vial que debe revisar una vez por
semana para informar sobre el estado de dichas vías. El circuito vial es el de la figura 9
2
10 12
20 14
1 3 4

18
9 18
25
5
7 6 11
10 Figura 9.

A. Caicedo B., G. Wagner de G., R. M. Méndez


52 CIRCUITO EULERIANO

El ingeniero tiene su sede en la ciudad 1 y debe planear su recorrido en forma tal que recorra todas
las carreteras de la red vial con el mínimo de distancia recorrida.

5. En una red de estaciones repetidoras se emite una señal de prueba de la estación R1, la señal debe
llegar a todas las otras estaciones; cada estación la replica a la estación más cercana, hasta que la
señal regresa a R1. Determinar la trayectoria seguida por la señal de prueba si la red de repetidoras
es la mostrada en la figura 10.
R2
20
35
18
R1 30
R4 R3
30 80
26
24 30
32

R5 R6
35
72

Figura 10.

A. Caicedo B., G. Wagner de G., R. M. Méndez


ulo
pít

5
Ca

CICLO HAMILTONIANO

Cuando se tiene un grafo conexo no dirigido G = (N, A) puede ocurrir que se desea hacer
un recorrido por el grafo, que pase por todos lo nodos, sin repetir nodo y regresar al nodo de
partida. Tal tipo de recorrido se define como un ciclo o circuito hamiltoniano.
El nombre de este tipo de ciclo se ha dado en honor al matemático irlandés Sir William Rowan
Hamilton (1805-1865), quien fue el primero que los estudió en 1857.
Si el grafo G tiene asociados a sus arcos valores que pueden ser las distancias entre los nodos
o el costo de recorrer dichas distancias, es de interés hallar un circuito que recorra todos los
nodos una sola vez, y que tenga distancia mínima o costo mínimo. Este problema ha sido
formulado desde hace mucho tiempo con el nombre de: “Problema del Agente Viajero”.

5.1 Ciclo de Hamilton

Definición 5.1

En un grafo G = (N, A), una trayectoria (o ciclo) que contenga exactamente n − 1 arcos y recorra
todos los nodos, es llamado hamiltoniana. Un grafo es llamado hamiltoniano si contiene un ciclo
hamiltoniano.

No hay una regla simple para determinar la existencia de un circuito hamiltoniano como si la hay para
circuitos eulerianos. Es cierto que un grafo con circuito hamiltoniano es conexo, pero no cada grafo conexo
tendrá un circuito hamiltoniano.
Si un grafo representa un conjunto de ciudades a ser visitadas, luego una trayectoria que visite cada
ciudad exactamente una sola vez es un circuito hamiltoniano. Asumiendo que cada ciudad está conectada
por un arco a cada una de las otras ciudades, siempre habrá un circuito hamiltoniano.

Teorema 1 De Dirac

Si G tiene n mayor o igual a 3 nodos y cada nodo tiene grado al menos n/2, entonces G es
hamiltoniano.

Teorema 2 de la existencia de las trayectorias

Sea G un grafo conexo sin lazos, con n nodos, n ≥ 3. Si ∀x, y ∈ N, x 6= y, grad(x)+grad(y) ≥ n−1,
entonces G tiene una trayectoria Hamiltoniana

53
54 CICLO HAMILTONIANO

Ejemplo 1 1 2 3

5 4
Figura 1.

Obsérvese que para cualquier par de nodos que se escoja, se cumple que la suma de los grados es
n ≥ 1, por lo tanto el grafo tiene una trayectoria Hamiltoniana, ésta podría ser 1 − 4 − 3 − 2 − 5.

Basado en el teorema anterior De Dirac, se obtiene el siguiente algoritmo

5.2 Algoritmo Hamiciclo

paso 1 Entrar el grafo G con N nodos todos de grado ≥ N/2


paso 2 Hacer P = (trayectoria vacía)
paso 3 Repita Hasta |N (c)| = N
begin
paso 4. Escoger z ∈ {N (G) − N (P )}. P trayectoria maximal que contiene a N (P ) y a z
paso 5. Hallar C un ciclo sobre N (P )
end
paso 6 Imprimir C y parar.

Ejemplo 2
Aplicar el algoritmo anterior al grafo de la figura 2 para hallar un ciclo hamiltoniano C
u

x v t w y

Figura 2.
Solución
El seguimiento del algoritmo se muestra en la tabla siguiente:

paso z P C |N (C) = N |
2 ∅
4 x {x, v, t, w, y}
5 {x, t, w, y, v, x} no
4 u {u, t, w, y, v, x}
5 {u, w, y, v, x, t, u} si
6 {u, w, y, v, x, t, u} parar

A. Caicedo B., G. Wagner de G., R. M. Méndez


Problema del Agente Viajero 55

5.3 Problema del Agente Viajero

Sea G = (N, A) un grafo conexo cuyos nodos representan ciudades y sus arcos representan las carreteras
que unen cada par de ciudades. El valor asociado a cada arco d(x, y) ≥ 0 es la distancia entre ellas. Un
agente viajero desea escoger una ruta que le permita visitar cada ciudad una sola vez y retornar a la
ciudad de origen cubriendo el mínimo de distancia.

Planteado en esta forma, el problema del agente viajero es equivalente a hallar un ciclo hamiltoniano
con la distancia mínima o costo mínimo

Un circuito hamiltoniano con la menor longitud total es llamado un ciclo hamiltoniano óptimo y es
una solución óptima al problema del agente viajero.

Un circuito óptimo para el problema del agente viajero no necesariamente es un circuito hamiltonia-
no óptimo como se observa en el siguiente gráfico.

b
2

2
15
a 4

4 c
Figura 3.

El único circuito hamiltoniano en este grafo es:

(a, b)(b, c)(c, a)

con una longitud total de 2 + 15 + 4 = 21 unidades, mientras que para el agente viajero lo más económico
sería hacer el siguiente recorrido:
(a, b)(b, a)(a, c)(c, a)
con longitud total 2 + 2 + 4 + 4 = 12 unidades. Este circuito no es hamiltoniano pero es una solución
óptima para el agente viajero.

Para resolver situaciones como la anterior se ha establecido una condición de optimización, expresa-
da en el siguiente teorema:

Teorema 3

Si para cada par de nodos x e y en el grafo G se cumple que d(x, y) ≤ d(x, z) + d(z, y) ∀z ∈
G, z 6= x 6= y, entonces un circuito hamiltoniano en G es una solución óptima al problema del agente
viajero si la solución existe.

Para hallar una solución aproximada al problema del agente viajero se dispone de diversos algoritmos
como los de Bellmore-Nemhauser (1968), Held-Karp (1970), Garfinkel-Nemhauser (1972), Little-Murty
(1973) y otros. Todos estos algoritmos caen dentro de dos categorías:
A. Caicedo B., G. Wagner de G., R. M. Méndez
56 CICLO HAMILTONIANO

1. Algoritmo que siempre halla una solución óptima pero que se requiere de un número muy grande
de operaciones.

2. Algoritmo que encuentra un circuito hamiltoniano pero que no siempre es el óptimo. Requiere un
número razonable de operaciones.

Un algoritmo que encuentra una sub-óptima solución al problema del agente viajero en un grafo completo
es el llamado algoritmo del vecino más cercano. Este algoritmo se describe a continuación.

5.4 Algoritmo del Vecino más Cercano

paso 0. Entrar un grafo G = (N, A) completo.


paso 1. Escoger cualquier nodo n1 ∈ N
Hacer n′ = n1 y w = 0 (w es el valor del arco, o longitud de la trayectoria)
Adicionar n′ a la lista de nodos en la trayectoria.
paso 2. Marcar n′
Mientras existan nodos sin marcar, hacer:
begin
paso 3. Escoger cualquier nodo u no marcado que sea el más
cercano a n′ y adicionarlo a la lista de nodos en la
trayectoria.
paso 4. Hacer w = w+ el valor del arco (n′ , u)
paso 5. Hacer n′ = u
end
paso 6. Adicionar n1 a la lista de nodos en la trayectoria.
paso 7. Hacer w = w+ el valor del arco (n′ , n1 )
paso 8. Imprimir la trayectoria. Parar

Ejemplo 3
Aplicar el algoritmo del vecino más cercano al grafo pesado de la figura 4, para hallar un ciclo
hamiltoniano.
b
5
10
a d
7

6 3
c
8
Figura 4.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo del Vecino más Cercano 57

Solución
paso 0. El grafo dado es completo.
paso 1. Escoger arbitrariamente a b como nodo inicial.
Hacer n′ = b, y w = 0

Adicionar n′ a la lista de nodos en la trayectoria. T = {b}


paso 2. Marcar n′ . Aún quedan nodos sin marcar. Ejecutar pasos 3 a 5.
paso 3. Escoger el nodo a que es el más cercano a b de los adyacentes sin marcar.
Adicionarlo a la trayectoria. T = {b, a}.
paso 4. Hacer w = w+ valor de (b, a) = 0 + 5 = 5.
paso 5. Hacer n′ = a.
paso 2. Marcar n′ . Aún quedan nodos sin marcar. Ejecutar pasos 3 a 5
paso 3. Escoger el nodo c que es el más cercano a a de los adyacentes sin marcar.
Adicionarlo a la trayectoria. T = {b, a, c}.
paso 4. Hacer w = w+ valor de (b, c) = 5 + 6 = 11
paso 5. Hacer n′ = c.
paso 2. Marcar n′ . Aún quedan nodos sin marcar. Ejecutar pasos 3 a 5
paso 3. Escoger el nodo d que es el más cercano a c de los adyacentes sin marcar.
Adicionarlo a la trayectoria. T = {b, a, c, d}
paso 4. Hacer w = w+ valor de (c, d) = 11 + 3 = 14
paso 5. Hacer n′ = d
paso 2. Marcar n′ . No quedan nodos sin marcar. Continuar
paso 6. Adicionar nodo inicial a la trayectoria. T = {b, a, c, d, b}
paso 7. Hacer w = w+ valor de (d, b) = 14 + 10 = 24.
paso 8. Imprimir la trayectoria: T = {b, a, c, d, b}. El valor del circuito es de 24
unidades. Parar

Se ha hallado un circuito hamiltoniano que no es una solución óptima al problema del agente viajero
puesto que si se toma como nodo inicial al nodo a, el circuito resultante será de longitud 23 como se
muestra en la figura 5.
b
5

a d
7

3
c

8
Figura 5.

A. Caicedo B., G. Wagner de G., R. M. Méndez


58 CICLO HAMILTONIANO

Teorema 4

Sea G un grafo conexo sin lazos, con n nodos, n ≥ 3. Entonces ∀x, y ∈ N, si grad(x) + grad(y) ≥ n
y x e y no están conectados por un arco, entonces G es hamiltoniano

Ejemplo 4

1 2 
(2, 3),
 no existe
n = 5 y (3, 4), no existe
3 
no existe

(1, 5),
4 5

Figura 6.
 
 grad(2) + grad(3) = 3 + 2 =5 ≥ 5
 
grad(3) + grad(4) = 2 + 3 =5 ≥ 5 =⇒ G es hamiltoniano

 

grad(1) + grad(5) = 3 + 3 =6 ≥ 5

Teorema 5

Sea G un grafo conexo sin lazos, |N (G)| = n ≥ 3. Si G tiene al menos 21 (n − 1)(n − 2) + 2 arcos,
entonces G es hamiltoniano

Ejemplo 5

b b b

n = 5 y 12 (5 − 1)(5 − 2) + 2 = 8 aristas,
entonces G es hamiltoniano

b b

Figura 7.

Nota: Observe que los grafos de los ejemplos 4 y 5 son hamiltonianos pero no cumplen el teorema de
Dirac.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo del Vecino más Cercano 59

Ejercicios Capítulo 5
1. Encontrar un ciclo hamiltoniano y un circuito euleriano para el grafo de la figura 8.
2 3 4

1 5 8

6 7
Figura 8.

2. Aplique el algoritmo del vecino más cercano para hallar un ciclo hamiltoniano en el grafo de la
figura 9, empezando en el nodo a) 1; b) 2; c) 3.
4 6 7
1 2 3 4
12 3 11

9 10
10 2 6 8
5

5 6 7 8
5 4 3
Figura 9.

3. Cuáles de los grafos de la figura 10 contienen un circuito hamiltoniano. Cuáles contienen una
trayectoria hamiltoniana pero no un circuito hamiltoniano
b b b b b b b

b b b b b b b b b

b b b b b b

Figura 10.

4. Encontrar un circuito hamiltoniano en el grafo de la figura 11.


b

b b

b b
b b
b b

b b
b b

b b b

b b

A. Caicedo B., G. Wagner de G., R. M. Méndez


60 CICLO HAMILTONIANO

Figura 11.

5. Aplique el algoritmo HAMICICLO al grafo de la figura 12.

a b c d e

Figura 12.

A. Caicedo B., G. Wagner de G., R. M. Méndez


ulo
pít

6
Ca

LA TRAYECTORIA MÁS CORTA

Existen diversas situaciones o problemas de la vida real que pueden ser llevadas a formularse
como un caso específico de la Teoría de Grafos, como es el hecho de encontrar la trayectoria
más corta que une dos puntos de abastecimiento, dos ciudades, etc.

Algunos de los problemas más comunes que pueden darse dentro de este ámbito son:

a. Las compañías aéreas necesitan con frecuencia determinar las rutas más cortas de sus vuelos que
cubran el máximo número posible de los aeropuertos a los cuales están autorizados para llegar.

b. Los agentes viajeros de las compañías comerciales requieren de rutas que les permitan visitar el
mayor número de clientes sin salirse del límite de sus presupuestos.

c. Las agencias de inversionistas deben decidir cómo invertir óptimamente sus fondos, escogiendo de
entre una gama de posibilidades de diversos montos y tiempos de duración, y así llegar a establecer
el mejor plan de inversión, el cual correspondería a la trayectoria más corta de una red establecida
considerando los nodos como fechas y los valores de los arcos como las rentabilidades esperadas.

d. Las compañías manufactureras deben enfrentar el problema de reposición de maquinaria después


de un período de tiempo dado, por lo cual pueden planear una política de reemplazo que minimice
el costo total de operación para la máquina durante dicho periodo. Esta política se puede establecer
partiendo de plantear el modelo como un problema de ruta más corta en una red orientada.

De los algoritmos diseñados para resolver el problema de la trayectoria más corta se destacan:

Algoritmo de DIJKSTRA (1959): permite encontrar la trayectoria más corta entre dos nodos especí-
ficos, cuando los valores de los arcos son todos positivos

Algoritmo de FLOYD (1962): permite encontrar la trayectoria más corta desde un nodo cualquiera
hasta uno de los otros nodos en el grafo, el cual puede tener arcos de valor negativo pero no circuitos
negativos

Algoritmo de FORD (1964): sirve para calcular la trayectoria más corta entre dos nodos dados cuando
los valores de los arcos pueden ser negativos. Es una generalización del algoritmo de DIJKSTRA y
no se puede aplicar a grafos que contengan circuitos cuya longitud total sea negativa.

Algoritmo de DANTZIG (1967): es similar al algoritmo de FLOYD puesto que también encuentra
la trayectoria más corta desde un nodo dado hasta cada uno de los otros nodos en el grafo.

Algoritmo de POLLAC (1967): encuentra la primera y segunda trayectoria más corta en un grafo
que puede tener arcos negativos.
61
62 LA TRAYECTORIA MÁS CORTA

Algoritmo de FLOYD-WARSHALL (1962): permite encontrar el valor de la trayectoria más corta


entre cualquier par de nodos de un grafo dirigido o no dirigido, usando en cada iteración un nodo
intermedio.

6.1 Trayectoria Mínima

Definición 6.1
Dados los nodos ni y nj de un grafo G = (N, A) se llama trayectoria mínima o camino mínimo
de ni a nj al número de arcos del camino de longitud mínima que va desde ni a nj y se representa
por d(ni , nj )

Cuando en el grafo no exista un camino que vaya de ni a nj se dice que el camino mínimo es d(ni , nj ) = ∞.
Además, cuando ni = nj se escribe d(ni , nj ) = 0.

Si ni , nj y nk son nodos adyacentes, entonces:

d(ni , nj ) + d(nj , nk ) ≥ d(ni , nk )

Si el grafo es simétrico, entonces


d(ni , nj ) = d(nj , ni )

Ejemplo 1
Para el grafo de la figura 1 se tiene:
Camino mínimo del nodo 1 al 7 es d(1, 7) = 2
Camino mínimo del nodo 2 al 5 es d(2, 5) = 2

1 3

5
7

2 4 6
Figura 1.

6.2 Algoritmo del Camino Mínimo

Para determinar el o los caminos mínimos que van desde el nodo np al nodo nf en un grafo no pesado
se sigue el siguiente procedimiento:
A. Caicedo B., G. Wagner de G., R. M. Méndez
Trayectoria del Valor Mínimo 63

paso 1. Se marca con 0 el nodo np (np = nodo de partida)


paso 2. Se marcan con 1 a todos los nodos ni no marcados, adyacentes a np , y tales que (np , ni ) ∈ A
(o sea que debe existir arco entre np y ni )
paso 3. Se marcan con 2 los nodos nj no marcados, adyacentes a los nodos ni marcados en el paso
anterior y tales que (ni , nj ) ∈ A
paso 4. Continuar el proceso hasta llegar a marcar el nodo nf , los caminos mínimos quedan deter-
minados por las secuencias de nodos que están marcados en secuencia ascendente 0, 1, 2, . . .

Ejemplo 2
En el grafo de la figura 2 determinar el camino mínimo desde n0 a n7

n3
n5

n0

n2 n7

n1
n4 n6

Figura 2.
Solución
paso 1. Se marca con 0 el nodo n0 , n0 = np
paso 2. Se marcan con 1 los nodos n1 , n2 , n3 adyacentes a n0 .
paso 3. Se marcan con 2 los nodos n4 , n5 adyacentes a n1 , n2 , n3 .
paso 4. Se marcan con 3 los nodos n6 , n7 adyacentes a n4 , n5 . Ya se marcó el nodo final n7. Parar.
El camino mínimo desde n0 a n7 es:
{n0 , n3 , n5 , n7 } ó {n0 , n2 , n4 , n7 } ó {n0 , n1 , n4 , n7 }
Con d(n0 , n7 ) = 3. El camino más corto está formado por los nodos que quedaron
etiquetados en un orden consecutivo ascendente 0, 1, 2, 3.

6.3 Trayectoria del Valor Mínimo

Sea G = (N, A) un grafo y supóngase que todo arco u tiene asociado un número l(u) ≥ 0 llamado valor
de u. Se trata de hallar una trayectoria o camino que vaya desde un nodo vi a otro vj tal que su valor
total sea mínimo. Este problema es resuelto en una forma muy eficiente con el algoritmo propuesto por
Edsgar W. Dijkstra.

A. Caicedo B., G. Wagner de G., R. M. Méndez


64 LA TRAYECTORIA MÁS CORTA

6.4 Algoritmo de DIJKSTRA

El algoritmo asigna un etiqueta a cada nodo en el grafo. Esta etiqueta es la distancia que hay desde el
nodo s escogido como origen a lo largo de la trayectoria más corta encontrada, hasta el nodo que se está
etiquetando.
La etiqueta de cada nodo puede estar en 2 estados:

a. Puede ser permanente: en este caso la distancia encontrada es a lo largo de la trayectoria más corta
de todas las encontradas.

b. Puede ser temporal: cuando hay incertidumbre de que la trayectoria encontrada sea la más corta
de todas.

A medida que el método trabaja se cambian gradualmente las etiquetas temporales por etiquetas perma-
nentes. Al comienzo se tiene un conjunto de nodos con etiquetas temporales y el objetivo es hacer que esas
etiquetas disminuyan, encontrando trayectorias a esos nodos usando trayectorias a nodos etiquetados per-
manentemente. Cuando esto se ha logrado, se selecciona el nodo con la etiqueta temporal más pequeña y
esta etiqueta se convierte en permanente. El proceso se repite hasta que al nodo terminal t se le haya asig-
nado una etiqueta permanente, pero esto puede ocurrir eventualmente, ya que cada vez que el algoritmo
es usado, una de las etiquetas es omitida y así el número de nodos con etiquetas temporales decrece a cero.

Algoritmo:
paso 0. Asignar un etiqueta temporal l(i) = ∞ a todos los nodos i 6= s. Fijar l(s) = 0 y p = s. Hacer
l(s) permanente (p es el último nodo al que se le haya asignado una etiqueta permanente).
s es el nodo de partida
paso 1. Para cada nodo i con una etiqueta temporal redefínase l(i) a ser el menor entre l(i) y
l(p) + d(p, i). Hallar el nodo i con la menor etiqueta temporal. Hacer p igual a éste i y hacer
permanente la etiqueta l(p)
paso 2 Si el nodo t tiene etiqueta temporal, repetir el paso 1. En caso contrario, t tiene una etiqueta
permanente y ésta corresponde a la longitud de la trayectoria más corta desde s hasta t a
través de la red. Parar.

Ejemplo 3
El grafo de la figura 3 muestra los costos en miles de pesos, para transportar una tonelada de
mercancía entre los diversos centros de consumo. Se desea determinar la trayectoria más corta (menos
costosa) para transportar la mercancía desde el centro de abastecimiento S al centro de consumo t
S

4 7
3
a 3
b

2
2

c d t
3 2
Figura 3.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo de DIJKSTRA 65

Para efectos de aplicación del algoritmo, el centro de consumo t se llamará el nodo terminal t

Solución

Matriz de adyacencias (o de costos); si el grafo no es dirigido

s a b c d t
 
s 0 4 7 3 ∞ ∞
a 4 0 3 ∞ 2 ∞
b 7 3 0 ∞ ∞ 2 
M=  
c 3 ∞ ∞ 0 3 ∞
d∞ 2 ∞ 3 0 2 
t ∞ ∞ 2 ∞ 2 0

paso 0. Se asignan etiquetas. Hacer p = s y l(s) = permanente

s a b c d t
l() = 0 ∞ ∞ ∞ ∞ ∞
permanentes? si no no no no no

paso 1. Redefinir etiquetas:


l(a) = mı́n{∞, 0 + 4} = 4
l(b) = mı́n{∞, 0 + 7} = 7
l(c) = mı́n{∞, 0 + 3} = 3
l(d) = mı́n{∞, 0 + ∞} = ∞
l(t) = mı́n{∞, 0 + ∞} = ∞

Hacer p = c y l(c) = permanente

s a b c d t
l() = 0 4 7 3 ∞ ∞
permanentes? si no no si no no

paso 2. El nodo t tiene etiqueta temporal. Repetir paso 1.


paso 1. Redefinir etiquetas:
l(a) = mı́n{4, 3 + ∞} = 4
l(b) = mı́n{7, 3 + ∞} = 7
l(d) = mı́n{∞, 3 + 3} = 6
l(t) = mı́n{∞, 3 + ∞} = ∞

Hacer p = a y l(a) = permanente

s a b c d t
l() = 0 4 7 3 6 ∞
permanentes? si si no si no no

A. Caicedo B., G. Wagner de G., R. M. Méndez


66 LA TRAYECTORIA MÁS CORTA

paso 1. Redefinir etiquetas:


l(b) = mı́n{7, 4 + 3} = 7
l(d) = mı́n{6, 4 + 2} = 6
l(t) = mı́n{∞, 4 + ∞} = ∞

Hacer p = d y l(d) = permanente

s a b c d t
l() = 0 4 7 3 6 ∞
permanentes? si si no si si no

paso 2. El nodo t tiene etiqueta temporal. Repetir paso 1.


paso 1. Redefinir etiquetas:
l(b) = mı́n{7, 6 + ∞} = 7
l(t) = mı́n{∞, 6 + 2} = 8

Hacer p = b y l(b) = permanente

s a b c d t
l() = 0 4 7 3 6 8
permanentes? si si si si si no

paso 2. El nodo t tiene etiqueta temporal. Repetir paso 1.


paso 1. Redefinir etiquetas:
l(t) = mı́n{8, 7 + 2} = 8

Hacer p = t y l(t) = permanente

s a b c d t
l() = 0 4 7 3 6 8
permanentes? si si si si si si

paso 2. El nodo t tiene etiqueta permanente. PARAR


La trayectoria más corta a través de la red desde el nodo s hasta t tiene longitud de 8
unidades (el valor de la etiqueta de t)

6.5 Algoritmo de Floyd-Warshall

El algoritmo de Floyd-Warshall encuentra el camino mínimo entre todos los pares de nodos, en una única
ejecución, en grafos dirigidos ponderados, sin ciclos negativos. El algoritmo compara todos los posibles
caminos a través del grafo entre cada par de nodos y escoge la estimación óptima (la de menor costo).
A. Caicedo B., G. Wagner de G., R. M. Méndez
Algoritmo de Floyd-Warshall 67

Sea G un grafo ponderado de n nodos. Sea cmin(i, j, k) una función que devuelve el camino mínimo de i
a j usando únicamente los nodos de 1 a k como puntos intermedios en el camino. El objetivo es encontrar
el camino mínimo desde cada i a cada j, usando únicamente los nodos 1 hasta k + 1.

El camino óptimo de i a j que utiliza únicamente los nodos de 1 hasta k, como nodos intermedios,
está definido por cmin(i, j, k). Si hubiera un camino mejor de i a k + 1 a j, la longitud de ese camino
sería la concatenación del camino mínimo de i a k + 1 (utilizando nodos de 1 . . . k) y el camino mínimo
de k + 1 a j (que también utiliza los nodos en 1 . . . k)

Proceso Recursivo
cmin(i, j, k) = mı́n [cmin(i, j, k − 1), cmin(i, k, k − 1) + cmin(k, j, k − 1)]
cmin(i, j, 0) = valorarco(i, j)

Para efectos de implementar el algoritmo se usa una matriz de adyacencias del grafo, modificada y
que se llamará matriz de distancias o Dist; esta matriz es la matriz de pesos del grafo donde la ausencia
de un arco se simboliza con ∞, y los valores en la diagonal principal son ceros.

Se utiliza algún nodo k como nodo intermedio para hallar la distancia más corta entre todos los pares de
nodos.

Para una pareja de nodos (i, j) el camino más corto del nodo i al k, que es Dist[i, k], se suma al camino
más corto desde el nodo k hasta el nodo j. Si esta suma es menor que el camino actualmente más corto
entre los nodos i y j, entonces se utiliza el camino más corto que pasa por el nodo k.

Si Dist[i, k] + Dist[k, j] < Dist[i, j] entonces Dist[i, j] = Dist[i, k] + Dist[k, j]

Repitiendo este proceso para todas las parejas de nodos, se puede obtener para cada pareja la longitud
del camino de mínimo costo que pasa por el nodo k.

Al tomar todos los nodos de G como nodos intermedios, se obtiene la matriz de distancias mínimas
entre todos los pares de nodos.

Se introduce una matriz en la cual se registra información acerca de los nodos intermedios. Dicha matriz
se puede llamar CAM IN O. Esta información se puede utilizar para generar los nodos que se encuentran
en cada uno de los caminos mínimos.

La matriz CAM IN O se inicializa en cero y cuando el proceso termina CAM IN O[i, j] contiene el número
de nodos que ha dado lugar a un cambio en Dist[i, j].

Si CAM IN O[i, j] = 0 el camino más corto es un camino que va directo de i a j


Si CAM IN O[i, j] = k el camino más corto que va de i a j pasa por el nodo k
Si Dist[i, k] < ∞ y Dist[k, j] < ∞, entonces el camino va desde i a k y luego de k a j
Si Dist[i, k] = ∞ entonces se puede hallar recursivamente un camino desde i hasta k
Si Dist[k, j] = ∞ entonces se puede hallar recursivamente un camino desde k hasta j

A. Caicedo B., G. Wagner de G., R. M. Méndez


68 LA TRAYECTORIA MÁS CORTA

Procedimiento (1)
Entrar Dist[i, j] =matriz inicial de valores de G
begin
para i = 1 hasta n
para j = 1 hasta n
hacer CAM IN O[i, j] = 0
para k = 1 hasta n
para i = 1 hasta n
para j = 1 hasta n
si Dist[i, k] + Dist[k, j] < Dist[i, j], hacer
begin
Dist[i, j] = Dist[i, k] + Dist[k, j]
CAM IN O[i, j] = k
end
end.

Ejemplo 4
Para el siguiente grafo establecer la matriz de distancias más cortas entre todas las parejas de nodos
y la matriz que indica los nodos intermedios por los cuales pasa cada camino más corto.
1 3 2
   
0 ∞ ∞ 1 0 0 0 0
1 5    
   
3 0 1 ∞ 0 0 0 0
8 1 1 1 Dist = 


 CAM IN O = 



5 1 0 ∞ 0 0 0 0
   
8 1 4 0 0 0 0 0
4 4 3

Figura 4.
k=1 (
Dist[1, 1], no cambia
i = 1, j = 1, Dist[1, 1] + Dist[1, 1] = 0 + 0 = 0 < 0? (no) ⇒
CAM IN O[1, 1], no cambia
(
Dist[1, 2], no cambia
j = 2, Dist[1, 1] + Dist[1, 2] = 0 + ∞ = ∞ < ∞? (no) ⇒
CAM IN O[1, 2], no cambia
(
Dist[1, 3], no cambia
j = 3, Dist[1, 1] + Dist[1, 3] = 0 + ∞ = ∞ < ∞? (no) ⇒
CAM IN O[1, 3], no cambia
(
Dist[1, 4], no cambia
j = 4, Dist[1, 1] + Dist[1, 4] = 0 + 1 = 1 < 1? (no) ⇒
CAM IN O[1, 4], no cambia
(
Dist[2, 1], no cambia
i = 2, j = 1, Dist[2, 1] + Dist[1, 1] = 3 + 0 = 3 < 3? (no) ⇒
CAM IN O[2, 1], no cambia
(
Dist[2, 2], no cambia
j = 2, Dist[2, 1] + Dist[1, 2] = 3 + ∞ = ∞ < 0? (no) ⇒
CAM IN O[2, 2], no cambia
(
Dist[2, 3] no cambia
j = 3, Dist[2, 1] + Dist[1, 3] = 3 + ∞ = ∞ < 1? (no) ⇒
CAM IN O[2, 3] no cambia

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo de Floyd-Warshall 69

(
Dist[2, 4] cambia a 4
j = 4, Dist[2, 1] + Dist[1, 4] = 3 + 1 = 4 < ∞? (si) ⇒
CAM IN O[2, 4] = 1
(
Dist[3, 1] no cambia
i = 3, j = 1, Dist[3, 1] + Dist[1, 1] = 5 + 0 = 5 < 5? (no) ⇒
CAM IN O[3, 1] no cambia
(
Dist[3, 2] no cambia
j = 2, Dist[3, 1] + Dist[1, 2] = 5 + ∞ = ∞ < ∞? (no) ⇒
CAM IN O[3, 2] no cambia
(
Dist[3, 3] no cambia
j = 3, Dist[3, 1] + Dist[1, 3] = 5 + ∞ = ∞ < 0? (no) ⇒
CAM IN O[3, 3] no cambia
(
Dist[3, 4] cambia a 6
j = 4, Dist[3, 1] + Dist[1, 4] = 5 + 1 = 6 < ∞? (si) ⇒
CAM IN O[3, 4] = 1
(
Dist[4, 1] no cambia
i = 4, j = 1, Dist[4, 1] + Dist[1, 1] = 8 + 0 = 8 < 8? (no) ⇒
CAM IN O[4, 1] no cambia
(
Dist[4, 2] no cambia
j = 2, Dist[4, 2] + Dist[1, 2] = 1 + ∞ = ∞ < 1? (no) ⇒
CAM IN O[4, 2] no cambia
(
Dist[4, 3] no cambia
j = 3, Dist[4, 3] + Dist[1, 3] = 4 + ∞ = ∞ < 4? (no) ⇒
CAM IN O[4, 3] no cambia
(
Dist[4, 4] no cambia
j = 4, Dist[4, 4] + Dist[1, 4] = 0 + 1 = 1 < 0? (no) ⇒
CAM IN O[4, 4] no cambia

Las matrices revisadas al final de estas iteraciones son:


Para k = 1 (nodo intermedio o pivote)
   
0 ∞ ∞ 1 0 0 0 0
   
3 0 1 4 0 0 0 1
Dist1 =   CAM IN O1 =  
5 1 0 6 0 0 0 1
8 1 4 0 0 0 0 0

Para k = 2    
0 ∞ ∞ 1 0 0 0 0
   
3 0 1 4 0 0 0 1
Dist2 =   CAM IN O2 =  
4 1 0 5 2 0 0 2
4 1 2 0 2 0 2 0

Para k = 3    
0 ∞ ∞ 1 0 0 0 0
   
3 0 1 4 0 0 0 1
Dist3 =   CAM IN O3 =  
4 1 0 5 2 0 0 2
4 1 2 0 2 0 2 0

Para k = 4    
0 2 3 1 0 4 4 0
   
3 0 1 4 0 0 0 1
Dist4 =   CAM IN O4 =  
4 1 0 5 2 0 0 2
4 1 2 0 2 0 2 0

A. Caicedo B., G. Wagner de G., R. M. Méndez


70 LA TRAYECTORIA MÁS CORTA

La matriz Dist4 posee los valores de las distancias más cortas entre cualquier par de nodos. Por
ejemplo Dist(1, 3) = 3, Dist(3, 4) = 5, etc.

La matriz CAM IN O4 sirve para establecer cuáles nodos conforman los caminos más cortos. Por
ejemplo establecer el camino más corto de 3 a 4. CAM IN O[3, 4] = 2 indica que 2 es un nodo
intermedio entre 3 y 4, es decir,
3 2 4

Pero CAM IN O[2, 4] = 1 indica que 1 es un nodo intermedio entre 2 y 4, es decir,


3 2 1 4

Como CAM IN O[3, 2] = 0, CAM IN O[2, 1] = 0, CAM IN O[1, 4] = 0, entonces no hay más nodos
intermedios.

El camino óptimo entre 3 y 4 es


3 1 2 3 1 1 4
con longitud= 5 como lo indica la matriz Dist[3, 4] = 5

Otra forma de presentar el procedimiento de Floyd-Warshall es:

Procedimiento (2)
Entrar la matriz de distancias Dist del grafo G
Para k = 1 hasta n
Para i 6= k, 1 hasta n
Para j 6= k, 1 hasta n
hacer Dist[i, j] = mı́n(Dist(i, j), Dist(i, k) + Dist(k, j))

Ejemplo 5
Hallar la matriz de distancias más cortas entre todas las parejas de nodos del siguiente grafo no
dirigido
5
1 3 2 3
1 2 3 4 5 6
 
1 0 3 5 1 ∞ ∞
1 9 7 1
2
 3 0 ∞ ∞ 9 ∞
3 5 ∞ 0 7 7 1 
Dist =  
4
 1 ∞ 7 0 ∞ 4 

4 5 6 5∞ 9 7 ∞ 0 ∞
6 ∞ ∞ 1 4 ∞ 0
4
7
Figura 5.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo de Floyd-Warshall 71

 
0 3 5 1 ∞ ∞
 
3 0 ∞ ∞ 9 ∞
 
5 ∞ 0 7 7 1
Dist =  
1 ∞ 7 0 ∞ 4
 
∞ 9 7 ∞ 0 ∞
∞ ∞ 1 4 ∞ 0
Aplicamos el algoritmo de Floyd-Warshall, y para ello en cada iteración fijamos un vértice intermedio.
1a Iteración: nodo intermedio = k = 1
La matriz en simétrica, por lo que solamente hará falta calcular el triángulo superior de las distancias.

d23 = mı́n(d23 , d21 + d13 ) = 8, d24 = mı́n(d24 , d21 + d14 ) = 4


d25 = mı́n(d25 , d21 + d15 ) = 9, d26 = mı́n(d26 , d21 + d16 ) = ∞
d34 = mı́n(d34 , d31 + d14 ) = 6, d35 = mı́n(d35 , d31 + d15 ) = 7
d36 = mı́n(d36 , d31 + d16 ) = 1, d45 = mı́n(d45 , d41 + d15 ) = ∞
d46 = mı́n(d46 , d41 + d16 ) = 4, d56 = mı́n(d56 , d51 + d16 ) = ∞

La matriz de distancias después de la primera


 iteración es: 
0 3 5 1 ∞ ∞
 
3 0 8 4 9 ∞
 
5 8 0 6 7 1
Dist1 =  
1 4 6 0 ∞ 4
 
∞ 9 7 ∞ 0 ∞
∞ ∞ 1 4 ∞ 0
2a Iteración: nodo intermedio = k = 2, usando Dist1

d13 = mı́n(d13 , d12 + d23 ) = 5, d14 = mı́n(d14 , d12 + d24 ) = 1


d15 = mı́n(d15 , d12 + d25 ) = 12, d16 = mı́n(d16 , d12 + d26 ) = ∞
d34 = mı́n(d34 , d32 + d24 ) = 6, d35 = mı́n(d35 , d32 + d25 ) = 7
d36 = mı́n(d36 , d32 + d26 ) = 1, d45 = mı́n(d45 , d42 + d25 ) = 13
d46 = mı́n(d46 , d42 + d26 ) = 4, d56 = mı́n(d56 , d52 + d26 ) = ∞

La matriz de distancias después de esta iteración es:


 
0 3 5 1 12 ∞
 
3 0 8 4 9 ∞
 
5 8 0 6 7 1
Dist2 =  
1 4 6 0 13 4 
 
12 9 7 13 0 ∞
∞ ∞ 1 4 ∞ 0

A. Caicedo B., G. Wagner de G., R. M. Méndez


72 LA TRAYECTORIA MÁS CORTA

3a Iteración: nodo intermedio = k = 3, usando Dist2

d12 = mı́n(d12 , d13 + d32 ) = 3, d14 = mı́n(d14 , d13 + d34 ) = 1


d15 = mı́n(d15 , d13 + d35 ) = 12, d16 = mı́n(d16 , d13 + d36 ) = 6
d24 = mı́n(d24 , d23 + d34 ) = 4, d25 = mı́n(d25 , d23 + d35 ) = 9
d26 = mı́n(d26 , d23 + d36 ) = 9, d45 = mı́n(d45 , d43 + d35 ) = 13
d46 = mı́n(d46 , d43 + d36 ) = 4, d56 = mı́n(d56 , d53 + d36 ) = 8

La matriz de distancias después de esta iteración es:


 
0 3 5 1 12 6
 
3 0 8 4 9 9
 
5 8 0 6 7 1
Dist3 =  
1 4 6 0 13 4
 
12 9 7 13 0 8
6 9 1 4 8 0
4a Iteración: nodo intermedio = k = 4, usando Dist3

d12 = mı́n(d12 , d14 + d42 ) = 3, d13 = mı́n(d13 , d14 + d43 ) = 5


d15 = mı́n(d15 , d14 + d45 ) = 12, d16 = mı́n(d16 , d14 + d46 ) = 5
d23 = mı́n(d23 , d24 + d43 ) = 8, d25 = mı́n(d25 , d24 + d45 ) = 9
d26 = mı́n(d26 , d24 + d46 ) = 8, d35 = mı́n(d35 , d34 + d45 ) = 7
d36 = mı́n(d36 , d34 + d46 ) = 1, d56 = mı́n(d56 , d54 + d46 ) = 8

La matriz de distancias después de esta iteración es:


 
0 3 5 1 12 5
 
3 0 8 4 9 8
 
5 8 0 6 7 1
Dist4 =  
1 4 6 0 13 4
 
12 9 7 13 0 8
5 8 1 4 8 0
5a Iteración: nodo intermedio = k = 5, usando Dist4

d12 = mı́n(d12 , d15 + d52 ) = 3, d13 = mı́n(d13 , d15 + d53 ) = 5


d14 = mı́n(d14 , d15 + d54 ) = 1, d16 = mı́n(d16 , d15 + d56 ) = 5
d23 = mı́n(d23 , d25 + d53 ) = 8, d24 = mı́n(d24 , d25 + d54 ) = 4
d26 = mı́n(d26 , d25 + d56 ) = 8, d34 = mı́n(d34 , d35 + d54 ) = 6
d36 = mı́n(d36 , d35 + d56 ) = 1, d46 = mı́n(d46 , d45 + d56 ) = 4

La matriz de distancias después de esta iteración es:

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo Matricial 73

 
0 3 5 1 12 5
 
3 0 8 4 9 8
 
5 8 0 6 7 1
Dist5 = Dist4 =  
1 4 6 0 13 4
 
12 9 7 13 0 8
5 8 1 4 8 0

6a Iteración: nodo intermedio = k = 6, usando Dist5

d12 = mı́n(d12 , d16 + d62 ) = 3, d13 = mı́n(d13 , d16 + d63 ) = 5


d14 = mı́n(d14 , d16 + d64 ) = 1, d15 = mı́n(d15 , d16 + d65 ) = 12
d23 = mı́n(d23 , d26 + d63 ) = 8, d24 = mı́n(d24 , d26 + d64 ) = 4
d25 = mı́n(d25 , d26 + d65 ) = 9, d34 = mı́n(d34 , d36 + d64 ) = 5
d35 = mı́n(d35 , d36 + d65 ) = 7, d45 = mı́n(d45 , d46 + d65 ) = 12

La matriz de distancias después de esta iteración es:


 
0 3 5 1 12 5
 
3 0 8 4 9 8
 
5 8 0 5 7 1
Dist6 =  
1 4 5 0 12 4
 
12 9 7 12 0 8
5 8 1 4 8 0
Ya se han hecho todas las iteraciones posibles. Por tanto, el camino mínimo entre dos vértices
cualesquiera del grafo será el obtenido en la matriz final. En este caso, el camino mínimo entre 3 y
4 vale 5.

6.6 Algoritmo Matricial

Este algoritmo propuesto por SHUMBEL en Structure in Communication Nets, Symposium of Informa-
tion Networks en 1954, establece un procedimiento para hallar la trayectoria de valor máximo o de valor
mínimo, usando producto de matrices a partir de la matriz inicial de costos o adyacencias.

Algoritmo de Shumbel
Sea M la matriz de valores asociados a un grafo G, la cual se representa por M = [mij ] donde los
elementos mij se definen de dos formas.

a. Si se desea encontrar la trayectoria de valor mínimo, se establece:



valor, vr del arco, si el arco existe

mij = X, si el arco no existe. Con X → ∞

si hay un bucle o si i = j

0,

A. Caicedo B., G. Wagner de G., R. M. Méndez


74 LA TRAYECTORIA MÁS CORTA

b. Si se desea encontrar la trayectoria de valor máximo, se define:



valor, vr del arco, si el arco existe

mij = −X, si el arco no existe. Con X → ∞

si hay un bucle o si i = j

0,

La matriz de trayectorias de valor óptimo es M n−1 en donde n es el número de nodos del grafo.

Si en un momento dado se obtiene que M m = M m−1 , siendo m < n − 1 la matriz M m es la matriz


de trayectorias de valor óptimo, o sea qu la matriz de valor óptimo se obtiene del cálculo de las siguientes
potencias: M , M 2 , M 3 , M 4 , . . . donde las operaciones matriciales se definen de la siguiente forma:

a. Si se trata de hallar la trayectoria de valor mínimo:

El producto de las dos matrices dará origen a otra matriz C obtenida así:

cij =mínk (aik + bkj )


=mínk (ai1 + b1j , ai2 + b2j , ai3 + b3j , . . . , ain + bnj )

La anterior expresión es equivalente a: sumar las parejas de elementos que intervienen en el producto
de matrices y escoger la suma mínima.

b. Si se trata de hallar la trayectoria de valor máximo:

Los elementos de la matriz producto son de la forma:

cij =máxk (aik + bkj )


=máxk (ai1 + b1j , ai2 + b2j , ai3 + b3j , . . . , ain + bnj )

La anterior expresión es equivalente a: sumar las parejas de elementos que intervienen en el producto
de matrices y escoger la suma máxima.

Ejemplo 6
Determinar las trayectorias de valor mínimo en el grafo de la figura 6

x2 8 x4

3 5
4 1

x1 3 4 3 x6

7 6
x3 4 x5

Figura 6.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo Matricial 75

Solución
La matriz de costos asociados al grafo es:

1 2 3 4 5 6
 
1 0 3 7 X X X
2
X 0 3 8 4 X
3 X X 0 1 4 X
M=  
4
X X X 0 3 5
5X X X 4 0 6
6 X X X X X 0
El primer producto de matrices es: M × M = M 2 , donde los elementos de M 2 se determinan así:

m11 = mı́n{0 + 0, 3 + x, 7 + x, x + x, x + x, x + x} = 0

m12 = mı́n{0 + 3, 3 + 0, 7 + x, x + x, x + x, x + x} = 3
m13 = mı́n{0 + 7, 3 + 3, 7 + 0, x + x, x + x, x + x} = 6
............
m16 = mı́n{0 + x, 3 + x, 7 + x, x + 5, x + 6, x + 0} = x
Se continua el proceso con las otras filas y columnas y se obtiene:
 
0 3 6 8 7 X
 
X 0 3 4 4 10
 
X X 0 1 4 6
M2 =  
X X X 0 3 5
 
X X X 4 0 6
X X X X X 0

El segundo producto es: M 2 × M = M 3


Se continua el proceso de obtener nuevas matrices potencias de M hasta hallar dos matrices potencias
que coincidan en todos sus elementos. Para este ejemplo se llegó a que:
 
0 3 6 7 7 12
 
X 0 3 4 4 9 
 
X X 0 1 4 6 
M5 = M6 =  
X X X 0 3 5 
 
X X X 4 0 6 
X X X X X 0

La matriz M 5 es la matriz de trayectorias de valor mínimo; muestra los valores de las trayectorias
mínimas para ir de un nodo a otro, por ejemplo: para ir del nodo 1 al nodo 6 la trayectoria mínima
tiene un valor de 12. Para ir del nodo 2 al 6 la trayectoria mínima vale 9.

A. Caicedo B., G. Wagner de G., R. M. Méndez


76 LA TRAYECTORIA MÁS CORTA

6.7 La Trayectoria Óptima

Hasta ahora se ha encontrado una matriz de distancias mínimas, pero no se ha determinado cuáles son
esas trayectorias mínimas. Para llegar a encontrar una trayectoria mínima se procede de la siguiente forma:

Sea S una matriz cuyos elementos sij son determinados de la siguiente forma:


 1, si el valor del arco no cambió entre M y la matriz M m .
 M m es la matriz donde paró el algoritmo de Shumbel
Sij =
0,

 si conserva la X, en la diagonal y en cualquier otro caso, es decir,
si ocurrió un cambio en la posición.
En el ejemplo analizado se comparan las matrices M y M 5 y se obtiene:
1 2 3 4 5 6
 
1 0 1 0 0 0 0
2
0 0 1 0 1 0
3 0 0 0 1 1 0
S=  
4
0 0 0 0 1 1
50 0 0 1 0 1
6 0 0 0 0 0 0

En esta matriz el 1 indica presencia del arco y el 0 la ausencia del mismo. A partir de esta matriz se
pueden establecer las trayectorias, por ejemplo, para ir del nodo 1 al nodo 6 se pueden establecer las
siguientes trayectorias:
a. Del nodo 1 ir al nodo 2 (ver matriz S), estando en 2 ir al nodo 3, estando en 3 ir al nodo 4, del 4
ir al 5 y del 5 ir al 6. Longitud = 16.
b. Del nodo 1 ir al nodo 2, estando en 2 ir al nodo 5 y del 5 ir al nodo 6. Longitud = 13.
c. Del nodo 1 ir al nodo 2, del 2 ir al 4 y del 4 ir al 6. Longitud = 16.
d. Del nodo 1 ir al nodo 2, del 2 ir al nodo 3, del 3 ir al nodo 4 y del 4 ir al nodo 6. Longitud = 12.
Esta trayectoria tiene longitud igual a la que indica la matriz de valores mínimos, lo que indica que
ya se ha encontrado una de las trayectorias más cortas para ir del nodo 1 al nodo 6.
Lo anterior se puede reorganizar mediante una estructura de árbol:
6
3 5 6 ⇒ Vr = 16
4 5
1
6 ⇒ Vr = 12
3
4 5
3 4 4 6 ⇒ Vr = 19
5 6
3
1 2 6 ⇒ Vr = 16
4
5
4 4 6 ⇒ Vr = 16
5 6
6 ⇒ Vr = 13
Figura 7.

A. Caicedo B., G. Wagner de G., R. M. Méndez


La Trayectoria Óptima 77

La trayectoria de menor costo para ir del nodo 1 al nodo 6 es 1 − 2 − 3 − 4 − 6 con un valor de 12. Como
lo indica la matriz de parada M 5 es la posición (1, 6).

En forma similar se procede para hallar otras trayectorias mínimas entre cada par de nodos, las cuales
no necesariamente son únicas.

Ejemplo 7
Un problema simple de control de producción
Un fabricante de pinturas produce 5 tipos de pinturas que se pueden fabricar con la misma maqui-
naria. Los costos de adecuación de máquinas para pasar de un producto a otro se muestran en la
siguiente tabla.

i 1 2 3 4 5
1 0 x 10 x 8
2 7 0 5 7 11
3 5 x 0 6 8
4 8 6 7 0 10
5 x 10 8 x 0

Se desea establecer el orden en que deben producir para que el costo sea mínimo.

El problema se puede traducir a un problema de trayectoria más corta en un grafo conexo como el
siguiente:
8
7
2 4
6
7
11 10
7
1 10
5 5 6
10 5
8
3
8

8
Figura 8.

Se pueden encontrar varias trayectorias mínimas, dependiendo del nodo que se tome como nodo
inicial.
Aquí los nodos son los productos. Los valores en los arcos son los costos.

A. Caicedo B., G. Wagner de G., R. M. Méndez


78 LA TRAYECTORIA MÁS CORTA

Aplicación del grafo anterior

M M M2
     
0 x 10 x 8 0 x 10 x 8 0 18 10 16 8
     
7 0 5 7 11 7 0 5 7 11 7 0 5 7 11
     
5 x 0 6 8 ⊕ 5 x 0 6 8 = 5 12 0 6 8
     
8 6 7 0 10 8 6 7 0 10 8 6 7 0 10
x 10 8 x 0 x 10 8 x 0 13 10 8 14 0
M M2 M3
     
0 x 10 x 8 0 18 10 16 8 0 18 10 16 8
     
7 0 5 7 11 7 0 5 7 11 7 0 5 7 11
     
5 x 0 6 8 ⊕ 5 12 0 6 8 = 5 12 0 6 8
     
8 6 7 0 10 8 6 7 0 10 8 6 7 0 10
x 10 8 x 0 15 10 8 14 0 13 10 8 14 0

Se encontró que M 2 = M 3 , 3 ≤ n − 1, entonces M 3 contiene los valores de las trayectorias mínimas.


Por ejemplo, para ir del nodo 1 al 2 la trayectoria mínima vale 18 pasando por el nodo 5.
Para facilitar la búsqueda de las trayectorias mínimas, Shumbel definió una mtriz S de la siguiente
forma:
(
1, si el valor del arco n o cambió entre M y M m
Sij =
0, en la diagonal, si se conservó la x en M m , y en cualquier otro caso

Comparando M y M 3 se obtiene:
1 2 3 4 5
 
1 0 0 1 0 1
2
1 0 1 1 1
S = 3
1 0 0 1 1
41 1 1 0 1
5 0 1 1 0 0
El 1 indica presencia de arco y el 0 ausencia de arco. Con esta matriz ya se pueden establecer las
trayectorias óptimas de valor mínimo.
2 11 5
6 = 33
4 10
6 10
5 2 = 36
3 Si se inicia con la pintura
8 1 la secuencia óptima es
10 10 7
5 2 4 = 35
1−5−3−4−2
1
3 6 4
con un costo de 28
5 = 29
8 2 7
10
4 7 3 = 32
5
8 6
3 6 4 2 = 28 X
Figura 9.

A. Caicedo B., G. Wagner de G., R. M. Méndez


La Trayectoria Óptima 79

4 10 5
6 = 33

10 3 5

1 8 5 8 3 6 4 = 29
1 5
7 8 1 8 5 Si se inicia con la pintura 2 exis-
6 = 27 X
3 4 ten 3 secuencias óptimas
5 5
5 2−3−4−1−5
10 3 8 5
2 = 33
1 2−4−3−1−5
8 5 8 3
7 8
= 31
6 5 1 8 5 = 27 X 2−5−3−4−1
4 7 3
10 5 las tres con un costo de 27
5 8 3 5 1 = 30
5
8
1
3
6 4 8 1 = 27 X
Figura 10.

1 8 5 10 2 7 4 = 30

1 8 5 10 2
5 = 30
6
7 1 8 5 = 27 X Si se inicia con la pintura
3 6 4 6 2 11 3 la secuencia óptima es
10 5
3−4−2−1−5
8 5 10 2 7 1 con un costo de 27
= 33

7 1
5 10 2 7
4 8 1 = 33
Figura 11.

A. Caicedo B., G. Wagner de G., R. M. Méndez


80 LA TRAYECTORIA MÁS CORTA

3 8 5 10 2 = 36
10
2 5 5
10 = 31
1 8 5 8
3

3 8 5
10 = 31
8 1 8
8 Si se inicia con la pintura
5 3 = 29
7 4 la secuencia óptima es
1 8 5
5 = 24 X 4−2−3−1−5
4 6 2 5 3 8
5 con un valor de 24
11
7 8 5 En este orden se debe pro-
5 3 1 = 30 ducir las 5 pinturas para
8 10 que el costo sea mínimo.
10 5 1 5 2 = 30
3 8
5 10 2 7 1 = 32

1 10 3
7 = 37
5 10 2 5
3 5 1
8 = 30

3 5 1
Figura 12.

1 10 3 6 4 = 33
7
2 5 5 1
10 3 6 Iniciando con la pintura 5
8
4 1 = 29 la secuencia óptima es
5
1
5−3−4−2−1
8
5
con un costo de 27.
3 6 8 1
4 2
2 7 1 = 27 X
Figura 13.

Nota: Obsérvese que en los árboles anteriores algunas ramas quedan sin completar, lo cual indica
que determinadas secuencias no se pueden realizar para producir las 5 pinturas.

A. Caicedo B., G. Wagner de G., R. M. Méndez


La Trayectoria Óptima 81

Ejercicios Capítulo 6

1. Aplicar el algoritmo de Dijkstra para encontrar la trayectoria de mínimo valor entre los nodos A y
F del grafo de la figura 5
4

B E

3 12 2 6

3
A 11 D 4 3 G

10 5 8 3

C F

Figura 14.

2. Use un algoritmo que permita hallar la trayectoria de menor número de arcos entre los nodos A y
H del grafo de la figura 6

A G

B F
H
D

C E

Figura 15.

3. Aplicar el algoritmo matricial de Shumbel para hallar la trayectoria de mínimo valor entre los nodos
1 y 9, entre los nodos 2 y 10 y entre los nodos 3 y 8 del grafo de la figura 7

1 3 8
5 2
4 8
7
6 2
5 5
2 4 9
2
8 4 4
3 1

3
3 7 11 10
6 6
Figura 16.

4. Debido a los avances tecnológicos, una compañía procesadora de datos considera que un determinado
tipo de computador tiene una vida útil de 4 años y luego entra en obsolescencia. La compañía puede
tener este tipo de computador por un período de 4 años y luego venderlo por un valor de rescate, o
puede reemplazarlo por un nuevo modelo al final de cualquier año dado. El costo neto estimado de
operación (precio de compra + instalación y mantenimiento − precio de venta) para un computador
comprado al inicio del año i y vendido al inicio del año j está dado en la tabla 1 y representado en
el grafo de la figura 8; además, determinar una política de reemplazo que minimice el costo total
de operación durante el período de 4 años. Usar el algoritmo de Dijkstra
A. Caicedo B., G. Wagner de G., R. M. Méndez
82 LA TRAYECTORIA MÁS CORTA

i 1 2 3 4 5 1

1 12 19 33 49
2 14 23 38
3 16 26 2 3 4 5

4 13
Tabla 1. Figura 17.

5. Un fabricante de pegantes produce 5 clases de productos que se pueden fabricar con la misma
maquinaria, con los correspondientes costos de adecuación y operarios. Desea determinar el orden
en que debe producir estos 5 productos para que el costo sea mínimo. La tabla de costos por cambio
de actividad se muestra en la tabla 2, en donde m indica que no se puede llevar a cabo el intercambio
de la actividad i por la actividad j.

i 1 2 3 4 5
1 0 m 9 m 7
2 6 0 4 6 9
3 4 m 0 5 7
4 7 5 6 0 9
5 m 9 7 m 0
Tabla 2.

6. Use el procedimiento (1) del algoritmo de Floyd-Warshall para hallar la matriz de distancias mínimas
y la matriz de caminos para los siguientes grafos
2 3 4 5
1 2 3 1 2 3

5 2 4
2 2 1

2 10 2 5
4 5 6 4 1 1 4

4 2
1
a) b)
1 10
7 7 6 5

7. Use el procedimiento (2) del algoritmo de Floyd-Warshall para hallar la matriz de distancias mínimas
del siguiente grafo.
1

2 3 5
1
4 6
2 4 5

3 5 7

A. Caicedo B., G. Wagner de G., R. M. Méndez


ulo
pít
Ca

7 ÁRBOLES

Uno de los elementos de la teoría de grafos más ampliamente aplicados es el concepto de árbol,
el cual es muy usado al solucionar problemas de redes locales de comunicación.

7.1 Conceptos Básicos

Una definición amplia del concepto de árbol es la siguiente:

Definición 7.1
Un grafo G conexo que no tenga ciclos es llamado un árbol.

Dicho de otra forma se tiene:

Definición 7.2
Un grafo G = (N, A) es llamado un árbol si G es conexo y acíclico.

Desde el punto de vista de las relaciones en un conjunto finito de nodos, un árbol se puede definir de la
siguiente forma:

Definición 7.3
Sea N un conjunto finito de nodos (vértices) y T una relación en N . Se dice que T es un árbol si
existe un nodo v0 en N con la propiedad de que haya una trayectoria única en T de v0 a cualquier
otro vértice en N , pero ninguna trayectoria de v0 a v0

El vértice v0 es único y es llamado la raíz del árbol T ; a T se le llamará árbol arraigado en v0 y se


notará (T, v0 )

83
84 ÁRBOLES

Ejemplo 1
Los grafos de la figura 1 son árboles
b b b b

b b b b

b b b b b

b b b

Figura 1.

Ejercicio 1
Determinar cuáles de los grafos de la figura 2 son árboles
b b b b

b
b b b b b b b b

b b b b

b b

b b
b

b b

Figura 2.

Algunas de las propiedades simples de un árbol se encuentran en el siguiente teorema.

Teorema 1

Los siguientes enunciados son equivalentes para un grafo G = (N, A) con n vértices y m aristas:
1. G es un árbol
2. Existe exactamente una trayectoria entre cualquier par de vértices en G
3. G es conexo y m = n − 1
4. G es conexo y removiendo cualquier arista, G deja de ser conexo
5. G es acíclico y m = n − 1
6. G es acíclico y adicionando alguna arista se crea un ciclo

Definición 7.4
Un vértice v de un digrafo se dice ser una raíz del digrafo si todos los vértices del mismo son
accesibles desde v

A. Caicedo B., G. Wagner de G., R. M. Méndez


Conceptos Básicos 85

Definición 7.5
Un árbol con raíz (o árbol dirigido) es un digrafo tal que posee una raíz y su grafo asociado es un
árbol

En un árbol arraigado en v0 , la trayectoria entre v0 y cualquier otro vértice vn es única y la longitud de


dicha trayectoria se llama el nivel del vértice vn

El nivel donde terminan las aristas adyacentes a v0 se llaman vértices de nivel 1 y se considera que v0
está en el nivel 0. A v0 se le llama también antecesor o padre de los vértices del nivel 1 y a éstos se les
llama vástagos o descendientes de v0 . Recursivamente, los descendientes de v0 pueden ser designados
como raíces de los subárboles obtenidos al borrar la raíz del árbol original.

En la figura 3 se muestra un árbol con sus correspondientes niveles o grupos de descendientes.


v0 nivel 0

v1 v2 v3 nivel 1

v4 v5 v6 v7 v8 v9 nivel 2

Figura 3.

La relación antecesor vástago se mantiene entre los niveles, por ejemplo: v1 es antecesor de los vástagos
v4 , v5 y v3 es antecesor de los vástagos v7 , v8 , v9

Definición 7.6
El número de niveles de un árbol T se llama altura del árbol o nivel del árbol o profundidad del
árbol.

La anterior definición es equivalente a decir que la longitud de la trayectoria más larga desde la
raíz es la profundidad o nivel del árbol arraigado.

Definición 7.7
Los vértices de un árbol que no tengan vástagos se les llama hojas del árbol.

Ejemplo 2
En el árbol de la figura 3 las hojas son v4 , v5 , v6 , v7 , v8 , v9

Definición 7.8
La altura de un nodo en un árbol es la longitud de la trayectoria más larga desde ese nodo a cada
hoja. La profundidad de un nodo es la longitud de la trayectoria desde la raíz hasta ese nodo.

A. Caicedo B., G. Wagner de G., R. M. Méndez


86 ÁRBOLES

Cuando al construir un árbol se introducen los conceptos de relación y de niveles, se considera que el
árbol está siendo construido en forma orientada. (árbol orientado o dirigido).

Al dibujar el grafo dirigido de un árbol se puede introducir algún ordenamiento para cada nivel, arreglan-
do (numerando) los vástagos de izquierda a derecha. A un árbol de este tipo se le llama árbol ordenado.
El árbol de la figura 3 es un árbol ordenado.

Ejemplo 3
El siguiente árbol (figura 4) es ordenado según un orden alfabético
a

b c

d e f g

h i

Figura 4. Arbol ordenado

7.2 Subárboles

Sea (T, v0 ) un árbol arraigado sobre el conjunto N de nodos. Sea v un vértice de T y B el conjunto que
consta de v y todos sus descendientes. B ⊆ N .

Sea T (v) la restricción de la relación T a B que es T ⊂ (B × B) entonces T (v) también es un árbol


arraigado con raíz v. Luego T (v) es un subárbol de T .

Definición 7.9
Un subárbol T (v) está compuesto por el nodo v y todos sus descendientes.

Ejemplo 4
El árbol siguiente es trinario no ordenado y de él se pueden sacar tres subárboles: T (v5 ), T (v4 ), T (v2 )
(figura 6)
v3

v5 v4 v2

v9 v6 v10 v7 v8

Figura 5.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Árbol Binario 87

v5 v4 v2

v9 v6 v10 v7 v8

T (v5 )
T (v4 ) T (v2 )

Figura 6.

7.3 Árbol Binario

Un concepto muy importante a tener en cuenta en el estudio de árboles es su clasificación según el número
de descendientes que posea cada nodo

Definición 7.10

Si n ∈ Z+ , se dice que T es un árbol n-ario si cada vértice tiene máximo n vástagos.


Si todos los vértices de T , excepto las hojas, tienen exactamente n vástagos, se dice que T es un
árbol n-ario completo.
Particularizando, un árbol binario es aquel que tiene como máximo dos descendientes (vástagos)
para cada vértice excepto para las hojas.

Definición 7.11

Un árbol binario es un conjunto finito de cero o más nodos tal que


1. Existe un nodo denominado la raíz del árbol.
2. Cada nodo puede tener 0, 1 ó 2 vástagos conocidos como vástago izquierdo y vástago derecho.

Ejemplo 5
Los árboles de la figura 7 son binarios. El de la derecha es un árbol binario completo.
b b

b b
b b

b b b b

b b b
b b

b b b

Figura 7.

A. Caicedo B., G. Wagner de G., R. M. Méndez


88 ÁRBOLES

Definición 7.12
Un árbol binario se considera equilibrado o balanceado si al seleccionar uno cualquiera de sus
nodos, cada uno de los subárboles que penden de él tiene un número de nodos que no difiere en
más de uno, de los otros subárboles del nodo.

Un tipo de árbol muy usado al estructurar datos son los árboles parcialmente balanceados o árboles AVL
llamados así en honor a sus creadores, Adelson, Velskii y Landis.

Definición 7.13
Un árbol es parcialmente balanceado por altura o AVL cuando la diferencia de altura de
cualquiera de los subárboles que penden de un nodo del árbol no es mayor de uno.

Definición 7.14
Si T es un árbol con raíz y n es el mayor nivel de T , entonces T tiene altura n y T es balanceado
si el nivel del cualquier hoja es n o n − 1.

Ejemplo 6
El siguiente árbol no es un árbol AVL
b

b b

b b b b

b b b b

b b

Figura 8.

Teorema 2

Un árbol binario completo de altura h tiene a lo máximo 2h vértices en el nivel h

Prueba
La prueba se hace por inducción sobre h. Como la raíz es el único vértice en el nivel cero,
entonces existen 2 o cero vértices adyacentes a la raíz y estos están en el nivel 1.
Asúmase que no hay más de 2k vértices en el nivel k. Considérese el nivel k + 1. Cada vértice
en este nivel debe ser adyacente a un sólo vértice en el nivel k. Como cada vértice en el nivel k
tiene grado 1 ó 3 entonces él es adyacente a cero o 2 vértices en el nivel k + 1. Luego, el número
de vértices en el nivel k + 1 no puede ser mayor de 2 veces el número de vértices en el nivel k.
Si Nk = número de vértices en el nivel k, entonces:

Nk+1 ≤ 2Nk ≤ 2 2k = 2k+1

A. Caicedo B., G. Wagner de G., R. M. Méndez


Árboles Etiquetados 89

Corolario
Un árbol binario completo de altura h tiene como máximo 2h+1 − 1 vértices
Prueba
Por el teorema anterior se sabe que en el nivel k hay como máximo 2k vértices. Así, el número
total de vértices en el árbol es a lo máximo
1 − 2h+1
1 + 2 + 4 + . . . + 2k + . . . + 2h = = 2h+1 − 1
1−2

7.4 Árboles Etiquetados

Un árbol específico se puede usar para modelar un problema o para usarlo para un propósito particular;
para tal efecto conviene etiquetar los vértices o las aristas y así poder usar más fácilmente las propiedades
de los árboles en la computación.

Una de las aplicaciones más simples de los árboles etiquetados es usarlos para representar expresiones
algebraicas.

Ejemplo 7
La expresión algebraica:
(7 − (5 × y)) + ((y + 3) − (8 − y))
se puede representar mediante el árbol etiquetado de la figura 9

− −

7 × + −

5 y y 3 8 y

Figura 9.

Se etiqueta el nodo raíz con el operador central (+), los dos vástagos de la raíz se etiquetan con los
operadores centrales de las expresiones de argumentos izquierdo y derecho. Si algún argumento es una
constante o una variable y no una expresión, se etiqueta el vástago correspondiente con dicha constante
o variable.

Reglas para representar expresiones:

a. Cada hoja es etiquetada por un solo operando

b. Cada nodo interior es etiquetado por un operador


A. Caicedo B., G. Wagner de G., R. M. Méndez
90 ÁRBOLES

Ejemplo 8
El árbol de la figura 10 representa la expresión:

(x − (y − (x + y))) × ((3 ÷ (2 × y)) × 7)

7.5 Árbol Posicional

Sea (T, v0 ) un árbol n-ario. Cada vértice tiene como máximo n vástagos. Suponiendo que cada vértice
tiene exactamente n vástagos que se pueden ordenar del 1 al n. Si alguno de los vástagos en la suce-
sión se elimina o no aparece, los restantes se etiquetarán con la posición que ocuparían en la sucesión
hipotética; por lo tanto los vástagos de cualquier vértice estarán etiquetados con números distintos 1, 2, . . .

Un árbol etiquetado en esta forma se le llama árbol posicional

− ×

x − ÷ 7

y + 3 ×

x y 2 y

Figura 10.

Ejemplo 9
El árbol de la figura 11 es 3-ario posicional.

1 3

1 2 1 2 3

1 3 1 2 3

1 2 3 1 2 3

Figura 11.

Cuando se trata de un árbol binario, las posiciones de los vástagos potenciales se acostumbra etiquetarlas
como Izquierdo (I) y derecho (D), ver figura12.
A. Caicedo B., G. Wagner de G., R. M. Méndez
Otras Formas de Árboles Ordenados 91

Definición 7.15

Sea T un árbol binario posicional con raíz v. Si vI existe, al subárbol T (vI ) se le llama subárbol
izquierdo de T , y si vD existe, al subárbol T (vD ) se le llama subárbol derecho de T

T (vI ) es también un árbol binario posicional con raíz en vI , y T (vD ) es un árbol binario
posicional con raíz en vD

I D

I D D

D D I D

I I

Figura 12.

7.6 Otras Formas de Árboles Ordenados

A) Árbol posicional 3-ario, ordenado mediante etiquetamiento lexicográfico numérico


0b

1
b b b
2 3

1.1 2.1 3.3


b b b b b b
3.2
1.2 2.3

b b b b b b b b b

1.1.1 1.1.2 1.1.3 2.1.2 2.1.3 3.2.1 3.2.2 3.2.3 3.3.3


Figura 13.

B) Árbol binario posicional, ordenado mediante etiquetamiento lexicográfico alfabético


b
r

a b
b b

a.a a.b b.a b.b


b b b b

b b b b b b b b
a.a.a a.a.b a.b.a a.b.b b.a.a b.a.b b.b.a b.b.b
Figura 14.

A. Caicedo B., G. Wagner de G., R. M. Méndez


92 ÁRBOLES

C) Árbol binario posicional, ordenado mediante etiquetamiento binario


b
r

0 1
b b

0.0 0.1 1.0 1.1


b b b b

b b b b b b b b

0.0.0 0.0.1 0.1.0 0.1.1 1.0.0 1.0.1 1.1.0 1.1.1


Figura 15.

7.7 Representación Matricial

Para facilitar su programación mediante un lenguaje de computación, los árboles binarios se pueden
representar mediante arreglos matriciales o mediante listas encadenadas. En esta sección se hará una
introducción a la representación matricial.

En la representación matricial se usan dos arreglos: vástagos izquierdos y vástagos derechos.

Si n es el número de vértices de un árbol binario, entonces: V AST IZQ[i] = j si y solo si j es un


vástago izquierdo de i. Si i no tiene vástagos izquierdos, entonces V AST IZQ[i] = 0.

Similarmente: V AST DER[i] = j si y solo si j es un vástago derecho de i. Si i no tiene vástagos derechos,


entonces, V AST DER[i] = 0.

Ejemplo 10
En la figura 16 se muestra un árbol binario no posicional y su correspondiente representación matricial
i hijoizq hijoder
1 2 6 1
2 3 4
3 0 0
2 6
4 0 5
5 0 0
6 7 8 3 4 7 8
7 0 0
8 0 9
9 0 0 5 9

Figura 16.

Ejemplo 11
La figura 17 muestra un árbol binario etiquetado y su correspondiente representación matricial

A. Caicedo B., G. Wagner de G., R. M. Méndez


Representación Secuencial 93

1 ×
i hijoizq dato hijoder
1 2 × 3
2 4 − 5
3 6 − 7 − 2 3 −
4 0 a 0
5 0 b 0
6 0 c 0
7 8 ÷ 9 a b c ÷
8 0 d 0 4 5 6 7
9 0 e 0 8 9
d e

Figura 17.

7.8 Representación Secuencial

Si T es un árbol binario completo o casi completo, entonces una forma eficiente de mantener a T en
memoria es mediante una representación secuencial o arreglo lineal T , establecido de la siguiente forma:

a. La raíz se guarda en T [1]

b. Si un nodo n está en T [k] entonces su vástago izquierdo está en T [2 ∗ k] y su vástago derecho está
en T [2 ∗ k + 1]

c. Si un subárbol es vacío se representa con NULO. T [1] = N U LO indica que el árbol está vacío.

Ejemplo 12
Para el árbol de la figura 18 la representación secuencial se muestra en la tabla siguiente

I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
T [I] 60 31 70 10 40 − 100 − 14 20 − − − 80 ...

1
31 60
2 3

40 70
4 5 7
10 100
14 20 80
9 19 14

Figura 18.

A. Caicedo B., G. Wagner de G., R. M. Méndez


94 ÁRBOLES

7.9 Representación Enlazada

Un árbol binario también se puede mantener en memoria mediante una representación enlazada de 3
arreglos paralelos que se pueden llamar IZG, DAT O, DER y una variable puntero llamada RAIZ que
contendrá la posición de la raíz R de T .

Cada nodo N de T corresponde a una posición K, tal que:


DAT O[K] : contiene los datos del nodo N .
IZQ[K] : contiene la localización del vástago izquierdo del nodo N
DER[K] : contiene la localización del vástago derecho del nodo N .

Una representación que haga uso de estos tres conceptos se llama una lista doblemente enlazada
o doblemente ligada en donde la unidad de almacenamiento es la célula que contiene un dato y los dos
apuntadores. Simbólicamente una célula se representa con la figura 15.

b
DAT O b

Figura 19.

Cada célula corresponde a un nodo; la parte del dato contiene el valor de la etiqueta del nodo. Los apun-
tadores izquierdo y derecho se dirigen a los vástagos izquierdo y derecho, si es que existen. Si un vástago
no existe el apuntador se simboliza con b

Ejemplo 13
Para el árbol de la figura 20a, la representación simbólica como una lista doblemente enlazada es el
esquema de la figura 20b, y la implementación de esa lista mediante tres arreglos se muestra en la
tabla 1.
a
1) b
Inicio b

b
2) b
a b

e c
3) b
b b b
c b b
d b

4) 5)
f d
6) b
e b b
f b b g b

7) 8)
g
a) Figura 20.
b)

A. Caicedo B., G. Wagner de G., R. M. Méndez


Conversión de un Árbol General a Binario 95

i IZQ DAT O DER


1 2 nil 0
2 3 a 0
3 6 b 4
4 0 c 5
5 0 d 0
6 0 e 7
7 0 f 8
8 0 g 0
Tabla 1.

7.10 Conversión de un Árbol General a Binario

Para que un árbol A general pueda ser representado por cualquiera de los anteriores métodos, debe ser
convertido primero en árbol binario B.

Algoritmo de Conversión

a. Tomar la raíz de A como la raíz de B

b. Enlazar el nodo raíz con el camino que conecta el nodo más a la izquierda

c. Enlazar este nodo con los restantes descendientes del nodo raíz en un camino, formándose así el
nivel 1 del nuevo árbol

d. Repetir los pasos 2 y 3 con los nodos del nivel 2 de A, enlazando siempre en un solo camino todos
los hermanos. Repetir todos estos pasos hasta llegar al nivel más alto

e. Girar el árbol resultante aproximadamente 30o a la derecha para poder diferenciar entre los subár-
boles izquierdo y derecho de B

Ejemplo 14
La figura 21 muestra un árbol general y el correspondiente árbol binario obtenido al aplicar el
algoritmo anterior.
a a
b
b c d e c
f d
e f g h i j g h
k i
k l l j
Figura 21.

A. Caicedo B., G. Wagner de G., R. M. Méndez


96 ÁRBOLES

7.11 Recorrido de un Árbol Binario

Existen problemas de la estructuración de datos donde es necesario examinar cada vértice de un árbol una
sola vez, en un orden específico. El proceso de visitar cada vértice de un árbol en algún orden especial
se llama recorrer, atravesar o analizar el árbol. Existen tres formas de recorrer un árbol binario
posicional: recorrido pre-orden, recorrido in-orden y recorrido post-orden. Las subrutinas para cada uno
de estos recorridos se muestran a continuación, en forma de seudocódigo.
A. Recorrido pre-orden o anterior o jerárquico
Subrutina Anterior(T ,v)
1. Visitar raíz (v)
2. Si vI existe llamar Anterior(T (vI ),vi )
3. Si vD existe llamar Anterior(T (vD ),vD )
Fin subrutina
B. Recorrido in-orden o interior o simétrico
Subrutina Interior(T ,v)
1. Si vi existe llamar Interior(T (vi ),vi )
2. Visitar raíz (v)
3. Si vD existe llamar Interior(T (vD ),vD )
Fin subrutina
C. Recorrido post-orden o posterior
Subrutina Posterior(T ,v)
1. Si vi existe llamar Posterior(T (vi ),vi )
2. Si vD existe llamar Posterior(T (vD ),vD )
3. Visitar raíz (v)
Fin subrutina
De estas tres formas de recorrer un árbol binario, la más usual y práctica es el recorrido in-orden, el cual
se puede describir en la siguiente forma:
Para cada vértice en el árbol, comenzando por la raíz, imprima todos los elementos del subárbol izquier-
do, comenzando por la hoja izquierda. Luego imprima el vértice. Después imprima todos los vértices del
subárbol derecho del vértice, empezando por la hoja derecha.

Ejemplo 15
Aplicar el recorrido in-orden al árbol de la figura 22
K

B T

A L Z

Figura 22.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Recorrido de un Árbol Binario 97

Considerando K como la raíz del árbol, iniciamos el recorrido por el subárbol izquierdo, visitando los
nodos K, B, A. Bajamos hasta la hoja izquierda A e imprimimos su valor (A). Visitamos la raíz del
subárbol e imprimimos su valor (B); como no existe rama derecha para este subárbol, continuamos
el recorrido y visitamos la raíz del árbol (K). Efectuamos el mismo proceso para el subárbol derecho.
El recorrido efectuado se muestra en la figura 22 con líneas punteadas. Siguiendo este recorrido se
obtiene: A, B, K, L, N, R, T, Z

Otra forma de visualizar este proceso es encerrar todos y cada uno de los subárboles en cajas y empezar a
imprimir lo que esté contenido en cada uno de ellas, a partir de las cajas más internas. Se analiza primero
el subárbol izquierdo y luego el derecho.

Ejemplo 16
Recorrer el árbol de la figura 23 en in-orden aplicando la metodología de encerrar los subárboles en
cajas
÷

− ×

x y 2 −

2 3 5
1 x +

7
y 20

9 10
8
6
4

Figura 23.
Haciendo el recorrido se obtiene:

subárbol izquierdo raíz subárbol derecho


(x − y) ÷ (2 × (x − (y + 20)))

Ejemplo 17
Ejecutar los recorridos PRE-ORDEN, IN-ORDEN y POST-ORDEN al siguiente árbol
r

a b

c d e f

g h i
Figura 24.

A. Caicedo B., G. Wagner de G., R. M. Méndez


98 ÁRBOLES

a) Recorrido PRE-ORDEN o anterior


Tr = r, Ta , Tb

= r, a, Tc , Td , Tb r

= r, a, c, d, Tg , Th , Ti , Tb a b

= r, a, c, d, g, h, i, b, Te , Tf c d e f

= r, a, c, d, g, h, i, b, e, f g h i
Figura 25.

Nota: la línea punteada indica el sentido del recorrido. La cabeza de flecha indica que se lee dicho
nodo. La raíz se lee de primero.
El recorrido pre-orden también es llamado recorrido RAICES-HOJAS porque para cada subarbol
primero se lee la raíz y luego las hojas

B) Recorrido IN-ORDEN o interior


Este recorrido también es llamado recorrido HOJAS-RAIZ-HOJAS porque para cada subárbol
primero se leen las hojas del hijo izquierdo, luego la raíz y después las otras hojas del subárbol.
Primero se recorre el subárbol izquierdo, luego la raíz y después el subárbol derecho.
Tr = Ta , r, Tb

= Tc , a, Td , r, Tb r

= c, a, Tg , d, Th , Ti , r, Tb a b

= c, a, g, d, h, i, r, Te , b, Tf c d e f

= c, a, g, d, h, i, r, e, b, f g h i
Figura 26.

C) Recorrido POST-ORDEN o posterior


Este recorrido también es llamado recorrido HOJAS-RAICES porque para cada subárbol primero se
leen las hojas y luego la raíz. La raíz principal del árbol se lee de último.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Notación Polaca 99

Tr = Ta , Tb , r

= Tc , Td , a, Tb , r r

= c, Tg , Th , Ti , d, a, Tb , r a b

= c, g, h, i, d, a, Te , Tf , b, r c d e f

= c, g, h, i, d, a, e, f, b, r g h i
Figura 27.

7.12 Notación Polaca

En la sección anterior vimos que los recorridos en preorden, inorden y postorden producen formas de
listas de los nodos de un árbol enraizado ordenado. Si se etiquetan los nodos en forma tal que el árbol
represente o contenga una expresión algebraica, las listas obtenidas en cada recorrido se llama notación
polaca de la expresión algebraica.

El recorrido preorden produce la notación polaca directa o prefija


El recorrido inorden produce la notación infija o algebraica normal
El recorrido postorden produce la notación polaca inversa o sufija

Cuando el árbol representa una expresión algebraica, el recorrido inorden produce la expresión alge-
braica, pero es indispensable que cada vez que se recorra un subárbol se agrupe su contenido por medio
de paréntesis o corchetes para que no se presenten ambiguedades al evaluar numéricamente la expresión.

Cuando el recorrido ha sido preorden y postorden las listas no necesitan los signos de agrupamiento
porque estos listados determinan de manera única el árbol y por lo tanto a la expresión algebraica origi-
nal. Estas notaciones no son ambiguas sin paréntesis.

Al evaluar las expresiones en notación polaca se lee la expresión de izquierda a derecha, buscando cadenas
de la forma:

a. F x y, en la notación polaca directa

b. x y F , en la notación polaca inversa

donde F =operador algebraico, x, y =operandos (variables)

Ejemplo 18
La expresión algebraica [(x + (a ÷ b)) − y] ÷ [((a ÷ (b + x)) − y) × x] da origen al siguiente árbol
binario
A. Caicedo B., G. Wagner de G., R. M. Méndez
100 ÁRBOLES

− ×

+ y − x

x ÷ ÷ y

a b a +

b x
Figura 28.

a) El recorrido inorden retornará la expresión algebraica dada.


b) El recorrido preorden produce:
÷ − + x ÷ aby × − ÷ a + bxyx
Notación polaca directa de la expresión algebraica inicial
c) El recorrido postorden produce:
xab ÷ xy − abx + ÷ y − x × ÷
Notación polaca inversa de la expresión algebraica inicial.
La evaluación numérica de las dos últimas expresiones cuando a = 10, b = 2, x = 3, y = 4 es:
Preorden (F x y)
÷ − + 3 ÷ 10 2 4 × − ÷ 10 + 2 3 43
| {z } | {z }
÷ − + 3 5 4 × − ÷ 10 5 43
| {z } | {z }
÷ − 8 4 × − 2 4 3
| {z } | {z }
÷ 4 × (−2) 3
| {z }
÷ 4 (−6)
| {z }
4/(−6) = −2/3

Postorden (x y F )
3 10 2 ÷ + 4 − 10 2 3 + ÷ 4 − 3 × ÷
| {z } | {z }
3 5 + 4 − 10 5 ÷ 4 − 3 × ÷
| {z } | {z }
8 4 − 2 4 − 3 × ÷
| {z } | {z }
4 (−2) 3 × ÷
| {z }
4 (−6) ÷
| {z }
4/(−6) = −2/3

A. Caicedo B., G. Wagner de G., R. M. Méndez


Búsqueda y Ordenamiento con Árboles Binarios 101

7.13 Búsqueda y Ordenamiento con Árboles Binarios

Los algoritmos de búsqueda y ordenamiento tienen un lugar preponderante en la teoría de la computación


puesto que facilitan la tarea de organizar grandes grupos de datos y buscar un dato específico dentro de
un archivo de datos. En esta unidad se hará uso de la estructura de árbol para realizar un ordenamiento
de un conjunto de elementos.

Una de las estructuras de datos más usadas en la programación es la búsqueda binaria dentro de un
arreglo de datos. Esta estructura se puede modelar fácilmente mediante un árbol binario de búsqueda, el
cual permite ordenar arreglos, buscar un elemento determinado del arreglo e insertar un elemento dentro
del arreglo.

Definición 7.16 Árbol Binario de Búsqueda


Sea T un árbol binario. T se dice ser un árbol binario de búsqueda o árbol ordenado, si cada
nodo N de T cumple la siguiente propiedad: “El valor de N es menor que cualquier valor de su
subárbol derecho y es mayor que cualquier valor de su subárbol izquierdo”

Ejemplo 19
Sea A = {8, 45, 19, 50, 25, 30, 56, 48, 80} un arreglo. El árbol de la figura 29 es un árbol binario de
búsqueda para A.
45
< >

19 50
< > >

8 25 56
> < >

30 48 80

Figura 29.

Búsqueda:
Para proceder a buscar un elemento k en el árbol binario se procede mediante el siguiente algoritmo:
Algoritmo de Búsqueda, inserción y ordenamiento
Supóngase que k es un ítem de información dado. N es cualquier valor del arreglo.
paso 0. Construir un árbol binario de búsqueda. Hacer el nodo raíz igual a N
paso 1. a) Si k < N proceder con el hijo izquierdo de N
b) Si k > N proceder con el hijo derecho de N
paso 2. Repetir paso 1 hasta que se cumpla una de las siguientes condiciones:
a) Se encuentra un nodo N tal que k = N . Se termina la búsqueda.
b) Se encuentra un subárbol vacío, lo que indica que la búsqueda ha fallado.
Se inserta k en el lugar del subárbol vacío.
paso 3. Se recorre el árbol In-orden para hallar la lista ordenada

A. Caicedo B., G. Wagner de G., R. M. Méndez


102 ÁRBOLES

En otras palabras lo que se hace es iniciar la búsqueda a partir de la raíz R del árbol y se desciende por
uno de sus subárboles hasta que se logré encontrar a k.

Ejemplo 20
Dado el árbol de búsqueda de la figura 30, ubicar el elemento k = 20 en el arreglo A =
{17, 8, 38, 40, 26, 19, 35, 52, 45}

35

17 40

8 26 38 52

19 45
Figura 30.

Siguiendo el algoritmo anterior se tiene:

paso 0. Construir el árbol de búsqueda. Escoger arbitrariamente a 35 como ráiz

paso 1 y 2.

a. Se compara k = 20 con la raíz N = 35. Como 20 < 35 se procede con el hijo izquierdo de
35 que es 17
b. Se compara k = 20 con 17. Como 20 > 17 se procede con el hijo derecho de 17 que es 26
c. Se compara k = 20 con 26. Como 20 < 26 se procede con el hijo izquierdo de 26 que es 19
d. Se compara k = 20 con 19. Como 20 > 19 se procede con el hijo derecho de 19, pero 19
no tiene hijo derecho. No se puede encontar el número buscado. Se inserta k = 20 como
hijo derecho de 19. El nuevo árbol con k = 20 insertado es:

35

17 40

8 26 38 52

19 45

20
Figura 31.

El camino recorrido al aplicar el algoritmo se muestra con línea doble.

paso 3. Se recorre el árbol en In-orden y se obtiene A = {8, 17, 19, 20, 26, 35, 38, 45, 52}

A. Caicedo B., G. Wagner de G., R. M. Méndez


Búsqueda y Ordenamiento con Árboles Binarios 103

Ordenamiento:
Para realizar un ordenamiento usando un árbol binario, existen diversos métodos, entre ellos los más
conocidos son el método de FOSTER y el método de FLOYD, siendo el de Foster el más fácil de
aplicar.

Algoritmo de Foster
paso 1. Se forma un árbol binario AVL de acuerdo con las siguientes normas:
a) El primer elemento del arreglo se usa como nodo de la raíz del árbol.
b) Cualquier nuevo elemento se compara con la raíz, en forma recursiva, hasta encontrar su posición
en el árbol
c) Si el elemento es menor o igual a la raíz, se coloca en el subárbol izquierdo
d) Si el elemento es mayor que la raíz se coloca en el subárbol derecho
e) Para cualquier nodo, todos los valores del subárbol izquierdo del nodo son menores o iguales al
valor del nodo. Todos los valores del subárbol derecho deben ser mayores que el valor del nodo
f) Si el árbol está sesgado se pueden usar algoritmos de balanceo para corregirlo.
paso 2. Se recorre el árbol en in-orden para obtener la lista ordenada de los elementos del arreglo.

Ejemplo 21
Dado el arreglo {D, F, E, B, A, C, G} al aplicarle el algoritmo de Foster se obtiene el árbol de búsque-
da de la figura 32.
D

B F

A C E G

Figura 32.

Se escoge D como raíz. Se ubica F en el subárbol derecho porque F > D; se ubica E en el subárbol
izquierdo de F porque E < F . Se ubica B en el subárbol izquierdo de D porque B < D. Se ubica A
en el subárbol izquierdo de B porque A < B. Se ubica C en el subárbol derecho de B porque C > B.
Se ubica G en el subárbol derecho de F porque G > F

El recorrido in-orden produce el arreglo ordenado {A, B, C, D, E, F, G}

A. Caicedo B., G. Wagner de G., R. M. Méndez


104 ÁRBOLES

Ejercicios Capítulo 7

a. Determinar cuáles de los grafos de la figura 33 son árboles


b b b

b b b
b

b b b

b b
b b b

b b b b b b

Figura 33.

b. Para el árbol de la figura 34 establecer cada uno de los subárboles


a

b c d

e f

g h i

Figura 34.

c. Para el árbol de la figura 34 establecer: a) su altura o profundidad; b) cuáles son sus hojas y c) la
altura de los nodos a, b y c

d. Trazar un árbol ordenado según un orden alfabético y de 3 niveles

e. Trazar un árbol trinario ordenado de 4 niveles

f. Trazar un árbol binario incompleto y uno completo

g. Trazar un árbol binario equilibrado o balanceado

h. Determinar si el árbol binario de la figura 35 es AVL y explique por qué.


b

b b

b b b b

b b

Figura 35.

i. Trazar un árbol binario incompleto de profundidad 4

j. Trazar un árbol binario completo de altura 3

k. Trazar un árbol trinario incompleto de altura 2


A. Caicedo B., G. Wagner de G., R. M. Méndez
Búsqueda y Ordenamiento con Árboles Binarios 105

l. Representar con un árbol binario la siguiente expresión

(3 + (x − y) ÷ 8) − (6 − y) + ((3 × y − 5) − 9 × x)

m. Escribir la expresión algebraica representada por el siguiente árbol


÷

− ÷

+ ×
× 1
6 − 3 −
3 +
3 + x y

5 x x y

Figura 36.

n. Elaborar el análisis (recorrido) anterior, interior y posterior de los árboles de la figura 37

x × a

y z
− 2 b d
s t
+ 1 c i k e
u

v 2 3 g h j f
a) b) Figura 37.
c)

ñ. Representar en forma de listas enlazadas los tres árboles del ejercicio anterior
o. Convertir en binario el árbol de la figura 38
a

b c d

e f g h i

j k l
Figura 38.

p. Evalue las siguientes expresiones dadas en notación polaca directa


a) − × 3 ↑ 5 2 2
b) ↑ × 3 5 − 2 2
c) − ↑ × 3 5 2 2
d) × + ÷ 6 3 3 − 7 3
A. Caicedo B., G. Wagner de G., R. M. Méndez
106 ÁRBOLES

e) ÷ × 2 + 2 5 ↑ + 3 4 2

q. Evalue las siguientes expresiones dadas en notación polaca inversa

a) 3 3 4 5 1 − × + +
b) 3 3 + 4 + 5 × 1 −
c) 3 3 4 + 5 × 1 − +
d) 6 3 ÷ 3 + 7 3 − ×
e) 3 2 ↑ 4 2 ↑ + 5 ÷ 2 ×

r. Escriba en notación polaca directa e inversa las siguientes expresiones

a) (5x + 9)3
b) (x + 2y)/(x − 2y)
c) (a − b) × (c + (d ÷ e))

s. Construir el árbol de búsqueda para el siguiente arreglo: {35, 20, −12, 40, 60, 18, 38, 26}

t. Mediante el algoritmo BUSQUEDA, insertar el elemento k = 22 en el arreglo del ejercicio anterior.

u. Dado el arreglo {C, F, B, A, G, H, E} aplicar el algoritmo de FOSTER para ordenarlo ascendente-


mente.

v. Determinar si k = 2 se encuentra en el siguiente arreglo, usando un algoritmo de búsqueda binaria

M {−18, 4, 18, 40, 17, −15, 2, 9, 14, 7, 9, 8}

w. Mediante un árbol binario de búsqueda insertar el valor k = −2 en el siguiente arreglo y ordenar el


arreglo
R = {−7, 7, 8, 22, −1, 6, −9, 18, 14, 0, 15, −5, 5}

x. Ordenar ascendentemente el arreglo A = {x, a, p, m, b, c, t, y, d, o, q} usando el algoritmo de Foster

y. Construir un árbol de búsqueda para el siguiente arreglo

B = {35, 72, −2, 12, 8, 4, −18, 30, 32, 3, 26}

e insertar k = 22 usando el algoritmo de búsqueda e inserción.

A. Caicedo B., G. Wagner de G., R. M. Méndez


ulo
pít

8
Ca

ÁRBOLES NO DIRIGIDOS

En la unidad anterior se han estudiado árboles en los cuales se ha especificado claramente


un nodo raíz, y se ha considerado su análisis haciendo un recorrido descendente desde la raíz
hasta sus hojas, ahora en esta unidad se estudiará un nuevo tipo de árbol al cual no se le
considera un nodo raíz y que se puede recorrer en cualquier sentido. Esta clase de árboles son
de gran aplicación en el estudio de redes eléctricas, de redes locales de comunicación entre
computadores, sistemas de riego, etc.

8.1 Árbol No Dirigido

Definición 8.1
Un árbol no dirigido es aquel en el que todas las aristas son bidireccionales, no posee un nodo raíz
específico y no se analiza teniendo en cuenta niveles de ubicación de sus nodos

Ejemplo 1
Los dos árboles de la figura 1 son no dirigidos
b b

b b

b b

b b b

Figura 1.

Un árbol no dirigido sigue siendo un grafo conexo sin ciclos pero con la propiedad de que corresponde a
una relación simétrica puesto que si a y b son dos nodos del árbol y existe la arista (a, b) entonces también
existe la arista (b, a).

Los siguientes teoremas ayudan a comprender el vínculo que hay entre relación simétrica y árbol no
dirigido
107
108 ÁRBOLES NO DIRIGIDOS

Teorema 1

Si ℜ es una relación simétrica en un conjunto N entonces los siguientes enunciados son equivalentes:

a. ℜ es un árbol no dirigido con n − 1 arcos

b. ℜ es conexa y acíclica

Nota: Una relación simétrica ℜ es conexa si existe una trayectoria en ℜ desde cualquier nodo a
cualquier otro nodo.

Teorema 2

Sea ℜ una relación simétrica en N . Entonces ℜ es un árbol no dirigido si y sólo si cualquiera de los
siguientes enunciados es verdadero

a. ℜ es acíclica y si se añade a ℜ cualquier arista no dirigida, la nueva relación no será acíclica.

b. ℜ es conexa y si cualquier arista no dirigida se remueve de ℜ, la nueva relación no será conexa.

c. ℜ es acíclica con n − 1 arcos

8.2 Árbol Generado de Relaciones Conexas

Definición 8.2
Si ℜ es una relación simétrica conexa en un conjunto N , se dice que un árbol T en N es un árbol
generado por ℜ si T ⊆ ℜ

En otras palabras, un árbol generado T es un árbol con exactamente los mismos nodos que ℜ y que se
puede obtener de ℜ al suprimir algunas aristas hasta que ℜ quede sin ciclos y siga siendo conexa.

Un árbol generado a partir de un grafo G también es llamado árbol expansor de G o árbol ge-
nerador de G o árbol de comunicación de G porque hace que todos los nodos del grafo G queden
intercomunicados entre sí.

Teorema 3

Un grafo G contiene un árbol generador si y solo si es conexo. Si el grafo es disconexo contiene un


árbol generador para cada componente conexa

Para verificar que un grafo conexo contiene un árbol generador se pueden seguir dos metodologías dife-
rentes:
Primera: comenzar con un grafo conexo y remover arcos sucesivamente en forma tal que en cada etapa
A. Caicedo B., G. Wagner de G., R. M. Méndez
Árbol Generador de Mínimo Peso 109

el subgrafo resultante sea conexo. Eventualmente al borrar algún arco el subgrafo se desconecta. Por el
enunciado b) del teorema 2, el subgrafo que se tiene hasta el momento es un árbol generador. Este árbol
tendrá n − 1 arcos, donde n es el número de nodos del grafo original.
Segunda: Esta segunda forma de trabajar es totalmente opuesta a la primera. Se comienza suponiendo
un árbol vacío, sin arcos, y se adiciona luego un arco cada vez, teniendo en cuenta que el arco adicionado
no forme un ciclo con los anteriores. Eventualmente la adición de un arco más creará un ciclo. El grafo
construido hasta ese paso será un árbol.

Ejemplo 2
En la figura 2 se muestra una secuencia gráfica de los pasos seguidos para obtener un árbol generador
a partir de un grafo dado, aplicando la primera metodología.
b b b

b b b b b b b b b

b b b b b b

b b

b b b b b b

b b b b

Figura 2.

La segunda metodología se puede resumir en el siguiente algoritmo:

Algoritmo Arbolgen
paso 0. Entrar el grafo G con n nodos y m arcos: a1 , a2 , . . . , am
paso 1. Hacer T = {N, ∅}
paso 2. Para i = 1 hasta n hacer
a) Adicionar el arco ai al árbol T si él no crea un ciclo con arcos que ya existan en T
b) Si T contiene n−1 arcos, imprimir T como el árbol generador y PARAR. En caso contrario
declarar que G no contiene un árbol generador y PARAR.

8.3 Árbol Generador de Mínimo Peso

Definición 8.3
Un grafo G con una función w = A(G) → R+ es llamado un grafo pesado. Si a es un arco en
A(G) entonces w(a) será el peso de a

A. Caicedo B., G. Wagner de G., R. M. Méndez


110 ÁRBOLES NO DIRIGIDOS

Por lo general los valores asignados a los arcos representan costos, capacidad, longitud o algún otro
parámetro de interés en la vida real.

Definición 8.4
Sea G un grafo conexo. Un árbol generador de G de mínimo peso es un árbol no dirigido tal que la
trayectoria única que une cualquier par de nodos es de mímino valor

Cuando se tiene un grafo conexo pesado, es de mucha utilidad determinar cuál es el árbol generador de
mínimo peso, puesto que con él queda determinada la forma de intercomunicar todos los nodos del grafo
con el mínimo costo o la mínima distancia, etc. Una aplicación típica ocurre en el diseño de redes de
comunicación donde los nodos representan ciudades y las aristas son las posibles líneas de comunicación
entre las ciudades. El valor asociado a cada arco representa el costo de seleccionar esa línea para la red.

Se han diseñado diversos algoritmos que hallan el árbol generador de mínimo peso, entre ellos se destacan
el de Sollin, el de Kruskal y el de Prim, siendo el más conocido el de Kruskal que fue presentado en
1956. Este problema de hallar el árbol de mínimo peso ya había sido estudiado por otros matemáticos
anteriores a los ya citados, como es el caso del ingeniero electricista ruso Otakar Boruvka quien formuló
un algoritmo bastante eficiente cuando enfrentó el trabajo de la electrificación del sureste de Moravia en
1928.

8.4 Algoritmo de Prim (Robert C. Prim, 1957)

Supóngase N = {1, 2, 3, . . . , n}. El algoritmo de Prim comienza con un conjunto U inicializado con
cualquier nodo, por ejemplo {1}. Luego se hace crecer un árbol generador, arco por arco. En cada paso
se encuentra el arco más corto (u, v) que conecta a U y N − U y luego se adiciona v, el nodo en N − U ,
a U . Se repite este paso hasta que U = N .

El algoritmo es resumido en los siguientes pasos:

Algoritmo de Prim
paso 0. Iniciar el grafo T con un solo nodo i escogido al azar. N = {i}, A = ∅, T = ({i}, ∅)
paso 1. Seleccionar el arco (i, j) cuya longitud es la menor entre todos aquellos arcos adyacentes a T .
Adicionar este arco (i, j) a T y j al conjunto de nodos de T
paso 2. Preguntar si T ya es un árbol que contiene todos los nodos de G y detenerse. En caso contrario
repetir el paso 1.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Algoritmo de Kruskal 111

Ejemplo 3
Aplicar el algoritmo de Prim para hallar el árbol de mímino peso a partir del grafo de la figura 3.
a b c
10 6

8
7 14

20 d 16

17

e
Figura 3.
Solución

paso 0. A = ∅. U = {e}. T = ({e}, ∅)


paso 1. De los arcos adyacentes a T , el arco (e, c) es el de menor peso. Adicionar (e, c) a A y el
nodo c a U . T = ({e, c}, {(e, c)})
paso 2. T todavía no es un árbol. Repetir paso 1.
paso 1. De los arcos adyacentes a T , el arco (c, b) es el de menor peso. Adicionar (c, b) a A y el
nodo b a U . T = ({e, c, b}, {(e, c)(c, b)})
paso 2. T aún no es un árbol. Repetir paso 1.
paso 1. De los arcos adyacentes a T , el arco (b, d) es el de menor peso. Adicionar (b, d) a A y el
nodo d a U . T = ({e, c, b, d}, {(e, c)(c, b)(b, d)})
paso 2. T aún no es un árbol. Repetir paso 1
paso 1. De los arcos adyacentes a T , el arco (d, a) es el de menor peso. Adicionar (d, a) a A y el
nodo a a U . T = ({e, c, b, d, a}, {(e, c)(c, b)(b, d)(d, a)})
paso 2. T ya es un árbol porque U = N . Parar

8.5 Algoritmo de Kruskal

Supóngase que se tiene un grafo pesado G = (N, A) con N = {1, 2, . . . , n} nodos. Se inicia con T = (N, ∅)
consistente de n nodos y sin arcos. Cada nodo es una componente conexa de sí mismo. Cuando el al-
goritmo procede siempre se tendrá una colección de componentes conexas y para cada componente se
seleccionarán aristas que formen un árbol. Para construir progresivamente las componentes se examinan
los arcos de A en orden creciente de peso. Si el arco conecta dos nodos en dos componentes diferentes,
entonces el arco se adiciona a T . Si conecta dos nodos en la misma componente se descarta pues podría
causar un ciclo. Cuando todos los nodos estén en una componente, T será el árbol generador de mínimo
peso.

Algoritmo de Kruskal
paso 0. Iniciar T con n nodos y sin arcos. T = {1, 2, . . . , ∅}.
paso 1. Crear una lista L de arcos, desde G, en orden ascendente de peso. Los arcos con el mismo
peso son ordenados arbitrariamente.
paso 2. Seleccionar el arco (i, j) del comienzo de L. Si este arco forma un circuito en T se borra de L
y se repite el paso 2; en caso contrario se transfiere de L a T .
paso 3. Si T es un árbol, PARAR; en caso contrario repetir el paso 2.

A. Caicedo B., G. Wagner de G., R. M. Méndez


112 ÁRBOLES NO DIRIGIDOS

Ejemplo 4
Aplicar el algritmo de Kruskal para hallar el árbol generador de mínimo peso al grafo de la figura 4.
5
1 2

8 10

10 3

7 4

5 4
6
Figura 4.

Solución

paso 0. Iniciar el árbol con los nodos de G y sin arcos. T = ({1, 2, 3, 4, 5}, ∅)
paso 1. L = {(3, 4)(1, 2)(4, 5)(3, 5)(1, 3)(1, 5)(2, 3)}
paso 2. El arco (3, 4) se pasa de L a T , entonces
L = {(1, 2)(4, 5)(3, 5)(1, 3)(1, 5)(2, 3)}. T = ({1, 2, 3, 4, 5}, {(3, 4)})
paso 3. T no es un árbol de G. Repetir paso 2.
paso 2. El arco (1, 2) se pasa de L a T , entonces
L = {(4, 5)(3, 5)(1, 3)(1, 5)(2, 3)}. T = ({1, 2, 3, 4, 5}, {(3, 4)(1, 2)}). El arco (1, 2) no
forma un círculo en T
paso 3. T no es un árbol de G. Repetir paso 2
paso 2. El arco (4, 5) se pasa de L a T , entonces
L = {(3, 5)(1, 3)(1, 5)(2, 3)}. T = ({1, 2, 3, 4, 5}, {(3, 4)(1, 2)(4, 5)})
paso 3. T no es un árbol de G. Repetir paso 2
paso 2. El arco (3, 5) no se puede pasar de L a T porque forma un ciclo con arcos que ya están
en T . El arco (3, 5) se borrar de L. El arco (1, 3) se pasa de L a T , entonces:
L = {(1, 5)(2, 3)}. T = ({1, 2, 3, 4, 5}, {(3, 4)(1, 2)(4, 5)(1, 3)}). El arco (1, 3) no forma
un ciclo en T
paso 3. T ya es un árbol de G, porque todos los nodos de G están interconectados. Parar
El árbol recubridor de mínimo peso es:
5
1 2

6
5 4

Figura 5.

A. Caicedo B., G. Wagner de G., R. M. Méndez


Árbol Generador de Mínima Distancia 113

8.6 Árbol Generador de Mínima Distancia

En un grafo pesado conexo G la distancia entre dos nodos cualquiera x e y se denota por d(x, y) y es
el mínimo valor de w(P ) tomado sobre todas las trayectorias P desde x a y, w(P ) es el peso de una
trayectoria P y es la suma de los pesos de todas las aristas de P . w(P ) también es llamada la longitud
de la trayectoria P .

En un árbol generador también se puede fijar un nodo como nodo origen y hablar entonces de dis-
tancias entre ese nodo y cualquier otro nodo.

Definición 8.5
Un árbol generador de mínima distancia con nodo origen r es un árbol T que contiene una trayectoria
de mínima distancia desde r a cada nodo.

Definición 8.6
Un árbol generador de mínimo peso en un grafo conexo G con nodo origen r, es un árbol T tal que
para cada nodo v de G, la longitud de la trayectoria única en T desde r a v es igual a d(r, v)

Ejemplo 5
El árbol a) de la figura 6 es un árbol de mínima distancia y el árbol b) es un árbol de mínimo peso,
generados a partir del grafo G.
r 8 6
2 3

4 9 5
7 9 7
7
8 3
4 5 6

G
r 8 r 8 5
2 3 2 3

4 5 4
7

3 8 3
4 5 6 4 5 6

a) b)

Figura 6.

8.7 Algoritmo de Dijkstra (Árbol de mínima distancia)


Como el problema de establecer un árbol generador a partir de un nodo origen en un grafo conexo G
se presenta frecuentemente al tratar de intercomunicar una central de comunicaciones con una serie de
puntos, es conveniente contar con un algoritmo rápido que establezca cuál es el conjunto de aristas que se
A. Caicedo B., G. Wagner de G., R. M. Méndez
114 ÁRBOLES NO DIRIGIDOS

deben tener en cuenta para formar el árbol de comunicación. El algoritmo propuesto por E.W. Dijkstra,
que se presenta a continuación, es muy adecuado para este tipo de problema.

Algoritmo de Dijkstra
paso 0. Verificar que G es un grafo conexo
paso 1. Entrar el grafo pesado G y establecer un nodo r como nodo origen
paso 2. Hacer T = {r}
paso 3. Para i=1 hasta N-1 hacer
begin
paso 4. Econtrar z un nodo en G − T cuya distancia desde r sea mínima. Sea e un arco
desde z a un nodo de T y que esté en alguna trayectoria de distancia mínima
desde z a r.
paso 5. Adicionar e a los arcos de T
Adicionar z a los nodos de T
Hacer T = (N (T ), A(T ))
end
paso 6. Imprimir T y PARAR.

Ejemplo 6
Aplicar el algoritmo de Dijkstra al grafo de la figura 7 a) para obtener el grafo generador de mínima
distancia, considerando el nodo r como nodo origen.
r r

2 4 2 4

x s x s

3 3 3 3 3
5

u v 1 w u v 1 w

a) Grafo inicial Figura 7. b) Arbol Generador de mínima distancia

paso i z N (T ) e A(T )
2 r
4 1 x (r, x)
5 1 x {r, x} {(r, x)}
4 2 s (r, s)
5 2 s {r, x, s} {(r, x)(r, s)}
4 3 u (x, u)
5 3 u {r, x, s, u} {(r, x)(r, s)(x, u)}
4 4 v (x, v)
5 4 v {r, x, s, u, v} {(r, x)(r, s)(x, u)(x, v)}
4 5 w (v, w)
5 5 v {r, x, s, u, v, w} {(r, x)(r, s)(x, u)(x, v)(v, w)}

El árbol resultante se muestra en la figura 7 b)


A. Caicedo B., G. Wagner de G., R. M. Méndez
Algoritmo de Dijkstra (Árbol de mínima distancia) 115

Ejemplo 7
Aplicar el algoritmo de Dijkstra al grafo de la figura 8 a) para obtener el árbol generador de mínima
distancia que se muestra en la figura 8 b). Usar el nodo a como nodo raíz
a 5 3 c 4 a 5 3 c 4
b d b d

4 3 e 6 2 4 e 2

2 2

f 5 g f 5 g
h h
a) b)
Figura 8.

paso i z N (t) arco (e) A(T )


2 {a}
3-4 1 f (a, f )
5 {a, f } {(a, f )}
3-4 2 b (a, b)
5 {a, f, b} {(a, f )(a, b)}
3-4 3 c (b, c)
5 {a, f, b, c} {(a, f )(a, b)(b, c)}
3-4 4 g (f, g)
5 {a, f, b, c, g} {(a, f )(a, b)(b, c)(f, g)}
3-4 5 e (g, e)
5 {a, f, b, c, g, e} {(a, f )(a, b)(b, c)(f, g)(g, e)}
3-4 6 d (c, d)
5 {a, f, b, c, g, e, d} {(a, f )(a, b)(b, c)(f, g)(g, e)(c, d)}
3-4 7 h (d, h)
5 {a, f, b, c, g, e, d, h} {(a, f )(a, b)(b, c)(f, g)(g, e)(c, d)(d, h)}

A. Caicedo B., G. Wagner de G., R. M. Méndez


116 ÁRBOLES NO DIRIGIDOS

Ejercicios Capítulo 8

a. Aplicar el algoritmo de remover aristas para hallar un árbol generador en cada uno de los grafos de
la figura 9.
b b b b

b b b b b b

b b b b b

Figura 9.

b. Para el grafo de la figura 10 hallar gráficamente los 16 árboles generadores distintos que posee.
b

b b

Figura 10.

c. Aplicar el algoritmo de Kruskal para hallar el árbol generador de valor mínimo en cada uno de los
grafos de la figura 11.
a 4 7 c a 8 11 c
b b

6 8
3 10

3 2 6 1 5 e 12
12
d 10 9
11

9 e 8 f f g
d

a 2 3
2
1 b
c 2 20 8 10 15 11
4
1 d
2 e 5 7 7
3 1 4 5 6
f 2
5
g 12 15
10 9
6
6 h
i 7
10
j Figura 11.

d. Aplicar el algoritmo de Prim para hallar el árbol generador de valor mínimo en cada uno de los
grafos de la figura 11.

e. Aplicar el algoritmo de Dijkstra para hallar un árbol generador de mínima distancia para cada uno
de los grafos de la figura 12. Considérese el nodo 1 como nodo raíz.
A. Caicedo B., G. Wagner de G., R. M. Méndez
Algoritmo de Dijkstra (Árbol de mínima distancia) 117

5 3 4 4
1 2 3 4 1 2

9 7 11

4 5
3 5 6 2 4 4 5

2
2

5
6 7 8 3

Figura 12.

f. Dada la matriz de costos C, donde cij es el costo de tender una línea de transmisión de energía
entre las ciudades xi y xj , encontrar la red de transmisión de costo mínimo.
x1 x2 x3 x4 x5 x6 x7 x8
 
x1 − 5 − 4 7 6 6 −
−
x2  − 7 8 − − − − 
−
x3  − − 2 9 8 7 − 
M= −
x4  − − − 5 − 5 − 
−
x5  − − − − 4 9 5 
−
x6  − − − − − 7 8 
x7  − − − − − − − 8 
x8 − − − − − − − −

g. Una empresa constructora se encuentra realizando 3 obras que requieren ciertas cantidades de
cemento y se dispone de 2 fábricas que pueden satisfacer estas necesidades. Existe comunicación
entre las dos fábricas y las 3 obras. El costo cij = cji de transportar una unidad (tonelada) de
cemento del lugar i al j se muestra sobre los arcos del grafo de la figura 13.
2
7
6
1 9
8 3 5

5
5 4

4
Figura 13.

Determinar la red de abastecimiento de costo mínimo.


h. Aplique el algoritmo de Dijkstra para hallar el árbol generador de mínima distancia del siguiente
grafo, tomando r como nodo raíz.
a 5 4 r 6 c
b

7 2 9 3 4

p 4 q 3
t 5
Figura 14.

A. Caicedo B., G. Wagner de G., R. M. Méndez


118 ÁRBOLES NO DIRIGIDOS

A. Caicedo B., G. Wagner de G., R. M. Méndez


Bibliografía

[1] Garnier R. y John T. Discrete Mathematics. Adam Hilger. Editorial Philadelphia 1992.

[2] Grassmann W. y Jean- Paul T. Matemática Discreta y Lógica. Editorial Prentice Hall. España 1996.

[3] Brassard y Bratley P. Fundamentos de Algoritmia. Editorial Prentice Hall. España 1997.

[4] Gorcbátov V. A. Fundamentos de Matemática Discreta. Editorial Mir Moscú. URSS 1988.
[5] Skvarcius y Robinson. Discrete Mathematics whit Computer Sciencie Applications. Editorial Benjamin
Diummings. California 1986.

[6] Ross K. A. Y Charles R.B. Matemáticas Discretas. Prentice Hall. México 1988.

[7] Kolman B, Robert C. y Sharon R. Estructuras de Matemáticas Discretas para la Computación. Pren-
tice Hall. México 1997.

[8] Wirth N. Algoritmos y Estructura de Datos. Prentice Hall. México 1986.

[9] Knuth D. E. Clasificación y Búsqueda. Editorial Reverté. España 1987.

[10] Johnsonbaugh J. Matemáticas Discretas. Editorial Prentice Hall. México 1999.

[11] Cormen T. H, Charles E. L. y Ronald L. R. Introduction to Algoritms. Editorial McGraw-Hill. New


York 1989.

[12] Toranzas F.A. Introducción a la Teoría de Grafos. OEA. Washington 1976.

[13] Aho A, John E. H. y Jeffrey D. U. The Desing and Analysis of Computer Algorithms. Editorial
Addison Wesley. USA 1974.

[14] Tenenbaum A. y Moshe J. A. Estructura de Datos en Pascal. Editorial Prentice Hall. Colombia 1983.

[15] Aho A, John E. H. y Jeffrey D. U. Estructura de Datos y Algoritmos. Editorial Addison Wesley.
USA 1988.

[16] Jauffred F. y otros. Métodos de Optimización. Centro Regional de ayuda técnica, agencia para el
desarrollo internacional. México 1971.

[17] Kaufmann A. Métodos y modelos de la investigación de operaciones. Compañía Editorial Continental.


México 1972.

[18] Phillips D.T. y Alberto G.D. Fundamentals of Network Analysis. Editorial Prentice Hall. USA
1981.bur Me

[19] Minieka E. Optimization Algorithms for Networks and graphs. Editorial Marcel Dekker. New York

[20] Bazaraa M. y John J.J. Programación lineal y flujo en redes. Editorial Limusa. México 1981

119

Potrebbero piacerti anche