Vous êtes sur la page 1sur 67

Matemáticas Discretas

Resúmenes de Teoría

Juan David González Cobas

7 de junio de 2004
II
Índice general

1. Combinatoria 1
1.1. Principios de la suma y el producto . . . . . . . . . . . . . . . . . . . 1
1.2. Muestras: permutaciones y combinaciones . . . . . . . . . . . . . . . 2
1.3. Teorema del binomio y coeficientes binomiales . . . . . . . . . . . . 5
1.4. Muestras con reemplazo . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5. Permutaciones con elementos identificados . . . . . . . . . . . . . . 12
1.6. Generación ordenada de muestras . . . . . . . . . . . . . . . . . . . 13
1.6.1. Permutaciones en orden lexicográfico . . . . . . . . . . . . . 14
1.6.2. Combinaciones en orden lexicográfico . . . . . . . . . . . . . 15
1.7. El principio de inclusión-exclusión . . . . . . . . . . . . . . . . . . . 15

2. Grafos 19
2.1. Conjuntos y relaciones . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.1. Producto cartesiano . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.2. Relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.3. Propiedades de las relaciones . . . . . . . . . . . . . . . . . . 20
2.1.4. Clausura transitiva . . . . . . . . . . . . . . . . . . . . . . . 22
2.2. Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.1. Grafo dirigido y no dirigido . . . . . . . . . . . . . . . . . . 23
2.2.2. Incidencia y grado . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.3. Representación como estructuras de datos . . . . . . . . . . . 25
2.2.4. Caminos y ciclos . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3. Relaciones y grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4. Accesibilidad y conexión . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.1. Matrices de accesibilidad . . . . . . . . . . . . . . . . . . . . 30
2.5. Algunos grafos especiales . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.1. Grafos completos . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.2. Torneos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5.3. Grafos bipartitos . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.4. Caminos y ciclos . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.5. Grafos cúbicos Q n . . . . . . . . . . . . . . . . . . . . . . . 34
2.6. Arboles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6.1. Arboles enraizados . . . . . . . . . . . . . . . . . . . . . . . 38
2.6.2. Arboles binarios . . . . . . . . . . . . . . . . . . . . . . . . 40
2.7. Recorridos de grafos . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.7.1. Recorridos de árboles binarios . . . . . . . . . . . . . . . . . 41
2.7.2. Recorridos eulerianos . . . . . . . . . . . . . . . . . . . . . . 42
2.7.3. Caminos hamiltonianos . . . . . . . . . . . . . . . . . . . . . 47

III
2.7.4. Recorridos en anchura y profundidad . . . . . . . . . . . . . 49
2.7.5. Caminos mínimos, MST y demás . . . . . . . . . . . . . . . 52
2.8. Planaridad y coloreado . . . . . . . . . . . . . . . . . . . . . . . . . 53

3. Recurrencias y notación asintótica 57


3.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.2. Recurrencias lineales homogéneas . . . . . . . . . . . . . . . . . . . 58
3.3. Notación asintótica . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4. Recurrencias divide y vencerás . . . . . . . . . . . . . . . . . . . . . 62

IV
Capítulo 1

Combinatoria

El objetivo de la Combinatoria, tal y como nosotros vamos a entenderla, consiste en


calcular el número de elementos de ciertos conjuntos finitos. Es decir, nos ejercitaremos
en el uso de determinadas técnicas de recuento.

1.1. Principios de la suma y el producto


Aunque en este capítulo emplearemos una gama muy variada de técnicas con el
fin de calcular de cuántas formas pueden disponerse conjuntos de objetos, todas ellas
se basan en dos principios que denominaremos principio de la suma y principio del
producto. Vamos a dar diferentes enunciados de los mismos. En primer lugar, la versión
conjuntista.

Teorema 1. (Principio de la suma). Si A 1 , A2 , . . . , An es una familia de conjuntos


disjuntos dos a dos (es decir, Ai ∩ A j = ∅ para i 6= j), entonces
¯ n ¯ n
¯[ ¯ X
¯ ¯
¯ Ak ¯ = |Ak | = |A1 | + |A2 | + · · · + |An |
¯ ¯
k=1 k=1

es decir, el cardinal (número de elementos) de la unión de dichos conjuntos es igual a


la suma de sus cardinales.

Y de forma análoga enunciamos el

Teorema 2. (Principio del producto). Si A 1 , A2 , . . . , An es una familia de conjuntos


cualesquiera, entonces
¯ n ¯ n
¯Y ¯ Y
¯ ¯
¯ Ak ¯ = |Ak | = |A1 | · |A2 | · . . . · |An |
¯ ¯
k=1 k=1

es decir, el cardinal (número de elementos) del producto cartesiano de dichos conjuntos


es igual al producto de sus cardinales.

Enunciados de esta forma, los dos principios tienen una apariencia sobrecogedora.
Sin embargo, expresan ideas muy simples que todos poseemos asimiladas de forma in-
consciente en nuestra intuición. Así pues, enunciaremos los mismos en forma intuitiva.

1
Teorema 3. (Principio de la suma, forma intuitiva) Si una elección puede realizarse
por varios caminos alternativos, excluyentes entre sí, el número de resultados posibles
es igual a la suma de las alternativas que cada uno de los caminos nos ofrece.
Teorema 4. (Principio del producto, forma intuitiva) Si una elección queda determina-
da por varias elecciones parciales independientes entre sí (es decir, cada una de ellas
puede realizarse sin afectar al resultado de las otras), el número de resultados posibles
es el producto de los números de posibilidades que ofrece cada elección parcial.
Una aplicación de ambos principios la encontramos en el siguiente
Ejemplo 1. Calcular cuántas palabras de hasta cuatro letras existen, suponiendo que
el alfabeto tiene 26 símbolos.
Para empezar, podemos construir palabras de uno, dos, tres y cuatro símbolos. Es
evidente que el número total de palabras será la suma total del número de palabras de
una letra, de dos, de tres y de cuatro letras. Esta es una simple aplicación del principio
de la suma:
P = P1 + P2 + P3 + P4
Calculamos cada cantidad por separado. Es evidente que hay 26 palabras de una
letra. Para construir una palabra de dos letras, tenemos que escoger la primera y la
segunda: ambos procesos son independientes, y cada uno ofrece 26 posibilidades. Por
lo tanto, el principio del producto nos dice que existen 26 × 26 = 262 palabras de dos
letras. Generalizando, el número de palabras de i letras será

Pi = 26
| × 26
{z · · · 26}
i veces

por lo que
P = 26 + 262 + 263 + 264 = 475254

1.2. Muestras: permutaciones y combinaciones


La aplicación directa de los principios de la suma y el producto sería muy laboriosa
salvo en problemas muy simples. Existen, sin embargo, bloques constructivos que nos
permiten descomponer los problemas combinatorios con facilidad, haciéndolos mane-
jables.
En general, resolveremos el cálculo de un problema descomponiéndolo en diferen-
tes tipos de muestras. Antes de dar una definición rigurosa, veamos una descripción
informal del tipo de problema a que reduciremos nuestros argumentos.
Consideremos un conjunto de n objetos diferentes: para fijar ideas, pensemos en
bolas numeradas de 1 a n. De estas bolas, vamos a seleccionar r , siendo 0 ≤ r ≤ n.
Una tal selección de r objetos, a escoger de n dados, es lo que denominaremos muestra.
Un ejemplo puede ser un sorteo de la lotería primitiva. En el bombo tenemos, exac-
tamente, 49 bolas numeradas del 1 al 49. El sorteo (simplificando mucho) consiste en
la extracción de seis bolas del bombo. En este ejemplo, n = 49 y r = 6. Obviamente,
el orden en que salgan las bolas, si salen todas a la vez o salen al revés, es algo que no
nos importa: lo único que afecta al resultado es que una bola dada (pongamos, la 17)
esté o no presente en la muestra elegida.
Otro ejemplo puede ser una rifa de tres premios entre los 50 alumnos de una clase.
El primer premio consiste en un aprobado gratuito en Matemática Discreta; el segundo

2
es un DVD con materiales dudosos, pero sin duda estimulantes; el tercer premiado
recibe como castigo el último CD de David Bisbal. En este caso, el resultado del sorteo
consiste en la selección de tres alumnos entre los 50 dados. En este caso, n = 50 y
r = 3. Ahora bien, en este caso que los premiados sean Juan, David y Ana no es lo
mismo que tomar a David, Ana y Juan; en este último, Juan será castigado con el CD
fatal. Así, el orden de la muestra es relevante.
Definición 1. Sea X un conjunto finito de n elementos. Una selección de r elementos
distintos de X se denomina una r -combinación de X . El número de r -combinaciones
de un conjunto de n elementos se denota por C(n, r ).
En aplicación del ejemplo anterior, el número de posibles resultados de la lotería
primitiva es C(49, 6). Pronto aprenderemos a calcular el valor de este número. Para el
ejemplo de la rifa que incluye el fatídico CD, tenemos otra
Definición 2. Sea X un conjunto finito de n elementos. Una secuencia ordenada de r
elementos distintos {x 1 , x 2 , . . . , xr } ⊂ X se denomina una r -permutación de X . El
número de r -permutaciones de un conjunto de n elementos se denota por P(n, r ).
Si, en particular, r = n, hablamos simplemente de las permutaciones de los n
elementos dados.
En el ejemplo de la rifa, los posibles resultados son las 3-permutaciones de los 50
alumnos, y hay P(50, 3) de ellas.
¿Cuál es el valor de estos misteriosos C(n, r ), P(n, r ) para números n y r concre-
tos? La respuesta la dan los teoremas que siguen:
Teorema 5.
P(n, r ) = n(n − 1)(n − 2) · · · (n − r + 1) (1.1)
| {z }
r factores

Demostración. Para determinar una r -permutación de n objetos, es preciso escoger


cuál de los objetos va a figurar como primero. Esto puede hacerse de n maneras, pues
hay n candidatos. Una vez escogido el primer elemento, toca escoger el segundo. Éste
puede ser cualquiera de los n, menos el recién escogido; por lo tanto, restan n − 1 po-
sibilidades. El tercer elemento, de idéntica forma, podrá escogerse de n − 2 maneras, y
así sucesivamente. El número de posibilidades será el producto de todas las calculadas,
que es el producto indicado más arriba.

El caso particular n = r (permutaciones de n elementos) es especialmente intere-


sante. El número
P(n, n) = n(n − 1)(n − 2) · · · 3 · 2 · 1
se denomina factorial de n y se denota por n!. Representa el número de maneras en
que pueden ordenarse n objetos. El factorial es una función de n de crecimiento extre-
madamente rápido, como muestra la tabla 1.2
Cada factorial se obtiene del anterior multiplicándolo por el siguiente entero: así,
6! es igual a 5! multiplicado por 6, y en general se cumple la ecuación

n! = n (n − 1)! n≥1

Una ecuación como ésta, que define el valor de una función en términos de valores de
la misma para argumentos más pequeños, se denomina una relación de recurrencia;
estudiaremos algunas muy importantes en el tema 3. En particular, 1! = 1 · 0!, y de esta

3
n n!
0 1
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
11 39916800
12 479001600

Cuadro 1.1: Factoriales de n = 0, 1, . . . 12

ecuación podemos deducir que el factorial de cero es la unidad, y no cero, como cabría
concebir intuitivamente.
Con el uso de factoriales, podemos escribir la fórmula 1.1 en la forma más com-
pacta

P(n, r ) = n(n − 1)(n − 2) · · · (n − r + 1)


n(n − 1)(n − 2) · · · (n − r + 1) · (n − r )(n − r − 1) · · · 3 · 2 · 1
=
(n − r )(n − r − 1) · · · 3 · 2 · 1
n!
=
(n − r )!

que tiene utilidad exclusivamente en razonamientos teóricos, puesto que el cálculo de


P(n, r ) casi siempre se realiza directamente a través de la fórmula 1.1.
En cuanto a C(n, r ), obtenemos su valor en el siguiente

Teorema 6.
P(n, r )
C(n, r ) = (1.2)
r!
Demostración. Una r -permutación de n objetos queda determinada por dos cosas:

qué objetos intervienen

en qué orden figuran

Está claro que la elección de los objetos puede hacerse de C(n, r ) maneras; cada elec-
ción determina r ! órdenes posibles, y cada una de estas selecciones de r objetos y un
orden particular de ellos determina una r -permutación y solamente una. Por lo tanto,
el número de r -permutaciones es, aplicando el principio del producto

P(n, r ) = r ! C(n, r ) (1.3)

que es la afirmación del teorema.

4
El número C(n, r ) es tan importante que recibe una denominación especial; es el
número combinatorio o coeficiente binomial
µ ¶
n n(n − 1) · · · (n − r + 1)
= (1.4)
r r!

Estudiaremos más detenidamente las propiedades de estos números, cuya impor-


tancie es trascendental, en la sección 1.3; allí descubriremos de dónde viene el nombre
de coeficiente binomial que damos a esta clase de objeto. Por lo pronto, nos conforma-
remos con utilizarlos en el cálculo de las respuestas a problemas de muestras.
Por ejemplo, las fórmulas 1.2 y 1.4 nos permiten saber cuántos resultados son po-
sibles en un sorteo de lotería primitiva:

49 · 48 · 47 · 46 · 45 · 44
C(49, 6) = = 13983816
6!
es decir, casi 14 millones de combinaciones. Jugando una apuesta simple, a 52 sorteos
por año, el apostante medio emplea más de 260000 años en conseguir un boleto con
seis aciertos. Naturalmente, la vida del apostante medio es mucho más corta.
En cuanto a la rifa, el número de posibles tríos de seleccionados es de

P(50, 3) = 50 · 49 · 48 = 117600

1.3. Teorema del binomio y coeficientes binomiales


En álgebra elemental se demuestra el famosísimo

Teorema 7. (Fórmula del binomio de Newton)


µ ¶ µ ¶ µ ¶
n n n n−1 n n−2 2
(x + y)n = x + x y+ x y + ··· +
0 1 2
µ ¶ µ ¶
n n−k k n n
+ x y + ··· + y (1.5)
k n
n µ ¶
X n n−k k
= x y
k
k=0

Los casos particulares de esta fórmula para n = 0, 1, 2, 3, 4 son bien conocidos del
álgebra elemental (o deberían serlo):

(x + y)0 = 1
1
(x + y) = x+y
(x + y)2 = x 2 + 2x y + y 2
(x + y)3 = x 3 + 3x 2 y + 3x y 2 + y 3
(x + y)4 = x 4 + 4x 3 y + 6x 2 y 3 + 4x 1 y 3 + y 4

De manera general, la fórmula 1.5 nos dice que una potencia de un binomio se expande
en una suma de términos que se inician con x n y van conteniendo potencias decrecien-
tes del primer sumando y crecientes del segundoi (x e y en nuestro ejemplo). Dichos
términos van afectados de coeficientes que resultan ser números combinatorios: de ahí

5
el nombre de coeficientes binomiales que les dimos en la sección anterior. Los desa-
rrollos anteriores (cuadrado de un binomio, cubo y cuarta potencia) nos permiten ver
cuáles son los valores de los primeros coeficientes binomiales.
Por definición µ ¶
n n(n − 1) · · · (n − r + 1)
=
r r!
¡ ¢
y, en general, esta es la fórmula que recomendamos emplear para el cálculo de nr . Es
válida para cualquier r entero y cualquier n complejo, aunque nosotros nos restringire-
mos al caso 0 ≤ r ≤ n, donde n será un número entero. De la definición de arriba y de
la fórmula P(n, r ) = n!/(n − r )! se obtiene inmediatamente la expresión
µ ¶
n n!
=
r r !(n − r )!

y de ésta la propiedad de simetría


µ ¶ µ ¶
n n
=
r n −r

que es muy patente en los desarrollos del cuadrado, cubo y cuarta potencia de un bi-
nomio: los coeficientes son simétricos. Empiezan valiendo 1, y luego crecen hasta un
máximo en el centro del desarrollo, para decrecer simétricamente hacia el último tér-
mino.
Para valores bajos del índice inferior tenemos
µ ¶ µ ¶
n n
=1 y =n
0 1

y por simetría tenemos


µ ¶ µ ¶
n n
=1 y =n
n n−1

Una forma divertida de calcular manualmente los coeficientes binomiales resulta


de colocarlos dispuestos como en la tabla 1.3 Este disposición se conoce como trián-
gulo de Pascal, y también como triángulo de Tartaglia. Naturalmente, el triángulo se
extiende indefinidamente hacia abajo.
La simetría de los números combinatorios de un índice superior fijo se observa
de inmediato en el triángulo, puesto que las filas son simétricas; se observan también
fácilmente los valores extremos para r = 0, 1 y r = n, n − 1.
El triángulo de Pascal tiene propiedades muy curiosas, reflejo de la virtual infini-
dad de propiedades de los números combinatorios. La más importante de todas es la
relación de recurrencia que nos permite calcular con sencillez los números de una fila
a partir de los de la inmediata superior. En efecto: si nos fijamos bien, comprobaremos
que cada número del triángulo es la suma del que está justa encima, y el que está a la
izquierda de éste último. Por ejemplo, 120 (en la fila n = 10) es suma de 84 y 36 (justo
encima y a la izquierda). En símbolos:
µ ¶ µ ¶ µ ¶
n n−1 n−1
= + (1.6)
k k k−1

6
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
n n n n n n n n n n n
n
0 1 2 3 4 5 6 7 8 9 10
0 1
1 1 1
2 1 2 1
3 1 3 3 1
4 1 4 6 4 1
5 1 5 10 10 5 1
6 1 6 15 20 15 6 1
7 1 7 21 35 35 21 7 1
8 1 8 28 56 70 56 28 8 1
9 1 9 36 84 126 126 84 36 9 1
10 1 10 45 120 210 252 210 120 45 10 1

Cuadro 1.2: Triángulo de Pascal

Naturalmente, la mera observación de que una propiedad se cumple en la región


del triángulo que hemos escrito no constituye una demostración. La recurrencia 1.6 se
prueba de la forma siguiente:
µ ¶
n n(n − 1) · · · (n − k + 1)
=
k k!
(n − k + k)(n − 1) · · · (n − k + 1)
=
k(k − 1)!
n − k (n − 1) · · · (n − k + 1) k (n − 1) · · · (n − k + 1)
= · + ·
k (k − 1)! k (k − 1)!
(n − 1) · · · (n − k + 1) · (n − k) (n − 1) · · · (n − k + 1)
= +·
k(k − 1)! (k − 1)!
µ ¶ µ ¶
n−1 n−1
= +
k k−1
En el curso de esta demostración nos hemos ¡ ¢visto obligados a introducir o extraer
un factor k, n − k, n en el coeficiente binomial nk . Estas operaciones son de suficiente
importancia como para consignarlas aparte:
µ ¶ µ ¶ µ ¶ µ ¶
n n n−1 n−k+1 n n n−1
= · = · = ·
k k k−1 k k−1 n−k k
La fórmula del binomio de Newton nos permite evaluar algunas sumas interesan-
tes de coeficiente binomiales. Por ejemplo, poniendo x = y = 1 en la fórmula 1.5
obtenemos que µ ¶ µ ¶ µ ¶ µ ¶
n n n n
2n = + + + ··· + (1.7)
0 1 2 n
Es decir: la suma de los números que figuran en una fila del triángulo de Pascal es una
potencia de dos. Si, en su lugar, ponemos x = 1, y = −1, obtenemos otro resultado
interesante: µ ¶ µ ¶ µ ¶ µ ¶
n n n n n
0= − + − · · · + (−1)
0 1 2 n

7
o, si lo queremos poner de otra manera
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
n n n n n n
+ + + ··· = + + + ...
0 2 4 1 3 5
es decir, en una fila del triángulo de Pascal, los coeficientes de índice inferior par suman
lo mismo que los de índice inferior impar. De lo que podemos deducir, a partir de la
fórmula 1.7, que
X µn ¶ X µn ¶
2n−1 = =
k k
k impar k par

Los coeficientes binomiales satisfacen identidades sin fin, y las que acabamos de
ver son solamente algunas de ellas. Podrían llenarse páginas y páginas de identida-
des interesantes en que intervienen. Sin embargo, nuestro interés fundamental no es
la manipulación de estos coeficientes, sino el cálculo de combinaciones, de forma que
lo dejaremos en este punto. Solamente citaremos, para cerrar este apartado, algunas
propiedades interesantes que pueden demostrarse por inducción o mediante un uso in-
genioso de la fórmula del binomio:
µ ¶µ ¶ µ ¶µ ¶ µ ¶µ ¶ µ ¶µ ¶
n m n m n m n m
+ + ... + +
k 0 k−1 1 1 k−1 0 k
µ ¶
n+m
= (Convolución de Vandermonde)
k
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
n+0 n+1 n+2 n +r n +r +1
+ + + =
0 1 2 r r
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
n+0 n+1 n+2 n +r n +r +1
+ + + =
n n n n r

1.4. Muestras con reemplazo


Existen algunos problemas que no pueden resolverse directamente con las fórmulas
de la sección 1.2. Aparecen cuando las muestras que construimos permiten que un
elemento del conjunto que muestreamos sea seleccionado varias veces. A dicho tipo
de muestras se la denomina genéricamente muestras con reemplazo. Dos ejemplos
aclararán este tipo de construcción.
Ejemplo 2. ¿Cuántas palabras de seis letras podemos formar con el alfabeto español
(26 letras)
En este caso, nuestra muestra es ordenada (puesto que la palabra pelota no es
la misma que la palabra paleto), pero no es una permutación ordinaria, puesto que
puedo construir palabras como papada en que la letra a es seleccionada tres veces.
Sin embargo, es fácil calcular el número de posibilidades por el principio del producto.
Cada una de las posiciones de la palabra puede ser escogida independientemente de las
demás, y de 26 maneras. Por lo tanto, el número total de resultado posibles es

26 · 26 · 26 · 26 · 26 · 26 = 266

Este problema es un ejemplo de r -permutaciones con reemplazo de un conjunto de


n elementos, donde n = 26 y r = 6. Una tal r -permutación es una secuencia ordenada

8
de r elementos seleccionados a partir de un conjunto de n dados, teniendo en cuenta
ahora que un elemento puede utilizarse varias veces. El número de muestras de este
tipo se calcula de forma muy simple
Teorema 8. El número de r -permutaciones con reemplazo de un conjunto de n ele-
mentos es
PR(n, r ) = n r
Demostración. Es una consecuencia directa de la regla del producto y de que cada
miembro de la permutación puede escogerse de n formas distintas.
Ejemplo 3. En una urna tenemos una cantidad virtualmente ilimitada de bolas rojas,
blancas y negras. Si extraigo cinco bolas, ¿cuántos resultados son posibles?
Este problema es bastante más complicado. La “cantidad ilimitada” de bolas es un
dato que nos permite suponer que hay más de cinco bolas de cada color, de forma que
la extracción de cinco bolas rojas, o cinco negras, o cinco blancas, sea un resultado
posible. ¿Cuántas muestras distintas pueden salir?
Los métodos vistos hasta ahora no parecen aplicables de forma directa para encon-
trar esto. Vamos a enumerar todas las posibilidades:
BBBBB BBBBN BBBBR
BBBN N BBBN R BBBRR
BBN N N BBN N R BBN RR
BBRRR BN N N N BN N N R
BN N RR BN RRR BRRRR
NNNNN NNNNR N N N RR
N N RRR N RRRR RRRRR
Está claro que el resultado N N N R R es el mismo que N R N R N ; no nos importa
el orden en que las bolas salen, sino cuántas de cada color. Este tipo de muestras, en
que no nos importa el orden de los objetos escogidos y éstos se extraen de un con-
junto dado, pudiendo escogerse el mismo elemento repetidas veces, se denominan r -
combinaciones con reemplazo del conjunto de n elementos dado. En este ejemplo,
n = 3 y r = 5.
Una de estas combinaciones con reemplazo queda determinada por el número de
bolas rojas x R , bolas blancas x B , y bolas negras, x N , que constituyen la muestra. La
restricción es que las tres cantidades han de sumar cinco:
xR + xB + xN = 5 (1.8)
El número de muestras es el número de soluciones de la ecuación1.8 en números
enteros no negativos. Esto nos conduce aún a otra formulación del problema. Podría-
mos considerar que tenemos tres amigos, Rojo, Blanco y Negro, que se reparten entre
sí cinco monedas. ¿Cuántos repartos posibles hay?
En cualquier caso, podemos formular estos tres problemas como uno de combina-
ciones (muestras desordenadas), si permitimos que un objeto introducido en la muestra
pueda volver a seleccionarse. En efecto:
bolas Podemos imaginar que el saco contiene solamente tres bolas: una roja, una negra
y una blanca. Extraemos una bola, anotamos su color y la devolvemos al saco.
Volvemos a realizar la misma operación hasta completar cinco extracciones con
reemplazo. El resultado, prescindiendo del orden, es una 5-combinación de tres
elementos en que se permite el reemplazo de los objetos a muestrear

9
reparto de monedas Imaginemos que hay que repartir cinco monedas (idénticas) en-
tre los tres amigos Rojo, Blanco y Negro. Cogemos una moneda y escogemos
a cuál de los tres individuos se la vamos a dar, para lo cual podemos recurrir al
consabido bombo con tres bolas. Cada moneda implica escoger a uno de los tres
amigos, pudiendo resultar cualquiera de ellos elegido más de una vez.

ecuacion Está claro que el problema es idéntico a repartir cinco unidades entre las tres
variables.

Aunque no sepamos cómo calcular cuántas soluciones totales existen (hemos lle-
gado a las 21 enumeradas arriba por pura fuerza bruta), está claro que la estructura de
los tres problemas es idéntica. ¿Cómo encontrar el número de posibilidades en el caso
más general?
La respuesta nos la da el siguiente

Teorema 9. El número de r -combinaciones con reemplazo que puede obtenerse a


partir de un conjunto de n objetos es
µ ¶ µ ¶
n +r −1 n +r −1
CR(n, r ) = =
r n−1

Demostración. Vamos a demostrar que el número de maneras de repartir r bolas idén-


ticas entre n jugadores viene dado por la fórmula indicada. Para ello, consideremos
que las bolas están inicialmente apoyadas de la forma consecutiva que vemos en la
figura 1.8, caso a). Supongamos que otorgo x 1 bolas al primer jugador: separo las x 1
primeras bolas de las restantes insertando una bola negra que me permita llevar la
cuenta, como puede verse en el apartado b) de la misma figura. De las siguientes bolas,
decido dar x 2 al segundo jugador, y marco el final de la parte que le corresponde por la
inserción de otra bola negra (apartado c), donde podemos ver que las dos bolas negras
contiguas representan que x 2 = 0). El proceso continúa insertando una bola negra cada
vez que quiero separar las bolas ya repartidas de las que restan, como podemos ver
en los apartados d) y e). Finalmente, al repartir las x n−1 bolas del penúltimo jugador
e insertar la consabida bola negra, determinamos ya la parte que le queda al jugador
n-simo, como se ve en el aprtado f) de la figura 1.8.
Con este proceso, obtenemos una fila de r + (n − 1) bolas: las r originales, y
las n − 1 negras que hemos utilizado para separar las n partes. Es evidente que cada
disposición de estas bolas determina un reparto posible, y recíprocamente. Por lo tanto,
el número de soluciones al problema del reparto es idéntico al número de maneras que
tenemos de escoger r posiciones para las r bolas blancas entre las n + r − 1 posiciones
que finalmente ocupan las bolas. En conclusión
µ ¶ µ ¶
n +r −1 n +r −1
C(n, r ) = =
r n−1

como se quería demostrar.

En el ejemplo de las bolas,


µ ¶ µ ¶
3+5−1 7
CR(3, 5) = = = 21
5 2

y parece que todo encaja.

10
0
Q1
Q2
Q3
Q4
Q5
Abad
Abascal
Álvarez
Bastardo
Cobas
Cazorla
Dehesa
González
Guzmán
Herrero
Lebrel
Zapatero
Zorrilla
A
B
C
D
Ea) 1 2 3 4 5 6 7 8 r
F
G
H
Ib) 1 2 3 4 5 6 7 r −1 r
J x1
3
+
∗c) 1 2 3 4 5 6 r −2 r −1 r
5 x1 x2
+
6
12d) 1 2 3 4 5 r −3 r −2 r −1 r
χ (K 5 ) = 5
x1 x2 x3
χ (K 3,3 ) = 2
χ (C7 ) = 3
χ (esto) = 4
χ (esto otro) = 4
x1 ≥ 6
x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8e) 1 2 3 4 5 r −3 r −2 r −1 r
x1 < 6, x 2 < 8 x1 x2 x3 xn−2
A2
A1
A − A1 − A2f) 1 2 3 4 5 r −3 r −2 r −1 r
A12 x1 x2 x3 xn−2 xn−1 xn

Figura 1.1: Cómo repartir r bolas entre n jugadores

11
1.5. Permutaciones con elementos identificados
Consideremos la palabra “ABRACADABRA”. Si reordenamos sus letras, podemos
obtener diversos conjuros, algunos de ellos no muy pronunciables:
AAARCRAADBB
AAARBDBCRAA
RDAARBABAAC
RDARABAACBA
¿Cuántos de ellos son posibles?
Si las letras de la palabra original fuesen todas diferentes, la respuesta sería muy
sencilla: P(11) = 11!. Pero al existir letras repetidas (cinco A’s, dos B’s, dos R’s, una
C y una D), la respuesta resulta ser mucho menor.
En efecto, si numeramos las letras originales con subíndices
A1 B2 R3 A4 C5 A6 D7 A8 B9 R10 A11
podemos observar que, de las 11! permutaciones existentes entre estos 11 símbolos
distintos, algunas resultan en idéntica palabra al identificar letras iguales:
A11 B2 R10 A8 C5 A4 D7 A6 B9 R3 A1 , A1 B9 R3 A4 C5 A8 D7 A6 B2 R10 A11
y muchas otras que siguen produciendo la palabra “ABRACADABRA”. ¿Cuántas en
total? Podemos permutar entre sí, sin que la palabra cambie su identidad, todas las
letras idénticas. Por lo tanto, en este ejemplo, “ABRACADABRA” puede escribirse
de 5!2!2!1!1! = 480 maneras distintas. Cualquier otra permutación diferente puede
escribirse también de 480 maneras que difieren solamente en la reordenación de letras
indistinguibles.
Generalizando estas observaciones obtenemos el siguiente
Teorema 10. El número de permutaciones de n objetos, de los cuales existen k clases
de objetos diferentes entre sí, cada una con n i miembros iguales, es
µ ¶
n n
=
n1, n2, . . . , nk n1! n2! . . . nk !
Al número anterior se lo denomina coeficiente multinomial de n sobre n 1 , n 2 , . . . , n k .
Además del cálculo del número de permutaciones de un multiconjunto, el coe-
ficiente multinomial aparece en otro problema combinatorio clásico: el reparto de n
objetos distinguibles en k clases distintas, con un número de n i objetos asignado a la
clase i-ésima.
Ejemplo 4. ¿De cuántas formas podemos repartir diez libros diferentes entre Alicia,
Bernardo y Carlos, si a Alicia hay que darle tres libros, a Bernardo cinco y a Carlos
dos?
Empezamos
¡ ¢ por Alicia: tenemos que escoger para ella tres libros, y eso puede ha-
cerse de 103 maneras. Después de esto quedan siete libros, de los que habrá que escoger
¡¢
cinco para Bernardo. Tendremos para ello 75 posibilidades. Finalmente, quedarán dos
¡¢
libros, que son los que habrá que dar a Carlos, cosa que podemos hacer de 22 maneras,
o sea, de una sola forma. En total
µ ¶µ ¶µ ¶ µ ¶
10 7 2 10! 7! 2! 10! 10
= = =
3 5 2 3! 7! 5! 2! 2! 0! 3! 7! 2! 3, 7, 2

12
1.6. Generación ordenada de muestras
En algunas ocasiones resulta conveniente enumerar todas las combinaciones o per-
mutaciones que representan la solución a un problema, y no solamente calcular su
número. Sería bueno disponer de un método que permitiese realizar esta tarea de for-
ma ordenada y sistemática. Así, evitaríamos cometer errores u omisiones. Además,
un procedimiento sistemático puede programarse, relegando al computador la tarea de
producir listas de combinaciones, que es siempre tediosa.
En esta sección estudiaremos dos algoritmos que permiten producir una lista or-
denada de todas las n-permutaciones y las r -combinaciones del conjunto de enteros
X n = {1, 2, 3, . . . , n}. En ambos casos, las muestras se representarán como “palabras”
formadas por los números del conjunto X n . El orden en que vamos a producirlas es su-
ficientemente importante como para merecer una denominación especial: se denomina
orden lexicográfico.
La mejor manera de entender el orden lexicográfico es mediante el ejemplo del dic-
cionario, del cual toma su nombre. Cuando buscamos una palabra en orden alfabético,
entendemos que .abonado"va después que .abeto", puesto que la primera discrepancia
entre ambas palabra ocurre en la tercera posición: en .abonado"hay una letra .o", y en
.abetoüna "e"; de forma que .abeto"debe ir antes, puesto que la "e"precede a la .o"en el
orden alfabético subyacente.
Si no hay ninguna discrepancia, y las palabras difieren simplemente en que una es
más larga que la otra, como entre "mano "manotazo", se clasifica como posterior la
2

palabra más larga. La ordenación del tipo string en la mayoría de los lenguajes de
programación sigue la misma regla.
A la luz de estos ejemplos, podemos definir el orden lexicográfico de de forma
general como sigue.
Definición 3. Sea (X, <) un conjunto ordenado, que denominaremos alfabeto. Sea X ∗
el conjunto formado por todas las palabras construíbles con símbolos de X .
Definimos entre las palabras de X ∗ una relación de orden que denominamos orden
lexicográfico, diciendo que a < b si podemos escribir a = a1 a2 . . . ak , b = b1 b2 . . . bl ,
y se da uno de estos casos:
o bien a es un prefijo de b, es decir,
|a| ≤ |b|
ai = bi para i = 1 . . . |a|
o bien
ai = bi para i = 1 . . . p − 1 < k, l
ap < bp
es decir, la primera discrepancia entre las dos palabras ocurre en la posición
p-ésima, y a tiene en esa posición un carácter anterior al que b posee (anterior
en el orden definido en el alfabeto X ).
La definición puede parecer confusa, pero es más fácil de entender que de enunciar.
Por ejemplo, en el orden habitual de los números enteros, 56874 <569, puesto que las
dos palabras coinciden en las primeras dos posiciones, y la primera discrepancia surge
en la tercera posición; como 56874 tiene allí un 8, y 569 tiene un 9, la primera palabra
va antes en orden lexicográfico. En cambio, 568<56874. Y puede verse fácilmente que
1355655 < 1357 < 13571 < 1423 < 6 < 64 < 9876 < 991111 < 999

13
Consideremos ahora el conjunto X n = {1, 2, . . . , n} con el orden natural. Vamos a
estudiar algoritmos que permitan generar, en el primer caso, las n-permutaciones de X n
en orden lexicográfico, y en el segundo, las r -combinaciones de X n .

1.6.1. Permutaciones en orden lexicográfico


Analicemos primero las 4! = 24 permutaciones del conjunto X 4 . Son las siguientes
(leídas de arriba abajo y de derecha a izquierda):

1234 2134 3124 4123


1243 2143 3142 4132
1324 2314 3214 4213
1342 2341 3241 4231
1423 2413 3412 4312
1432 2431 3421 4321

¿Cómo podemos generar este listado? Es obvio que la primera permutación en orden
lexicográfico es 123 . . . n, y la última n . . . 321; de forma que será suficiente disponer
de un procedimiento que, dada cualquier permutación,

983126754 (1.9)

nos permita construir de forma sencilla la siguiente:

983127456 (1.10)

Ese procedimiento resulta ser el que se describe a continuación.

1. Localizamos el sufijo más largo que esté ordenado decrecientemente. En nuestro


ejemplo de la permutación 1.9, se trataría de 754. El número que antecede a
dicho prefijo se denominará el pivot. En nuestro ejemplo es el 6.

2. Comparamos el pivot con los números del sufijo que le siguen. De los que exce-
den al pivot, escogemos el menor. En nuestro ejemplo sería el 7.

3. Colocamos dicho número reemplazando al pivot. En nuestro ejemplo, tendría-


mos 983127xxx

4. Completamos la permutación con los números restantes en orden creciente. En


el ejemplo, añadiríamos 456 donde antes tuvimos “xxx”. Lo que conduce al re-
sultado de 1.10.

Puede comprobarse que este procedimiento es similar a la forma en que incremen-


tamos números en notación posicional decimal. Por ejemplo, cuando incrementamos
el número 76799, pasamos al 76800, puesto que al aumentar los dígitos finales (que
ya no pueden incrementarse más), la modificación repercute en el primer dígito por la
derecha que puede admitirla (en este ejemplo, el 7). En las permutaciones, el papel de
la fila de 9’s final lo desempeña el sufijo seleccionado en el primer paso; el pivot es el
dígito que se altera efectivamente; y el reemplazo de los nueves por ceros se convierte
en el reemplazo de un sufijo descendente en uno ascendente, que están en los extremos
del orden lexicográfico.

14
1.6.2. Combinaciones en orden lexicográfico
La generación de combinaciones en orden lexicográfico es algo más sencilla. Basta
analizar un ejemplo para inducir de él la técnica general. Consideremos las 3-permuta-
ciones de un conjunto de cinco elementos X 5 , enumeradas, una vez más, por columnas:

123 145
124 234
125 235
134 245
135 345

Puede verse que el paso de una combinación a la siguiente se obtiene incrementando el


último miembro. Si ello no fuera posible, por haber alcanzado éste un valor máximo,
trasladamos nuestro intento al dígito precedente; y seguimos así hasta encontrar un
dígito susceptible de ser incrementado. Hecho esto, completamos la combinación con
los números inmediatamente siguientes. En suma, el procedimiento para generar la
siguiente r -permutación de n elementos es

1. Localizamos el sufijo más largo que termine en n que esté formado por núme-
ros consecutivos (obsérvese que podría ser el sufijo vacío). El elemento que lo
precede se denominará pivot.

2. Incrementamos el pivot en una unidad

3. Completamos la r -combinación con los números consecutivos al pivot.

Así, 12789 (una 5-combinación de los números del 1 al 9) tiene por sufijo detectado
en el primer paso a 789; el pivot será 2. Incrementamos dicho número y completamos
con los números que siguen al 3 para obtener 13456 como siguiente 5-combinación
en orden lexicográfico. Ahora, el sufijo que seleccionaríamos es vacío (puesto que el
número no acaba en n = 9); por lo tanto, el pivot es 6, y basta incrementarlo para
obtener la siguiente combinación en orden lexicográfico, 13457. Y así sucesivamente:

12789 13458
13456 13459
13456 13467
13457 13468
13458 13469

hasta llegar a 56789, que sería la última.

1.7. El principio de inclusión-exclusión


Existen situaciones en las que el principio de la suma no es aplicable, porque los
conjuntos involucrados no son disjuntos. En casos así, resulta útil el siguiente teorema,
que permite calcular el cardinal de la unión de una familia de conjuntos finitos aunque
no sean disjuntos dos a dos.

Teorema 11. (Principio de inclusión-exclusión) Si A 1 , A2 , . . . , An es una colección

15
de conjuntos finitos, se verifica que
X X
|A1 ∪ A2 ∪ · · · ∪ An | = |Ai | − |Ai ∩ A j |
1≤i≤n 1≤i< j≤n
X
+ |Ai ∩ A j ∩ Ak | − · · · + (−1)n+1 |A1 ∩ A2 ∩ · · · ∩ An | (1.11)
1≤i< j<k≤n

Demostración. Supongamos que un cierto elemento a ∈ A 1 ∪ A2 ∪ · · · ∪ An pertenece


exactamente a r de los n conjuntos Ai . Es fácil ver que dicho elemento contribuirá
r unidades al primer¡ sumando
¢ de la expresión 1.11. Del mismo modo, al segundo
sumando contribuirá r2 unidades, puesto que a se halla presente en todos los A i ∩ A j
que podemos formar escogiendo i, j entre los r índices de los A i en que a se halla
presente. Concluimos razonando análogamente para los sumandos siguientes que, si
a ∈ A1 ∪ A2 ∪ · · · ∪ An pertenece a exactamente r de los conjuntos A i , su contribución
a la suma total de 1.11 es
µ ¶ µ ¶ µ ¶ µ ¶
r r r r
− + − · · · + (−1)r
1 2 3 r
Del teorema del binomio deducimos que
µ ¶ µ ¶ µ ¶ µ ¶ µ ¶
r r r r r r
− + − + · · · + (−1) = (1 − 1)r = 0
0 1 2 3 r
por lo que la contribución indicada es igual a la unidad. Entonces, cada elemento de
la unión contribuye en una unidad a la suma de arriba, y entonces su valor será |A 1 ∪
A2 ∪ · · · ∪ An |.
El principio de inclusión-exclusión recibe este nombre del método que usa para
contabilizar elementos: al sumar |A 1 |+|A2 |+· · ·+|An |, los miembros de los conjuntos
de la forma Ai ∩ A j están siendo contabilizados por duplicado. Por lo tanto, tenemos
que descontarlos de esa suma, lo que explica la aparición del sustraendo −|A 1 ∩ A2 | −
· · · − |An−1 ∩ An |, que involucra todos los pares de conjuntos aludidos. Ahora bien,
al hacer esto estamos (indebidamente) sustrayendo una vez más todos los miembros
de intersecciones Ai ∩ A j ∩ Ak , por lo que volvemos a contabilizarlos añadiendo los
sumandos |A1 ∩ A2 ∩ A3 | + · · · + |An−2 + An−1 + An |. Y se prosigue así, sumando y
restando hasta llegar al último termino.
Ejemplo 5. ¿Cuántas permutaciones del conjunto X = {1, 2, 3, . . . , n} mueven todos
los elementos del conjunto a una posición diferente de la original?
Podemos resolver este problema del modo siguiente. Consideremos el conjunto A
formado por todas las permutaciones de los n elementos: claramente, |A| = n!. De
éstas, consideremos la clase de las permutaciones que dejan al elemento 1 en primera
posición; llamemos a esta clase A 1 , y, análogamente, definamos A k como la clase de
las permutaciones en que el número k queda fijo, ocupando la k-ésima posición. Como
cada permutación de A1 involucra reordenar solamente los n − 1 elementos restantes,
tenemos que |A1 | = (n − 1)!, y análogamente para cada A k .
Por otra parte, el conjunto Ai ∩ A j está formado por permutaciones en que escoge-
mos la posición de i y j, de manera que tenemos (n − 2)! permutaciones posibles. En
general
|Ai1 ∩ Ai2 ∩ · · · ∩ Aik | = (n − k)!

16
es decir, cada conjunto de permutaciones que fija al menos k elementos contiene (n −
k)! permutaciones posibles.
Aplicando entonces la fórmula 1.11:

|A1 ∪ A2 ∪ · · · ∪ An | =
µ ¶ µ ¶ µ ¶
n n n+1 n
n(n − 1)! − (n − 2)! + (n − 3)! + · · · + (−1) (n − n)!
2 3 n
¡ ¢
puesto que el número de sumandos de cada término de (1.11) es nk . Ahora, la suma
anterior se simplifica considerablemente expandiendo los coeficientes binomiales por
medio de su forma factorial:
n! n! n!
(n − 1)! − (n − 2)! + (n − 3)!−
1!(n − 1)! 2!(n − 2)! 3!(n − 3)!
n! n!
− (n − 4)! + · · · + (−1)n+1 0! =
4!(n − 4)! n!0!
n! n! n! n!
= − + − · · · + (−1)n+1
1! 2! 3! n!
Esta es la expresión del número de permutaciones que fijan algún elemento. Como
queremos calcular exactamente lo contrario, obtenemos
µ ¶
1 1 1 1
|A − (A1 ∪ A2 ∪ · · · ∪ An )| = n! − + − · · · + (−1)n (1.12)
2! 3! 4! n!
Lo sorprendente de este resultado es que el factor entre paréntesis es, con una aproxi-
mación muy elevada, igual a 1/e = 0,3678, siendo e la base de los logaritmos neperia-
nos. La aproximación es tan buena que podemos escribir
n!
Dn ≈
e
siendo la fórmula exacta si redondeamos el cociente al entero más próximo. Por ejem-
plo, para n = 8, obtenemos 8!/e = 14832,899, siendo Dn = 14833. La letra D pro-
viene del término derangements, que es como se denomina en la literatura anglosajona
a este tipo de permutaciones que no dejan fijo ningún elemento.
Ejemplo 6. Encontrar el número de soluciones enteras no negativas de la ecuación

x1 + x 2 + x 3 = 12 (1.13)

sometidas a la restricción x 1 < 6, x 2 < 4.


Consideremos los siguientes conjuntos:

A = {(x 1 , x 2 , x 3 ) | x1 + x 2 + x 3 = 12, xi ≥ 0} (1.14)


A1 = {(x 1 , x 2 , x 3 ) ∈ A | x 1 ≥ 6} (1.15)
A2 = {(x 1 , x 2 , x 3 ) ∈ A | x 2 ≥ 4} (1.16)

de donde

A12 = A1 ∩ A2 = {(x 1 , x 2 , x 3 ) ∈ A | x 1 ≥ 6 y x 2 ≥ 4} (1.17)

17
F
G
H
I
J
3
+

5
+
6 A
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2 A − A1 − A2
x1 < 6, x 2 < 8
χ (C7 ) = 3
χ (esto) = 4
χ (esto otro) = 4 A1 A2
x1 ≥ 6 x2 ≥ 8
A12

x1 ≥ 6, x 2 ≥ 8

Figura 1.2: Representación esquemática del ejemplo 6

Podemos representar esquemáticamente la situación indicada por medio de la figu-


ra 1.2. Las soluciones que se nos exige contabilizar son las que no se encuentran ni en
A1 ni en A2 ; es decir, tenemos que calcular el cardinal |A− A 1 − A2 | = |A|−|A1 ∪ A2 |.
El último término se evalúa por medio del principio de inclusión-exclusión:

|A1 ∪ A2 | = |A1 | + |A2 | − |A1 ∩ A2 |

Como
µ ¶ µ ¶
14 14
|A| = CR(3, 12) = = = 91 (1.18)
12 2
µ ¶ µ ¶
8 8
|A1 | = CR(3, 12 − 6) = = = 28 (1.19)
6 2
µ ¶ µ ¶
10 10
|A2 | = CR(3, 12 − 4) = = = 45 (1.20)
8 2
µ ¶
4
|A12 | = CR(3, 12 − 6 − 4) = =6 (1.21)
2

tenemos finalmente

|A − A1 − A2 | = |A| − |A1 | − |A2 | + |A1 ∩ A2 | = 91 − 28 − 45 + 6 = 24.

18
Capítulo 2

Grafos

2.1. Conjuntos y relaciones


Consideraremos un conjunto como una colección cualquiera de objetos. Un con-
junto queda definido por los objetos que a él pertenecen; dichos objetos son los ele-
mentos o miembros del mismo. Si x es un miembro del conjunto A, escribimos x ∈ A
y decimos que x pertenece a A; en caso contrario, escribimos x 6∈ A y decimos, aná-
logamente, que x no pertenece a A.
Si cada elemento x de un conjunto A es también miembro de otro conjunto B,
decimos que A es un subconjunto de B, o que A está incluído en B, y escribimos
A ⊂ B. Dos conjuntos A y B son iguales si y solamente si A ⊂ B y B ⊂ A; es decir,
si constan exactamente de los mismos elementos. En ese caso, escribimos A = B.
A veces se emplea también la notación A ⊆ B para la relación de inclusión, y el
símbolo ⊂ se reserva para la inclusión propia, que ocurre cuando A ⊆ B pero A 6= B.
En general, la relación de inclusión propia aparece con menos frecuencia, y usaremos
el símbolo más sencillo para la relación más frecuente, de modo que “⊂” significará
siempre para nosotros “está incluido en o es igual a”.
En lo sucesivo nos ocuparemos predominantemente de conjuntos finitos, que pue-
den denotarse convenientemente enumerando todos sus elementos. El número de ele-
mentos de un conjunto finito A se denomina también a veces su cardinal, y se escri-
be |A|.

2.1.1. Producto cartesiano


El producto cartesiano de dos conjuntos A y B se define como el conjunto formado
por todos los pares ordenados posibles cuyo primer elemento es un miembro de A y
cuyo segundo elemento es un miembro de B. En notación conjuntista

A × B = {(a, b) | a ∈ A, b ∈ B}

Si los conjuntos involucrados son finitos, es evidente que |A × B| = |A| · |B|.


Por ejemplo, si A es el conjunto de todos los hombres y B el de todas las mujeres,
A× B es el conjunto de todas las parejas (heterosexuales) posibles que pueden formarse
entre ellos. En particular, si no existiesen hombres, A × B sería vacío, y todo bastante
aburrido.

19
Siguiendo con el ejemplo, el producto cartesiano A × B contiene todas las parejas
concebibles, no necesariamente las que existen en la realidad. Consideremos solamente
aquellas parejas hombre-mujer que constituyan un matrimonio. El conjunto R de pares
hombre-mujer (h, m) donde h es un hombre, m es una mujer y h está casado con m
es un subconjunto de A × B. Además, la inclusión R ⊂ A × B es casi seguramente
propia, excepto en una sociedad polígama y extremadamente promiscua. En cualquier
caso, R contiene toda la información que necesitamos sobre el matrimonio en general:
nos dice exactamente quién está casado con quién.

2.1.2. Relaciones
Definimos una relación entre dos conjuntos A y B como un subconjunto R del
producto cartesiano A × B; en símbolos, R ⊂ A × B. El hecho de que (a, b) ∈ R se
suele expresar diciendo que a está relacionado con b, y, de forma abreviada, se suele
escribir como a R b. La negación de a R b se escribe a 6 R b
Una relación binaria en un conjunto A se define como un subconjunto R del pro-
ducto A × A. El conjunto en el que se establece R suele denominarse dominio de la
relación.
Algunos ejemplos de relaciones binarias son los siguientes:

La relación de igualdad = entre números reales.

La relación “ser hermano de” en el conjunto de los seres humanos.

La relación de orden ≤ entre números reales.

La relación “ser progenitor de” en el conjunto de los seres humanos. Esta relación
contendría todas las parejas ( p, h) de personas cuyo segundo elemento fuese hijo
del primero.

La relación “ser hijo de” en el conjunto de los seres humanos. Esta relación con-
tendría todas las parejas (h, p) de personas cuyo segundo elemento fuese padre
del primero. Es evidente que esta relación se obtiene de la anterior invirtiendo el
orden de todos los pares: se dice que son inversas.

La relación “ser divisor de” entre números naturales, que suele denotarse por el
símbolo |. Por ejemplo, 6 | 24, pero 6 6 | 31. La relación inversa de ésta también
tiene un nombre común: “ser múltiplo de”.

2.1.3. Propiedades de las relaciones


Hay cuatro propiedades de una relación que nos van a interesar especialmente: que
sea reflexiva, simétrica, transitiva o antisimétrica. Discutiremos primero el significado
de las definiciones y daremos al final un resumen formal de las mismas.
Decimos que una relación R es reflexiva si a R a para todo miembro a del dominio
de R. Por ejemplo, la igualdad = y el orden ≤ son relaciones reflexivas. También lo es
la relación “vivir en el mismo domicilio”.
Una relación R es simétrica si para todo par de elementos a, b del dominio de R
se verifica que, si a R b, entonces b R a. Por ejemplo, “ser hermano de” es una
relación simétrica (es muy difícil ser hermano de alguien sin que éste sea hermano de
uno), lo mismo que “estar casado con”. También la igualdad = entre números reales
es una relación simétrica; sin embargo, el orden ≤ no lo es. De modo más interesante,

20
“x ama a y” (comoquiera que se defina) no es una relación simétrica: un amor no tiene
por qué ser correspondido (aunque puede serlo). Basta con que haya un solo amor no
correspondido para que esta relación deje de ser simétrica.
Tampoco es simétrica la paternidad entre seres humanos: x es padre de y no implica
que y sea padre de x (de hecho, en general, lo impide). Notemos la diferencia entre la
paternidad y el amor: mientras que “x ama a y” no implica el recíproco, no lo impide (y
puede amar a x). En cambio, la paternidad difícilmente puede ser recíproca en ningún
caso: si x es padre de y, no es posible que y sea padre de x. Decimos que una relación R
es antisimétrica si, para cualquier par de miembros a, b del dominio, a R b y b R a se
dan simultáneamente sólo cuando a = b.
Por último, otra propiedad muy importante es la transitividad. Decimos que R
es transitiva si para cualquier terna a, b, c de miembros del dominio, las relaciones
a R b y b R c obligan necesariamente a que a R c. Por ejemplo, si R es la relación
de amistad entre seres humanos, es bastante evidente que no es transitiva: a puede ser
amigo de b y b puede serlo de c, mientras que a puede considerar a c muy poco reco-
mendable. Si R fuese transitiva, sería cierto el refrán “los amigos de mis amigos son
mis amigos”.
Sí es transitiva, en cambio, la relación “ser antepasado de”: los antepasados de mis
antepasados son mis antepasados. En cambio, la paternidad no lo es: si x es el padre de
y e y es el padre de z, esto no obliga en absoluto a que x sea el padre de z.
Resumiendo, si R es una relación binaria en el conjunto A, decimos que R es

reflexiva si a R a, para todo a ∈ A

simétrica si a R b → b R a, para todos a, b ∈ A

transitiva si a R b y b R c → a R c, para todos a, b, c ∈ A

antisimétrica si a R b y b R a → a = b, para todos a, b ∈ A

Una relación R se dice que es una relación de equivalencia si es reflexiva, simétrica


y transitiva. El ejemplo por excelencia es la igualdad, pero existen otros ejemplos sig-
nificativos. Por ejemplo, la relación “ser hermano de” es una relación de equivalencia,
si admitimos el hecho de que uno es hermano de sí mismo.
Dado un elemento a ∈ A del dominio de una relación de equivalencia R, se define
su clase de equivalencia como el conjunto [a] = {x ∈ A | a R x}, es decir, el
conjunto de los elementos relacionados con a en virtud de R. En el ejemplo anterior,
R = “ser hermano de”, la clase de equivalencia de un individuo es el conjunto de todos
sus hermanos (incluyéndolo a él mismo). Obsérvese que las clases de equivalencia de
esta relación son las progenies de cada familia, y toda la humanidad está dividida en
clases disjuntas de hermanos. Este hecho no es casual.
La propiedad más importante de las relaciones de equivalencia la proporciona el
siguiente

Teorema 12. Sea R una relación de equivalencia en un conjunto A. Las clases de


equivalencia de R forman una partición de A, es decir, A es la unión de dichas clases
de equivalencia, y dos clases de equivalencia son o iguales o disjuntas.

Demostración. Obviamente, cada elemento a ∈ A es miembro de una clase de equi-


valencia: la suya propia. Ello es así porque la relación es reflexiva, de modo que a R a
y, por tanto, a ∈ [a]. Se deduce que A ⊂ ∪a∈A [a], es decir, A es unión de clases de
equivalencia.

21
Por otro lado, sean [x] e [y] dos clases de equivalencia. Si no son disjuntas, existe
un elemento común a ∈ [x] ∩ [y]. Se deduce que

a R x y que a R y (pertenencia a [x] e [y])


x R aya R y (simetría)
x Ry (transitividad)

Por tanto, si z ∈ [x]

x Rzyx R y (definición de [x])


z Rxyx R y (simetría)
z R y, o sea, y R z (transitividad y simetría)
z ∈ [y] (definición de [y])

y se concluye que [x] ⊂ [y]. Se prueba del mismo modo que [y] ⊂ [x], y por tanto,
que [x] = [y].

Otro tipo de relación de especial interés es la relación de orden (parcial). Se llama


así a una relación que es reflexiva, antisimétrica y transitiva. Como ejemplos típicos
de relaciones de orden tenemos la relación ≤ entre números reales, o la relación de
divisibilidad entre números naturales (“ser divisor de”, denotada por |). Esta última es
relación de orden, puesto que

para todo entero a, se verifica que a|a (reflexividad)

para todo par de enteros a, b, se verifica que si a|b y b|a, entonces existen nú-
meros k y l con a = kb = kla y kl = 1, de forma que a = b (antisimetría)

para todo trío de enteros a, b, c, si se dan las relaciones a|b y b|c, existen ciertos
naturales k y l que cumplen c = kb = kla, de modo que a|c (transitividad)

La divisibilidad es un buen ejemplo de una relación de orden parcial. En un orden


parcial R no es preciso que una de las dos relaciones a R b o bien b R a se dé. Por
ejemplo, ni 7|69 ni 69|7. Se dice que los elementos en cuestión no son comparables.
Una relación de orden en la que para todo par de elementos a, b del dominio se verifica
que a R b o bien b R a (o ambas) se dice que es de orden total. La relación de orden
habitual entre números, ≤, es un ejemplo de orden total.
Una representación muy conveniente de las relaciones de orden en conjuntos finitos
es su diagrama de Hasse, que definiremos en la sección 2.3.

2.1.4. Clausura transitiva


Vimos en la sección 2.1.3 que la relación “ser ancestro de” es transitiva, pero la pa-
ternidad no lo es: el padre de mi padre no es mi padre (suele denominarse abuelo mío).
Sin embargo, existe una vinculación interesante entre la paternidad y la ancestralidad:
los antepasados se obtienen, por lo general, remontándose hacia atrás una o más veces
en la relación de paternidad (un ancestro mío es, o bien mi padre, o bien el padre de mi
padre, o el padre de mi padre de mi padre, etc.)
Del mismo modo, la relación “ser sucesor de” definida sobre el conjunto de los
enteros no es transitiva: 5 es el sucesor de 4, y 6 es el sucesor de 5, pero 6 no es sucesor
de 4. Como mucho, es mayor que cuatro, y esta relación de orden sí que es transitiva.

22
La relación transitiva que se obtiene por repetición a partir de otra aparece con
frencuencia, lo que motiva la siguiente definición.
Sea R una relación en un conjunto A. Definimos la clausura transitiva de R (a
veces denotada por R ∗ ) como la menor relación transitiva que contiene a R. Más ex-
plícitamente,

a) R ⊂ R ∗ ⊂ A × A (es decir, R ∗ es una relación binaria en A).

b) R ∗ es transitiva.

c) Si R ⊂ S ⊂ R ∗ ⊂ A × A y además S es transitiva, entonces S = R ∗ .

Esta definición es muy poco intuitiva, y generalmente utilizaremos esta otra: dire-
mos que a R ∗ b si existe una sucesión {ai } de elementos de A que verifica

a R a1 R a2 R a3 R · · · R a n R b

es decir, si a está relacionado con un elemento, que está relacionado con otro, que. . . y
así sucesivamente hasta llegar a b. Por ejemplo, la clausura transitiva de la relación de
paternidad es “ser antepasado de”.

2.2. Grafos
2.2.1. Grafo dirigido y no dirigido
Definición 4. Un grafo (específicamente, grafo simple no dirigido) es un par G =
(V, E) = (V (G), V (E)), donde V es un conjunto finito no vacío de elementos llama-
dos vértices y E es un conjunto de pares desordenados de elementos distintos de V
llamados aristas. Es decir, una arista e ∈ E tiene la forma {u, v}, donde u, v ∈ V y
u 6= v.

La terminología en teoría de grafos varía muchísimo: prácticamente no hay dos


textos que adopten la misma. En paticular, los vértices de un grafo también reciben a
veces el nombre de nodos, y las aristas arcos, ejes o líneas.
Obsérvese que, en un grafo no dirigido conforme con esta definición, los bucles
están excluídos. Por convenio, en grafos no dirigidos designaremos las aristas con la
notación (u, v) que usamos para los pares ordenados de vértices; se sobreentiende que
en las aristas de grafos no dirigidos no importa el orden, es decir, (u, v) = (v, u).
Un grafo se representa por medio de puntos o círculos, que designan los vértices, y
líneas que los unen, que representan las aristas. Por ejemplo, en la figura 2.1(b) tenemos
un ejemplo de grafo no dirigido con conjunto de vértices V = {1, 2, 3, 4, 5, 6} y aristas
E = {(1, 2), (2, 5), (1, 5), (3, 6)}.

Definición 5. Un grafo dirigido o digrafo G es un par (V, E), donde V es un con-


junto finito no vacío y E es una relación binaria en V , es decir, un conjunto de pares
ordenados de elementos de V . Los elementos de V reciben el nombre de vértices. El
conjunto E es el conjunto de aristas de G.

Por ejemplo, en la figura 2.1(a) tenemos un grafo dirigido que, de acuerdo con
la definición, tiene seis vértices (V = {1, 2, 3, 4, 5, 6}) y ocho aristas (E = {(1, 2),
(2, 2), (2, 4), (2, 5), (4, 1), (4, 5), (5, 4), (3, 6)}). Las flechas apuntan del primer ele-
mento de cada par al segundo.

23
∗ ∗
5 5
+ +
6 6
12 12
χ (K 5 ) = 5 χ (K 5 ) = 5
χ (K 3,3 ) = 2 χ (K 3,3 ) = 2
χ (C7 ) = 3 χ (C7 ) = 3
χ (esto) = 4 χ (esto) = 4
χ (esto otro) = 4 χ (esto otro) = 4
x1 ≥ 6 x1 ≥ 6
x2 ≥ 8 x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8 x1 ≥ 6, x 2 ≥ 8
1 2 3 1 2 3
x1 < 6, x 2 < 8 x1 < 6, x 2 < 8
A2 A2
A1 A1
A − A1 − A2 A − A1 − A2
A12 4 5 6 A12 4 5 6

(a) (b)

Figura 2.1: Ejemplos de (a) grafo dirigido, y (b) no dirigido

Tipo de grafo Dirigido Simple Lazos


Grafo No Sí No
Multigrafo No No No
Pseudografo No No Sí
Grafo dirigido (digrafo) Sí Sí Sí
Multigrafo dirigido Sí No Sí

Cuadro 2.1: Cadro resumen de los diferentes tipos de grafos

Obsérvese que es posible que una arista puede partir de un vértice y llegar a él de
nuevo. Una arista de esta clase, es decir, de la forma e = (v, v), recibe el nombre de
bucle o lazo.
Cuando el sentido de las flechas no nos interesa (o, dicho de forma más técnica, la
relación que el grafo representa es simétrica), es más conveniente el concepto de grafo
no dirigido.
Existen numerosas variantes de las definiciones que acabamos de dar. Por ejem-
plo, un multigrafo es un grafo no dirigido en el que permitimos la existencia de varias
aristas conectando los mismos vértices y la aparición de bucles. Específicamente, un
multigrafo queda definido por medio de una tríada G = (V, E, f ), donde V y E
son conjuntos y f : E → V × V asigna a cada arista e ∈ E un par desordena-
do f (e) = {u, v} de vértices diferentes de V (los vértices extremos de la arista e).
Un multigrafo dirigido se define de forma exactamente igual, excepto que el recorri-
do de f está formado por pares ordenados de vértices. Por último, si permitimos la
existencia de bucles o lazos en un grafo no dirigido, tenemos un pseudografo: se trata
de una terna G = (V, E, f ), donde f : E → V × V asigna a cada arista un par no
ordenado de vértices (posiblemente iguales).
Dado que esta terminología no es estándar, siempre es conveniente en cada caso
especificar claramente si el grafo objeto de nuestra consideración es dirigido o no; si se
admiten múltiples aristas entre un par cualquiera de vértices (es decir, si el grafo es o
no simple); y si se admiten bucles o lazos. En el cuadro resumen 2.1 se esquematizan
los valores de estos parámetros para las definiciones recién dadas.

2.2.2. Incidencia y grado


Si (u, v) es una arista de un grafo dirigido, decimos que incide desde o sale de el
vértice u, que será su vértice inicial, y que incide hacia o entra en el vértice v, que será

24
su vértice final. Si estamos en un grafo no dirigido, decimos que (u, v) simplemente
incide en los vértices u y v, que serán sus vértices extremos.
Por ejemplo, en la figura 2.1(a), hay tres aristas que salen del vértice 2: son (2, 2),
(2, 4) y (2, 5). En el grafo no dirigido de la figura 2.1(b), la arista (3, 6) incide en los
vértices 3 y 6.
Si (u, v) es una arista de un grafo, decimos que el vértice v es adyacente al vérti-
ce u. En un grafo no dirigido, la relación de adyacencia es simétrica; no es así necesa-
riamente en un digrafo. Por ejemplo, en la figura 2.1(a), el vértice 5 es adyacente al 2
(pero el 2 no es adyacente al 5). En cambio, en el grafo de la figura 2.1(b), los vértices
1 y 2 son adyacentes entre sí.
El grado de un vértice en un grafo no dirigido es número de aristas incidentes con
él. Por ejemplo, el vértice 5 de la figura 2.1(b) tiene grado 2. En un digrafo, el grado
de salida de un vértice es el número de aristas que salen de él, y el grado de entrada
es el número de aristas que entran en él. El grado es la suma de los grados de salida
y entrada. En el grafo dirigido de la figura 2.1(a), el vértice 2 tiene grado de salida 3,
grado de entrada 2 y grado 5.

2.2.3. Representación como estructuras de datos


Nuestro interés en los grafos radica en su aplicación a la informática, y exige que
podamos representarlos en nuestros programas como estructuras de datos que podamos
manejar, crear, modificar y consultar. Existen tres representaciones usuales de los gra-
fos que permiten su manipulación como objetos en nuestros programas: las represen-
taciones por medio de matrices de adyacencia, de listas de adyacencia y de matrices
de incidencia.
En la representación por matrices de adyacencia, un grafo G = (V, E) cuyo con-
junto de vértices sea V = {a1 , a2 , . . . , an } se representa por una matriz booleana M,
cuadrada, de dimensión igual al número de vértices n, y cuyos elementos se definen
por (
1 si (ai , a j ) es una arista de G
Mi j =
0 en caso contrario
Es decir, la matriz M representa la relación de adyacencia. Habrá un uno en la fila i,
columna j, si hay una arista que va del vértice ai al vértice a j .
Obsérvese que la matriz no será simétrica, en general, si el grafo es dirigido. En
cambio, la matriz de adyacencia de un grafo no dirigido siempre será simétrica. Las
aristas múltiples no quedan bien representadas en la matriz de adyacencia, pero sí los
bucles o lazos, que provocan la presencia de unos en la diagonal principal.
Para el grafo de la figura 2.1(a), la matriz de adyacencia se representa en la figu-
ra 2.2(a).
La representación por matrices de adyacencia tiene un inconveniente serio para
grafos grandes: el tamaño de la matriz es proporcional al cuadrado del número de
vértices. Si el número de aristas |E| es comparativamente pequeño en relación a |V | 2 ,
se desperdicia una cantidad enorme de espacio. La mayoría de los grafos se encuentra
en este caso: son grafos dispersos, donde |E| ¿ |V |2 .
La representación por listas de adyacencia es mucho más conveniente en esta ma-
yoría de casos. Un grafo G = (V, E) se representará por un vector de listas. El vector
tiene |V | posiciones, una por cada vértice; en la posición i-ésima se almacena la lista
de los vértices adyacentes a ai . En la figura 2.2(b) representamos el grafo de la figu-
ra 2.1(a) por medio de listas de adyacencia.

25
  Vértice Adj(V )
0 1 0 0 0 0
0 1 1 {2}
0 1 1 0

0 0
 2 {2, 4, 5}
0 0 0 0
M=
1 0
 3 {}
0 0 1 0

0 0
 4 {1, 5}
0 1 0 0
5 {4}
0 0 1 0 0 0
6 {3}

(a) (b)

Figura 2.2: Representación del grafo de la figura 2.1(a) por medio de a) matriz de
adyacencia b) listas de adyacencia

Podemos ver que el tamaño de esta representación es proporcional al número |E|


de aristas del grafo. Esto lo hace mucho más conveniente en casi todos los casos. Sola-
mente en el caso de grafos densos (en los que |E| y |V |2 son comparables) es razonable
considerar la matriz de adyacencia como representación alternativa.
La matriz de incidencia de un grafo G = (V, E), donde |V | = n y |E| = m se
define como una matriz booleana n × m en la que
(
1 si la arista j incide en el vértice i
(Minc )i j =
0 en caso contrario

Esta representación es solamente válida para grafos no dirigidos, puesto que el sen-
tido de las aristas no puede ser representado de esta forma. Puede resultar útil para
representar multigrafos, pero su interés fundamental es más bien teórico.

2.2.4. Caminos y ciclos


Un camino de longitud k entre el vértice u y el vértice u 0 del grafo G = (V, E) es
una sucesión de aristas {e1 , e2 , . . . , ek } tales que ei = (vi−1 , vi ) para i = 2, 3, . . . , k,
con lo que cada arista tiene por vértice inicial el vértice final de la anterior. Para hacer
explícito este hecho, a veces un camino se denota también con los vértices intercala-
dos: C = {v0 , e1 , v1 , . . . , en , vn }. Si no hay ambigüedad, un camino puede denotarse
exclusivamente por la sucesión de vértices que visita: C = {v0 , v1 , . . . , vk }. Esto puede
hacerse, por ejemplo, cuando los grafos con los que trabajamos son simples.
La longitud del camino, según la definición dada arriba, es el número de aristas que
lo constituyen. El vértice inicial de C = {v0 , e1 , . . . , ek , vk } es v0 , y el vértice final es
vk .
Un camino es simple si todas sus aristas son distintas. En ocasiones se llama simple
a un camino que no visita dos veces el mismo vértice. La segunda definición es más
restrictiva que la primera, puesto que un camino puede pasar dos veces por un mismo
vértice sin visitar ninguna arista más de una vez.
Un camino (v0 , e1 , v1 , . . . , ek , vk ) forma un ciclo si v0 = vk y el camino contiene
al menos una arista. El ciclo es simple si, además, las aristas que lo forman son todas
distintas. Por ejemplo, un lazo es un ciclo de longitud unidad.

26
G G
H H
I I
J J
3 3
+ +
∗ ∗
5 5
+ +
6 6
12 12
χ (K 5 ) = 5 36 χ (K 5 ) = 5
χ (K 3,3 ) = 2 χ (K 3,3 ) = 2
χ (C7 ) = 3 χ (C7 ) = 3
χ (esto) = 4 12 18χ (esto) = 4
χ (esto otro) = 4 χ (esto otro) = 4
x1 ≥ 6 x1 ≥ 6
x2 ≥ 8 4 6 9 x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8 x1 ≥ 6, x 2 ≥ 8
x1 < 6, x 2 < 8 x1 < 6, x 2 < 8
A2 2 3 A2
A1 A1
A − A1 − A2 A − A1 − A2 3 4 6 9
A12 1 A12

(a) (b)

Figura 2.3: (a) Retículo de divisores de 36 y (b) Relación de orden entre 3, 4, 6, 9

2.3. Relaciones y grafos


Existe una conexión muy íntima entre las relaciones binarias en un conjunto y los
grafos. De hecho, hemos definido un grafo dirigido como una relación, y el uso que
hacemos de los grafos en informática es para representar relaciones.
Sea A un conjunto finito y R una relación binaria de dominio A. Al ser A finito,
podremos enumerar sus elementos:

A = {a1 , a2 , a3 , . . . , an }

Definimos el grafo asociado a R (o grafo que representa R) como un grafo cuyos


vértices son los elementos de A, siendo (ai , a j ) una arista del grafo si y solamente
si ai R a j . De hecho, según la definición de digrafo que dimos en la sección 2.1(b), la
propia relación es un grafo.
Como ejemplo, consideremos la relación binaria R definida entre números enteros
como sigue
a R b si y solamente si b = pa con p primo

y estudiemos su restricción al conjunto A = {1, 2, 3, 4, 6, 9, 12, 18, 36} formado por


los divisores de 36. El grafo asociado a la relación será el que se muestra en la figu-
ra 2.3(a). En cambio, el grafo de la relación ≤ entre los números {3, 4, 6, 9} puede
verse en la figura 2.3(b).
Algunas propiedades de estas relaciones son directamente observables a partir del
grafo. Por ejemplo, en ninguna de las figuras encontramos flechas dirigidas en sentidos
contrarios entre ningún par de nodos. Esto se debe a que las relaciones representadas
son antisimétricas. La relación de orden de la figura 2.3(b) es, además, obviamente
reflexiva: la presencia de un bucle o lazo en todos y cada uno de los nodos lo prueba.
Observemos que 2 R 6 y que 6 R 12, pero que, sin embargo, 2 6 R 12. Esto se debe
a que la relación R no es transitiva. En cambio, ≤ sí es una relación transitiva; veremos
enseguida en qué se traduce esto en términos de grafos.

27
Un ejemplo de grafo que se vincula a una relación de manera algo diferente es
el diagrama de Hasse de una relación de orden. El diagrama de Hasse se obtiene
representando la relación por un grafo, y suprimiendo
todos los lazos
todas las aristas que se puedan deducir por transitividad de otras dos
En la figura 2.3(a) tenemos un ejemplo de un tal diagrama para la relación de divisibi-
lidad en el conjunto de los divisores de 36.
La matriz de adyacencia del grafo asociado a una relación R se denomina simple-
mente matriz de la relación; es una matriz cuadrada binaria M R , de dimensión igual al
cardinal del dominio de R. El elemento (M R )i j de la matriz vale uno o cero según que
los elementos ai y a j estén relacionados o no. En símbolos,
(
1 si ai R a j
(M R )i j =
0 en caso contrario

Veamos cómo se plasman en términos de grafos y de matrices de relaciones las


cuatro propiedades estudiadas en 2.1.3.

reflexividad R es reflexiva sii a R a para todo a ∈ A. Por lo tanto, si cada vértice del
grafo posee un lazo, R es reflexiva; si algún vértice carece de lazo, la relación no
es reflexiva. En términos de matrices, cada elemento de la diagonal principal
de M R debe ser un uno.
simetría R es simétrica sii a R b ⇒ b R a, para todo par de a, b ∈ A. Por lo tanto,
si hay una flecha de un vértice v a otro w, la flecha contraria también debe estar
presente; y si no la hay en un sentido, la contraria tampoco puede existir. En
términos matriciales, (M R )i j = (M R ) ji para todo par de índices i, j; o, más
brevemente, M R es simétrica: M Rt = M R
transitividad R es transitiva si y solamente si a R b junto con b R c implica necesa-
riamente que a R c. En términos de grafos, la existencia de una arista entre los
vértices a, b y otra entre b, c implica la existencia de la arista (a, c). El par de
aristas (a, b), (b, c) forma un camino de longitud dos entre los vértices a y c, de
modo que la condición de transitividad puede formularse así: la accesibilidad de
orden dos implica adyacencia. En términos matriciales, (M R )i2j = 1 implicará
siempre que (M R )i j = 1 o, abreviando, M R2 ⊂ M R : elevar al cuadrado la matriz
de la relación no introduce unos que no existieran ya en M R .

2.4. Accesibilidad y conexión


Decimos que un vértice u 0 de un grafo es accesible (o alcanzable) desde otro vér-
tice u si existe un camino de u a u 0 .
Es fácil ver que la relación de accesibilidad es transitiva: si w es accesible desde v
y v es accesible desde u, es evidente que w es accesible desde u. Además, todo nodo
es accesible desde sí mismo (por medio de un camino de longitud cero). En un grafo
no dirigido, la relación también es simétrica; en un digrafo ya no tiene por qué ser así
(en la figura 2.1(a), el vértice 3 es accesible desde 6, pero no al contrario).

28
Cazorla
Bastardo Lebrel
Guzmán
Dehesa
Cobas
Zapatero
Herrero
González
Cazorla
Guzmán
DehesaZorrilla
Lebrel
Herrero A
Zapatero
González
Lebrel C
Zorrilla
Guzmán B
Zapatero
Herrero A D
Lebrel
Zorrilla B E
Zapatero CA F
Zorrilla DB G
E
C
A
F HI
D
B
CG
E
DF J3
H
GI +
E
FJ3 ∗
H
G+ I 5
H J∗ +
I3 6
+
+J5 12
χ (K 5 )3∗ 56= 5
χ (K 3,3 )12 ++ =2
)= ∗
χ (Kχ5(C 7 )55 6= 3
χ (Kχ3,3 ) =12
(esto) +2= 4
χχ(K )) =
(C57otro) =12653= 4
χχ(esto = 42
χχ(K 3,3 ) =
(esto) x153≥ 6
χ (esto (C57)) =
χ(K
otro) =
=x224≥ 8
χχ(K 3,3 ) =
=
xχ1(esto)
≥ 7x6,
(C ) 1= x 2 346≥ 8

χ (esto otro)
< x6, =
x≥2 448< 8
x χx≥1(esto)
6, x221 = ≥ 68 A2
1
Propiedad Definición x1 < otro)
χ (esto 6, xx22 = <≥ 48 AGrafo
1 Matriz
x1 ≥A6,−x1A 2≥ 1≥A−6882 A2
x < 6, x 22 A ≥
< 8
x1A≥−6,Ax1 2−≥A8212A12
Reflexiva ∀a a R a 1 (M R )ii = 1 ∀i
Simétrica ∀a, b a R x
b ⇒ b R Aa − A −<
1 < 6, x 2 AA1281 M Rt= MR
1 AA22
Antisimétrica ∀a, b a R b y b R a ⇒ a = bAA12 1 (M R )i j 6= (M R ) ji ∀i 6= j
29

A − A1 − A2
Transitiva ∀a, b, c a R b y b R c ⇒ a R cA12 M R2 ⊂ MR

Cuadro 2.2: Cuadro resumen de las propiedades de las relaciones


Un grafo no dirigido es conexo si cada par de vértices está conectado por un camino
(es decir, todos los vértices son mutuamente accesibles). Las componentes conexas de
un grafo son las clases de equivalencia de los vértices bajo la relación de accesibilidad.
El grafo de la figura 2.1(b) no es conexo, ya que, por ejemplo, 6 es inaccesible desde 1.
Hay tres componentes conexas en el grafo: {1, 2, 5}, {3, 6} y {4}.
En una componente conexa, todos los vértices son mutuamente accesibles; es evi-
dente, por tanto, que un grafo es conexo si y solamente si tiene una única componente
conexa. Intuitivamente, las componentes son los diferentes “trozos” conexos en que el
grafo se descompone.
Un grafo dirigido es fuertemente conexo si cualquier vértice es accesible desde
cualquier otro. Las componentes fuertemente conexas de un digrafo son las clases de
equivalencia de los vértices bajo la relación “ser mutuamente accesibles”.
Es algo menos intuitivo visualmente el extraer las componentes fuertemente cone-
xas de un digrafo. Por ejemplo, en el grafo de la figura 2.1(a), tenemos tres componen-
tes: {1, 2, 4, 5}, {3} y {6}. Los cuatro vértices que residen en la primera componente
son mutuamente accesibles entre sí (basta usar el ciclo (1, 2, 5, 4) para desplazarse de
un vértice a otro); pero 3 y 6 no son mutuamente accesibles (solamente 3 es accesible
desde 6, pero no a la inversa), y por consiguiente residen en componentes distintas.

2.4.1. Matrices de accesibilidad


De manera análoga a como hicimos en el epígrafe anterior, podemos decir que un
vértice v es accesible de orden k desde otro vértice u, si existe un camino de longitud k
exactamente que tiene a u por vértice inicial y a v por vértice final. De forma trivial, un
vértice v0 es accesible de orden cero desde sí mismo, puesto que el camino de longitud
cero {v0 } satisface la definición. También es evidente la equivalencia

v accesible desde u ⇔ ∃k ≥ 0 | v accesible desde u (2.1)

Las definiciones anteriores establecen una serie de relaciones binarias en el conjun-


to V (G) de los vértices de un grafo G: la accesibilidad pura, y las accesibilidades de
órdenes k = 0, 1, 2, . . . . Cada una de estas relaciones binarias da lugar a una matriz de
accesibilidad que la representa. Definimos detalladamente estas matrices a continua-
ción.
Definición 6. Sea G un grafo con n nodos. La matriz de accesibilidad de G se define
como la matriz binaria Macc de dimensión n × n cuyos elementos vienen dados por
(
1 si v j es accesible desde vi
(Macc )i j =
0 en caso contrario

Definición 7. Sea G un grafo con n nodos. La matriz de accesibilidad de orden k


de G se define como la matriz binaria Mk de dimensión n × n cuyos elementos vienen
dados por
(
1 si v j es accesible de orden k desde vi
(Mk )i j =
0 en caso contrario

En algunos casos, las matrices de accesibilidad se definen, no como matrices bina-


rias, sino como matrices de enteros, poniendo en lugar de un uno el número total de
caminos existentes del tipo indicado. Si utilizamos ese convenio, nuestras matrices de

30
accesibilidad booleanas se obtienen a partir de las matrices enteras reemplazando por
unos los enteros positivos, y dejando los ceros donde están. El paso inverso (de matriz
booleana a entera) no es posible en general, puesto que al convertir a matriz booleana
se pierde información.
Es evidente que la matriz M1 coincide con la matriz de adyacencia que vimos en
la sección 2.2.3. Como la accesibilidad de orden cero solamente se da entre vértices
iguales, es también evidente que M0 = In , la matriz identidad n × n. En cuanto a otras
matrices de accesibilidad de orden superior, no parece haber una forma inmediata de
calcularlas. Para el grafo de la figura 2.1(a), puede comprobarse manualmente que
   
0 1 0 1 1 0 1 1 0 1 1 0
1 1 0 1 1 0  1 1 0 1 1 0 
   
0 0 0 0 0 0  0 0 0 0 0 0 
M2 = 0 1 0 1 0 0 
 M 3 = 
1 1 0 1 1 0 

   
1 0 0 0 1 0  0 1 0 1 0 0 
0 0 0 0 0 0 0 0 0 0 0 0
pero las comprobaciones se vuelven muy engorrosas para órdenes mayores. Por fortu-
na, hay una fórmula algebraica muy simple que nos permite calcular de forma directa
las matrices de accesibilidad de cualquier orden.
Teorema 13. Para k ≥ 0,
Mk = M k (2.2)
Demostración. Por inducción sobre el exponente k.
Para k = 0, hemos visto que M0 = In = M 0 , y no hay nada que demostrar. De la
misma forma, M1 = M = M 1 y se tiene el teorema trivialmente.
Supongamos, pues, que la identidad (2.2) es cierta para k < l; vamos a probarla
para k = l. Como tanto Ml como M l son matrices booleanas del mismo tamaño,
lo único que es preciso probar es que coinciden elemento a elemento, es decir, que
(Ml )i j = (M l )i j para cada 1 ≤ i, j ≤ n.
Ahora bien, tenemos que
n
X
(M l )i j = (M l−1 M)i j = (M l−1 )ik Mk j (2.3)
k=1

Por hipótesis de inducción, M l−1 = Ml−1 , por lo cual


n
X
l
(M )i j = (Ml−1 )ik Mk j (2.4)
k=1
Ahora bien, la suma de 2.4 será la unidad solamente si existe algún valor del índice k
para el que
(Ml−1 )ik = 1 y Mk j = 1
La primera igualdad ocurre si y solamente si existe un camino de orden l − 1 entre vi
y vk ; la segunda, si hay una arista que une a vk con v j . Por lo tanto
(M l )i j = 1 ⇔
⇔ ∃vk ∈ V (G)(vk accesible de orden l − 1 desde vi ∧
∧ v j accesible de orden 1 desde vk )
⇔ v j es accesible de orden l desde vi
⇔ (Ml )i j = 1

31
+

5
+
6
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2
χ (C7 ) = 3
χ (esto) = 4
χ (esto otro) = 4
x1 ≥ 6
x2 ≥ 8 K5
x1 ≥ 6, x 2 ≥ 8 K4 K6
x1 < 6, x 2 < 8
A2
A1
A − A1 − A2
A12

Figura 2.4: Grafos completos de cuatro, cinco y seis vértices

Con ayuyda del teorema recién probado, el cálculo de las diferentes matrices M k
se reduce a simple potenciación de la matriz de conexión o adyacencia. El teorema
siguiente nos da una forma sencilla de calcular Macc
Teorema 14. Si G es un grafo de n vértices,

Macc = I + M + M 2 + · · · + M n−1

Demostración. De la equivalencia 2.1 podemos deducir inmediatamente que

Macc ⊇ I + M + M 2 + · · · + M n−1

es decir, que la matriz de la izquierda poseerá todos los unos que posee el lado derecho,
y posiblemente alguno más. Nos bastará, pues, probar la inclusión contraria:

(Macc )i j = 1 ⇒ (I )i j + (M)i j + (M 2 )i j + · · · + (M n−1 )i j = 1 (2.5)

Ahora bien, el lado izquierdo de la ecuación 2.5 implica que existe un camino de cierta
longitud m entre el vértice vi y el vértice v j . Sea dicho camino

C = {v0 , e1 , v1 , e2 , v2 , . . . , em , vm }

Tendremos vi = v0 como vértice inicial y v j = vm como final. Si m = |C| ≥ n, el


número de vértices visitados por C es m + 1 > n, de manera que C tiene forzosamen-
te que pasar dos veces por un mismo vértice. Es decir, existirán dos índices k, l con
0 ≤ k < l ≤ n y vk = vl . Si suprimimos la sección de C entre esos dos vértices,
{vk , ek+1 , . . . , el }, obtenemos un camino nuevo C 0 cuya longitud es inferior a m y que
sigue teniendo los mismos extremos. Por aplicación reiterada de este procedimiento,
podemos llegar a un camino final que no visita más de n vértices, y que, por tanto, tiene
longitud a lo sumo n − 1.
El argumento anterior prueba que, si v j es accesible desde vi , lo es para algún orden
k < n, de modo que (M k )i j = 1 para algún exponente k entre 0 y n − 1. Esto prueba
que el lado derecho de la ecuación 2.5 tiene que ser igual a uno si lo es el izquierdo,
que es lo que se precisaba demostrar.

2.5. Algunos grafos especiales


2.5.1. Grafos completos
Un grafo completo es un grafo no dirigido en que todos los vértices son adyacentes
entre sí. Para cada número de vértices n, existe esencialmente un solo grafo completo

32
H
I
J
3
+

5
+
6
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2 1 2
χ (C7 ) = 3
χ (esto) = 4
χ (esto otro) = 4
x1 ≥ 6
x2 ≥ 8 3 4
x1 ≥ 6, x 2 ≥ 8
x1 < 6, x 2 < 8
A2
A1
A − A1 − A2
6 5
A12

Figura 2.5: Torneo de seis vértices

(todos son isomorfos entre sí), que se designa por K n . Por ejemplo, en la figura 2.4
tenemos algunos grafos completos.
¡ ¢
Teorema 15. El grafo completo de n vértices K n tiene n2 = n(n − 1)/2 aristas.
Hay varias formas de demostrar esto:
1. El número de aristas de K n es el número de pares desordenados en un conjunto
de n objetos, es decir, el de combinaciones de n elementos tomados de dos en
dos.
2. Cada vértice del grafo está unido a los n − 1 restantes. Si contamos las aristas
incidentes en cada uno de los n vértices, obtenemos n(n − 1), pero, al obrar
así, estamos contando cada arista dos veces (puesto que tiene dos extremos). Por
tanto, el número total de aristas es exactamente la mitad, n(n − 1)/2.
3. Numeremos los vértices de 1 a n. En el vértice 1 inciden n − 1 aristas:

(1, 2), (1, 3), (1, 4), . . . (1, n)

En el vértice 2 inciden también n − 1 aristas, pero una ya ha sido contada ante-


riormente, de modo que sólo aparecen aquí n − 2 nuevas:

(2, 3), (2, 4), . . . (2, n)

Si proseguimos así el recuento, llegamos a que el número total de aristas es la


suma de una progresión aritmética:
(n − 1) + 1
|E| = (n − 1) + (n − 2) + · · · + 2 + 1 = (n − 1)
2

De este
¡ ¢teorema deducimos que un grafo simple no dirigido de n vértices tendrá, a
lo sumo, n2 aristas.

2.5.2. Torneos
Un torneo (tournament) es un grafo dirigido cuya versión no dirigida es un grafo
completo. Podemos decir que un torneo puede obtenerse a partir de un grafo completo

33
asignando orientaciones a cada una de las aristas. En la figura 2.5 podemos ver un
ejemplo de torneo con seis vértices.
En el torneo de la figura podemos ver que el camino simple (1, 2, 4, 6, 3, 5) pasa
por todos los vértices. Un camino así se denomina camino hamiltoniano. En el teore-
ma 21 veremos que siempre es posible encontrar uno en cualquier torneo.

2.5.3. Grafos bipartitos


Un grafo bipartito es un grafo no dirigido G = (V, E) cuyo conjunto de vértices
V es unión de dos conjuntos disjuntos V1 y V2 de forma que (u, v) ∈ E implica que,
o bien u ∈ V1 y v ∈ V2 , o bien u ∈ V2 y v ∈ V1 . Es decir, todas las aristas tienen un
extremo en cada uno de los conjuntos V1 y V2 .
Recordemos que V1 y V2 forman una partición de V si son disjuntos y su unión
es V .

Teorema 16. Un grafo es bipartito si y solamente si carece de ciclos de longitud impar

Demostración. Sea G bipartito y C = (v0 , v1 , . . . , vn ) un ciclo de G. Como cada aris-


ta (vi−1 , vi ) une un elemento de V1 con uno de V2 , se deduce que vértices consecutivos
de C pertenecen a lados distintos de la partición, de forma que los vértices de subíndice
par están todos en un lado y los de subíndice impar en el contrario. Como v0 = vn , se
deduce que n tiene la misma paridad que 0, es decir, es par.
Recíprocamente, supongamos que el grafo G carece de ciclos de longitud impar.
En primer lugar, es obvio que bastará probar que cada componente de G es bipartita,
así que podemos suponer G conexo. Sea v0 ∈ V (G) un vértice cualquiera, y definamos
V1 = {v ∈ V (G) | existe un camino de longitud impar entre v0 y v}, y V2 = V − V1 .
Por definición, los caminos entre v0 y cualquier vértice de V2 serán todos de longitud
par. Además, V1 y V2 forman una partición de V . Ahora, si dos vértices v, w de V1
son adyacentes, los caminos de longitud impar que los unen con v0 , más las arista
(v, w), constituyen un ciclo impar, contra la hipótesis. Por lo tanto, no hay ningún par
de vértices adyacentes en V1 . Para V2 , el mismo razonamiento es válido, de forma que
cualquier arista une algún vértice de V1 con alguno de V2 .

2.5.4. Caminos y ciclos


El camino de longitud n es el grafo Pn = (V, E), donde V = {v0 , v1 , . . . , vn }
y E = {(v0 , v1 ), (v1 , v2 ), . . . , (vn−1 , vn )}. El ciclo de longitud n es el grafo C n =
(V, E), donde V = {v1 , . . . , vn } y E = {(vn , v1 ), (v1 , v2 ), . . . , (vn−1 , vn )}. En la
figura 2.5.4 podemos ver ejemplos de estos complicadísimos conceptos.

2.5.5. Grafos cúbicos Q n


Los grafos Q n son la representación de la red de vértices y aristas de un cubo n-
dimensional. El cubo de dimensión cero Q 0 consta, por definición, de un solo vértice.
A partir de ahí, se obtiene Q n uniendo por medio de aristas los vértices correlativos de
dos copias de Q n−1 . En la figura 2.7 podemos ver los primeros grafos cúbicos, hasta el
de dimensión 4.

34
C32 Abad
Zorrilla C2Abad
Zorrilla Zorrilla C2
+
C3 Abascal
A Abascal
C3 A A C3
C∗4 Álvarez
B Álvarez
C4 B B C4
C55 Bastardo
C Bastardo
C5 C C C5
+7
C Cobas
D CCobas
7D D C7
P66 Cazorla
E Cazorla
P6 E E P6
C
12m Dehesa
F CDehesa
mF F Cm
χ (K 5 ) =Q50 GonzálezG González
Q0 G G Q0
χ (K 3,3 ) =Q21 GuzmánH Guzmán
Q 1H H Q1
χ (C7 ) =Q32 HerreroI Herrero
Q 2 I I Q2
χ (esto) =Q43 Lebrel
J QLebrel
3 J J Q3
χ (esto otro) =Q44 Zapatero Zapatero
Q Q4
3 4 3 3 C5
x1 ≥Q65 Zorrilla
+ Zorrilla
Q 5+ + Q5
≥8
x2 Abad ∗ A Abad ∗ A ∗ Abad
x1 ≥ 6,Abascal
x2 ≥ 8 5B Abascal 5 B 5Abascal
x1 < 6, Álvarez
x2 < 8 +C Álvarez + C +Álvarez
A2
Bastardo 6D Bastardo 6 D Bastardo
6
A
Cobas 1 12 E Cobas12 E 12 Cobas
− A2P6χ (K 5 ) = 5 F
A − A1Cazorla χCazorla
(K 5 ) C =5F χ (K 5 ) = 5Cazorla
7
A χ
Dehesa 3,3
12 (K ) = 2 G χ (KDehesa
3,3 ) = 2 G χ (K 3,3 ) = 2Dehesa
González χ (C 7 ) = 3 H χ (C
González
7 ) = 3 H χ (C7 ) =González
3
Guzmán χ (esto) = 4 I χFigura
(esto)
Guzmán 2.6:
= 4 I
Camino Pχ6 y ciclos
(esto) = C4 7 y C5
Guzmán
χ (esto
Herrero otro) = 4 J χ (esto otro)
Herrero = 4 J χ (esto otro) = 4Herrero
Lebrel x1 ≥ 6 3 x1 ≥ 6 3
Lebrel x1 ≥ 6 Lebrel
Zapatero x2 ≥ 8 + x2 ≥ 8 +
Zapatero x2 ≥ Zapatero
8
x
Zorrilla
1 ≥ 6, x 2 ≥ 8 ∗ x 1 ≥ 6, x
Zorrilla
2 ≥ 8 ∗ x 1 ≥ 6, x 2 ≥ 8Zorrilla
x1A< 6, x 2 < 8 5 x1 < 6, x 2 < A 8 5 x 1 < 6, x 2 < 8 A
A2 + Q0
B BA2 + A2 B
C A1 6 CA1 6 Q1 A1 C Q2
A
D − A 1 − A 2
12 A − A −
1 D 2 A 12 A − A 1 − A2 D
χ (K 5A) = 5 χ (K 5A) = 5 A12
E 12 E 12 E
χ (K 3,3 ) = 2 χ (K 3,3 ) = 2
F F F
χ (C7 ) = 3 (a)
χ (C7 ) = 3 (b)
G G G (c)
χ (esto) = 4 χ (esto) = 4
H H H
χ (esto otro) = 4 χ (esto otro) = 4
I I I
x1 ≥ 6 x1 ≥ 6
J J J
x2 ≥ 8 x2 ≥ 8
3 3 3
+1x ≥ 6, x 2 ≥ 8 x 1 ≥ 6, +2 ≥ 8
x +
x < 6, x 2 < Q 83 x1 < 6, x 2 < 8
 

 

∗1 ∗ ∗
A2 A
 
 

5 5 2 5
+ A1 + A1 +
A − A1 − A2 A − A1 − A2
6 6 6
 
   

A12 A Q4
12 12
 
   

12 12
χ (K 5 ) = 5 χ (K 5 ) = 5 χ (K 5 ) = 5
χ (K 3,3 ) = 2 (d) ) = 2 (e)
χ (K 3,3 χ (K 3,3 ) = 2
χ (C7 ) = 3 χ (C7 ) = 3 χ (C7 ) = 3
χ (esto) = 4 Figura=2.7:
χ (esto) 4 Grafos Q n , para nχ= 0, . . =
(esto) .,4
χ (esto otro) = 4 χ (esto otro) = 4 χ (esto otro) = 4
x1 ≥ 6 x1 ≥ 6 x1 ≥ 6
x2 ≥ 8 x2 ≥ 8 x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8 x1 ≥ 6, x 2 ≥ 8 x1 ≥ 6, x 2 ≥ 8
x1 < 6, x 2 < 8 x1 < 6, x 2 < 8 x1 < 6, x 2 < 8
A2 A2 A2
A1 A1 A1
A − A1 − A2 A − A1 − A2 A − A1 − A2
A12 A12 A12

(a) (b) (c)

Figura 2.8: (a) Un árbol. (b) Un bosque. (c) Un grafo que no es ni un árbol ni un bosque

35
2.6. Arboles
Definición 8. Un árbol es un grafo no dirigido, conexo y acíclico. Un grafo no dirigido
que es acíclico, pero posiblemente no conexo, se denomina bosque.

La figura 2.8(a) muestra un árbol, y en 2.8(b) vemos un bosque que no es un árbol,


al no ser conexo. El grafo de 2.8(c) no es un árbol ni un bosque, pues contiene un ciclo.
Antes de demostrar un importante teorema sobre árboles precisamos los dos lemas
siguientes, cuyas demostraciones son prácticamente idénticas.

Lema 1. Sea G un grafo no dirigido con n vértices y e aristas. Si G es conexo, se


verifica que e ≥ n − 1.

Demostración. Por inducción sobre el número de vértices. El teorema es trivialmente


cierto para n = 1. Supongamos entonces que la desigualdad se verifica en todos los
grafos conexos con menos de n vértices.
Consideremos un vértice cualquiera v ∈ V (G) de grado d como el que mostra-
mos en la figura 2.9, siendo sus vértices adyacentes v1 , v2 , . . . , vd . El grafo G − v
obtenido al suprimir v y sus aristas adyacentes posee n − 1 vértices, e − d aristas y
es posiblemente inconexo; al suprimir v, G puede divirse a lo sumo en d componen-
tes conexas (¿por qué?). Sean entonces esas componentes los subgrafos C i de G, con
i = 1, 2, . . . , m ≤ d.
Cada componente C i es un grafo conexo con menos de n vértices. Por tanto, por
hipótesis de inducción, sus números de vértices n i y aristas ei satisfacen la desigualdad

ei ≥ n i − 1 i = 1, 2, . . . m

Sumando estas desigualdades sobre todas las componentes


m m
à m !
X X X
ei ≥ (n i − 1) = ni − m
i=1 i=1 i=1

Ahora, el primer sumatorio es el número de aristas de G − v, es decir, e − d, y el último


es el de vértices, n − 1. Como el número de componentes m no supera el grado d

e−d ≥n−1−m es decir e ≥n−1+d −m ≥n−1

como se quería demostrar.

El lema dual del recién probado cambia la conexión por la aciclicidad, con lo que
el sentido de la desigualdad se invierte.

Lema 2. Sea G un grafo no dirigido con n vértices y e aristas. Si G es acíclico,


e ≤ n − 1.

Demostración. Por inducción sobre el número de vértices. El teorema es trivialmente


cierto para n = 1. Supongamos entonces que la desigualdad se verifica en todos los
grafos acíclicos con menos de n vértices.
Consideremos un vértice cualquiera v ∈ V (G) de grado d como el que mostramos
en la figura 2.9, siendo sus vértices adyacentes v1 , v2 , . . . , vd . Al suprimir el vértice v
y obtener G − v, resulta ahora un grafo acíclico que, a diferencia del lema anterior,
posee al menos d componentes conexas (¿por qué?). Es decir, m ≥ d.

36
F
G
H
I
J
3
+

5
+
6
12 vd v1
χ (K 5 ) = 5 Cm
C1
χ (K 3,3 ) = 2
χ (C7 ) = 3 ..
. v2
χ (esto) = 4C
4
χ (esto otro) = 4
v v
x1 ≥ 6 6
x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8
v3
x1 < 6, x 2 < 8
A2 C2
A1 v5
A − A1 − A2 v4
A12 C3

Figura 2.9: Demostración de los lemas 1 y 2

Ahora cada componente es un subgrafo acíclico y, por hipótesis de inducción

ei ≤ n i − 1 i = 1, 2, . . . m

Sumando à m !
m
X m
X X
ei ≤ (n i − 1) = ni −m
i=1 i=1 i=1
En el presente caso, rige la desigualdad m ≥ d y se tiene entonces

e−d ≤n−1−m es decir e ≥n−1+d −m ≤n−1

como se quería demostrar.


Existen numerosas formulaciones equivalentes de la definición de árbol; el teorema
siguiente resume las fundamentales.
Teorema 17. Sea G = (V, E) un grafo no dirigido. Las siguientes afirmaciones son
equivalentes.
1. G es un árbol
2. Dos vértices cualesquiera de G están conectados por un único camino simple
3. G es conexo, pero si se le suprime una arista cualquiera, deja de serlo.
4. G es conexo y |E| = |V | − 1
5. G es acíclico y |E| = |V | − 1
6. G es acíclico, pero si se le añade una arista, deja de serlo
Demostración. 1 ⇒ 2) Sean u, v ∈ V . Como G es conexo, existe un camino simple
entre ellos. Si existen dos caminos simples distintos entre ambos vértices, se dará la
situación de la figura 17: los caminos p y p 0 divergen por primera vez en el vértice w
y vuelven a converger en el vértice z, pasando por vértices diferentes x e y. Como

37

5
+
6
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2
χ (C7 ) = 3
χ (esto) = 4
χ (esto otro) = 4
x1 ≥ 6
p
x2 ≥ 8
x v
x1 ≥ 6, x 2 ≥ 8
x1 < 6, x 2 < 8 u w
A2 z
A1 y
A − A1 − A2
p0
A12

Figura 2.10: Demostración de la implicación 1 ⇒ 2 en el teorema 17

resultado, es posible construir un ciclo, contra la hipótesis. Por tanto, no pueden existir
dos caminos simples distintos entre u y v.
2 ⇒ 3) Evidentemente, G es conexo. Si se suprime la arista (u, v) de G, los vértices
u y v quedan desconectados, pues, por hipótesis, dicha arista era el único camino simple
que los conectaba.
3 ⇒ 4) Una vez más, la conexión de G es parte de la hipótesis. Por otro lado, G
es acíclico, puesto que si tuviese un ciclo, podría suprimírsele una arista sin perder la
conexión. Por tanto, de los lemas precedentes de deduce que |E| = |V | − 1.
4 ⇒ 5) Si suprimimos una arista de G, deja de verificarse la desigualdad |E| ≥
|V | − 1; por tanto, de la implicación anterior se sigue que G es acíclico. La igual-
dad |E| = |V | − 1 es parte de la hipótesis.
5 ⇒ 6) Al añadir una arista a G, se viola la desigualdad |E| ≤ |V | − 1 y el
contrarrecíproco del lema 2 implica que G deja de ser acíclico.
6 ⇒ 1) Sean u y v dos vértices distintos de G (si no los hay la implicación es
trivial). Si existe una arista (u, v), los dos vértices son mutuamente accesibles; si no,
la adición de (u, v) a E(G) provoca la aparición de un ciclo C del que dicha arista
es obviamente miembro. Suprimiendo (u, v) de C obtenemos un camino que conec-
ta u y v.

2.6.1. Arboles enraizados


Un árbol enraizado es un árbol en el que marcamos uno de los vértices como
vértices disinguido. Dicho vértice se denomina raíz del árbol. Por ejemplo, el árbol de
la figura 2.11 tiene por raíz el nodo 7. Como puede verse, en los árboles enraizados es
más común llamar nodos a los vértices
Consideremos un nodo cualquiera v de un árbol enraizado de raíz r . Existe un único
camino entre r y v; cualquier nodo presente en ese camino es un ancestro o antecesor
de v. Si w es un ancestro de v, decimos que v es un descendiente de w. Todo nodo
es, por definición, ancestro de sí mismo; un ancestro de v diferente a él es un ancestro
propio. Un descendiente propio se define de forma análoga.
El subárbol con raíz en v es el subárbol inducido por los descendientes de dicho
vértice.
Supongamos que la última arista del (único) camino entre la raíz y un nodo v
es (w, v). En ese caso, decimos que w es el padre de v, y que v es hijo de w. Dos
nodos que tienen el mismo padre son hermanos. Un nodo sin hijos es una hoja o nodo
externo; en caso contrario, es un nodo interno. El número de hijos de un nodo es su
grado; obsérvese que, en este contexto, el grado de un nodo es una unidad inferior a lo
definido en la sección 2.2.2. Si todos los nodos de un árbol tienen grado a lo sumo m,

38
H
I
J
3
+

5
+
6
Lebrel 12
χ (K 5 ) = 5
χ (K 3,3 ) = 2
7
χ (C7 ) = 3
A
χ (esto) = 4
B
χ (esto otro) = 4 6 8 9
C
x1 ≥ 6
D
x2 ≥ 8
E
x1 ≥ 6, x 2 ≥ 8
F 3 4 5 10 11 12
x < 6, x 2 < 8
G1
A2
H
A1
I
A − A1 − A2
J
A12 1 2
3
+
Figura 2.11: Arbol de doce nodos enraizado en el nodo 7

5
+
Abad
6
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2 Abascal Álvarez Zapatero Zorrilla
χ (C7 ) = 3
χ (esto) = 4
χ (esto otro) = 4
x1 ≥ 6 Bastardo González Guzmán
x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8
x1 < 6, x 2 < 8
A2
A1
A − A1 − A2 Cazorla Cobas Dehesa Herrero
A12

Figura 2.12: Buscando al abonado Dehesa

el árbol es m-ario. Así, en un árbol ternario cada nodo tiene, a lo sumo, tres hijos;
posiblemente, menos.
Definimos la profundidad de un nodo v como la longitud del camino de la raíz a v.
La altura de un árbol es el máximo de las profundidades de sus nodos. El árbol de la
figura 2.11 tiene altura 3, puesto que los nodos 1 y 2 tienen ambos dicha profundidad.
El subárbol con raíz en el nodo 9 tiene altura uno.
Un árbol enraizado en el que los hijos de cada nodo tienen asignado un orden es
un árbol ordenado. Esto significa que si un nodo tiene k hijos, hay un primer, segundo,
. . . , k-ésimo hijo.
El interés de los árboles reside en su uso como estructuras de datos para clasificar
información. Por ejemplo, el árbol de la figura 2.6.1 codifica un índice de una base de
datos de abonados telefónicos. El árbol es ordenado y cuaternario; tiene, además, la
propiedad de que los datos residentes en una rama son siempre anteriores a los datos
que residen en ramas situadas a su derecha. Esto lo convierte en un árbol de búsqueda.
Para localizar al abonado Dehesa, es suficiente encontrar qué hijo del nodo raíz lo

39
contiene, lo que se determina de inmediato. Prosiguiendo recursivamente de esta forma,
llegamos a encontrar al abonado en un número de pasos igual, a lo sumo, a la altura del
árbol de búsqueda.
¿Cuál podría ser esa altura en el caso de tener un millón de abonados?
Teorema 18. Sea T un árbol m-ario de altura h. Entonces, el número de nodos n del
árbol satisface la desigualdad
m h+1 − 1
n≤
m−1
Dicho de otro modo, un árbol m-ario de n nodos tiene que tener altura mínima dada
por
h ≥ −1 + logm ((m − 1)n + 1)
En particular, un árbol binario satisface las desigualdades siguientes

n ≤ 2h+1 − 1
h ≥ −1 + log2 (n + 1)

Demostración. Si cada nodo tiene a lo sumo m hijos, habrá a lo sumo un nodo de


nivel 0 (el nodo raíz); m nodos de nivel 1 (sus hijos); m 2 nodos de nivel 2 (sus nietos);
m 3 nodos de nivel 3 (sus bisnietos); y, en general, el nivel k tendrá una población
máxima de m k nodos. Por lo tanto, el número total de nodos será inferior a

m h+1 − 1
1 + m + m2 + m3 + · · · + mh =
m−1
que es lo que se quería demostrar. Las demás desigualdades se obtienen despejando la
altura y particularizando para m = 2.
Como ejemplo, en el caso de un millón de abonados, tendríamos un árbol de altura
mínima
h ≥ −1 + log4 (3·106 + 1) = 9,758
luego un árbol de altura h = 10 podría albergar nuestro millón de abonados, si está co-
rrectamente equilibrado. En esta hipótesis, nuestra búsqueda concluiría tras la lectura
de once registros de nuestra base de datos a lo sumo, lo que no está nada mal.

2.6.2. Arboles binarios


Aunque podríamos definir estos árboles a partir de lo estudiado en las secciones
anteriores, seguiremos otra vía mucho más conveniente. Un árbol binario T es una
estructura definida en un conjunto finito de nodos, que, o bien
no contiene nodos, o bien
contiene tres conjuntos distintos de nodos: un nodo raíz, un árbol binario llamado
el subárbol izquierdo y otro llamado el subárbol derecho.
Observemos que está permitido que un árbol binario sea vacío: se trata del árbol
vacío o árbol nulo. Dado un árbol binario de raíz r , si el subárbol izquierdo no es
vacío, su raíz es el hijo izquierdo de r ; el hijo derecho de define análogamente. Es
posible, pues, que un hijo izquierdo o derecho estén ausentes (cuando sea vacío el
correspondiente subárbol).

40
P REORDEN(T ) P OSTORDEN(T ) I NORDEN(T )
1 if T = NIL 1 if T = NIL 1 if T = NIL
2 then no hacer nada 2 then no hacer nada 2 then no hacer nada
3 else V ISITA(T ) 3 else P OSTORDEN(T.i z) 3 else I NORDEN(T.i z)
4 P REORDEN(T.i z) 4 P OSTORDEN(T.de) 4 V ISITA(T )
5 P REORDEN(T.de) 5 V ISITA(T ) 5 I NORDEN(T.de)

Figura 2.13: Pseudocódigo de los recorridos de un árbol binario

Es preciso hacer notar que un árbol binario no es simplemente un árbol ordenado en


que cada nodo tiene a lo sumo dos hijos. En tal caso, no podríamos decidir, para un nodo
con un solo hijo, si éste es el izquierdo o el derecho. El árbol binario, pues, proporciona
“más estructura” que un simple árbol ordenado. Un nodo puede tener solamente un hijo
izquierdo o solamente un hijo derecho.

2.7. Recorridos de grafos


Un recorrido de un grafo es un procedimiento que origina una enumeración or-
denada de sus vértices. Comenzaremos nuestro estudio de los recorridos por el caso
particular de los árboles binarios

2.7.1. Recorridos de árboles binarios


Recordemos que un árbol binario se define como
un grafo vacío, o bien
un nodo raíz más dos árboles binarios que constituyen el subárbol izquierdo y el
derecho
Esta definición recursiva es de especial interés cuando recorremos el árbol. Pode-
mos definir tres maneras de visitar todos y cada uno de los vértices según se ve en la
figura 2.13. Aplicando estos procedimientos al árbol de la figura 2.14(a), se obtienen
las secuencias que se muestran en la tabla adjunta 2.14(b).
Estos tres tipos de recorrido se relacionan con tres notaciones usuales para las ex-
presiones algebraicas
infija La notación del álgebra corriente exige que los operadores vayan en medio de
sus dos operandos. Por ejemplo, la expresión

3 + 5 ∗ (6 + 12)

está en notación infija.


postfija Se obtiene colocando cada operador binario a continuación de sus operan-
dos. Al contrario que la infija, no requiere paréntesis ni reglas de precedencia
para resolución de la ambigüedad. La expresión anterior, en notación posfija se
convierte en
3 5 6 12 + ∗+

41
H
I
J
3
+

5
+
6
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2
e
χ (C7 ) = 3
χ (esto) = 4
χ (esto otro) = 4 a g
x1 ≥ 6
x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8
c b j f
x1 < 6, x 2 < 8
A2
A1
A − A1 − A2
d
A12 h

(a) Árbol binario

Tipo Resultado
Inorden c a b e j g h f d
Preorden e a c b g j f h d
Postorden c b a j h d f g e

(b) Recorridos

Figura 2.14: Recorridos de un árbol binario

La notación postfija (también llamada polaca inversa es muy adecuada para su


interpretación por máquinas, lo que no es de extrañar a la luz del ejemplo ante-
rior. Es muy sencillo escribir un programa que interprete de forma directa expre-
siones postfijas empleando una pila como estructura de datos auxiliar
prefija Se obtiene colocando los operadores binarios como prefijos de los operandos.
Así:
+ 3 ∗ 5 + 6 12
No es de mucho uso, pero aún pervive en el lenguaje Lisp, donde el cálculo
anterior se escribiría como

(+ 3 (* 5 (+ 6 12)))

a pesar de que tampoco son precisos paréntesis ni reglas de precedencia para


resolución de ambigüedades (el uso de paréntesis en Lisp tiene un significado
distinto).
Las tres notaciones resultan de recorrer en in-, pre- y postorden un árbol sintáctico
de la expresión, como puede comprobarse en la figura 2.7.1.

2.7.2. Recorridos eulerianos


El problema que estudiamos a continuación se encuentra en el origen mismo de la
teoría de grafos y de otra importante rama de la Matemática: la topología. Se trata del
célebre problema de los puentes de Königsberg.

42
C4
C C5
D C7
E P6
F Cm
G Q0
H Q1
I Q2
J Q3
Q4
+
Q5
Abad
Abascal
Álvarez
Bastardo
χ (K 5 ) = 5 Cobas
χ (K 3,3 ) = 2 Cazorla
χ (C7 ) = 3 Dehesa +
χ (esto) = 4González
χ (esto otro) = 4 Guzmán Recorrido Expresión
x1 ≥ 6 Herrero
3 ∗ Inorden 3 + 5 ∗ 6 + 12
x2 ≥ 8 Lebrel Postorden 3 5 6 12 + ∗+
Zapatero
x1 ≥ 6, x 2 ≥ 8 Preorden +3 ∗ 5 + 6 12
x < 6, x < 8 Zorrilla
1 2
5 +
A2
A1
A − A1 − A2
A12 6 12
E
F (a) (b)
G
H
Figura 2.15:
I a) Árbol sintáctico y b) notaciones infija, prefija y postfija para la expresión
3 + 5 ∗J(6 + 12)
3
+

5
+
6
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2
χ (C7 ) = 3
χ (esto) = 4
χ (esto otro) = 4 B
x1 ≥ 6
x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8
x1 < 6, x 2 < 8 A D
A2
A1
A − A1 − A2
A12 C

Figura 2.16: Los puentes de Königsberg

43
J
3
+

5
+
6
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2
χ (C7 ) = 3
χ (esto) = 4 A
χ (esto otro) = 4
x1 ≥ 6
x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8 D
x1 < 6, x 2 < 8B
A2
A1
A − A1 − A2
A12 C

Figura 2.17: Los puentes de Königsberg

La ciudad de Königsberg, capital de Prusia y patria del célebre filósofo Immanuel


Kant, es atravesada por el río Pregel. En medio del río encontramos dos islas que se
encuentran comunicadas con las orillas y entre sí por siete puentes, como se muestra
en la figura 2.16.
Los habitantes de Königsberg se plantearon si era posible dar un paseo que recorrie-
se los siete puentes sin repetir ninguno (y, naturalmente, sin mojarse). Tras numerosos
intentos infructuosos, la solución de este divertido problema combinatorio fue aporta-
da por el matemático suizo Leonhard Euler en 1736. Euler no solamente demostró la
imposibilidad del pretendido paseo, sino que, además, dio un sencillo criterio general
para resolver cualquier problema del mismo tipo.
Si prescindimos de detalles anecdóticos, es fácil ver que la búsqueda de un paseo
por los puentes equivale a encontrar un camino que recorra todas las aristas del grafo
de la figura 2.17 sin repetir ninguna (naturalmente, los vértices pueden repetirse). O,
como suele formularse en las revistas de matemática recreativa, dibujar la figura de un
solo trazo sin levantar el lápiz del papel.
Definición 9. Sea G un grafo no dirigido. Denominamos recorrido euleriano de G
a un camino que pasa por todas las aristas de G exactamente una vez. Es decir, si
C = (v1 , v2 , . . . , vn ), la sucesión de aristas (v1 , v2 ), (v2 , v3 ), (v3 , v4 ), . . . , (vn−1 , vn )
contiene cada arista de G exactamente una vez. Si además C es cerrado, denominamos
al recorrido un circuito euleriano
El grafo del problema de los puentes no es un grafo dirigido en el sentido de la
definición dada en 2.2.1, sino un multigrafo, en el que permitimos que haya más de
una arista distinta entre dos vértices. Aunque no hemos definido rigurosamente estos
objetos, todo lo que probaremos en la presente sección se extiende a ellos sin dificultad.
Decimos que un grafo es euleriano si posee un recorrido euleriano. Obviamente,
un grafo euleriano tiene que ser conexo. Pero, además, se necesitarán condiciones adi-
cionales para garantizar la existencia de recorridos eulerianos. Tras bastantes ensayos
con el grafo de los puentes, parece claro que no podemos encontrar una solución.
La razón está en la paridad de los vértices del grafo. Decimos que un vértice v de
un grafo no dirigido G es par (respectivamente, impar) si su grado es un entero par
(resp. impar). Por ejemplo, en el grafo de la figura 2.17, todos los vértices son impares.
Ahora bien, si intentamos dibujarlo de un solo trazo, cada vez que pasemos por un vér-
tice, entraremos en él por una arista y saldremos por otra; ambas quedarán inutilizadas
para su recorrido posterior. Excepto los vértices inicial o final de la trayectoria, todos
los demás (vértices de paso) tendrán tantas aristas de entrada como de salida; por tanto,
un número par de ellas, y su grado será par. Esto nos lleva al teorema de Euler.

44
Teorema 19. Sea G un grafo conexo no dirigido. Entonces, G posee un circuito eule-
riano si y solamente si G carece de vértices impares.

Demostración. Supongamos primero que G posee un circuito euleriano dado por la


sucesión de vértices C = (v0 , v1 , v2 , . . . , vn ). Por definición, cada arista del grafo apa-
rece en la sucesión (v0 , v1 ), . . . , (vn−1 , vn ) exactamente una vez, y al ser el recorrido
cerrado, v0 = vn .
Sea v un vértice cualquiera de G. Si v es el único vértice de G, no hay nada que
demostrar. Si no es así, v tendrá alguna arista incidente puesto que G se supone conexo,
y esto obliga a que v aparezca cierto número de veces en el camino C.
En cada aparición de v, éste figura dos veces; si, por ejemplo, está en la posición
k-ésima de C, v = vk y tenemos dos aristas (vk−1 , vk ) y (vk , vk+1 ) incidentes en vk .
Como estas aristas solamente figuran una vez en el recorrido, obtenemos que el número
de aristas incidentes en v es igual al doble del número de apariciones de v en C, y, como
todas las aristas son visitadas por C, el grado de v es forzosamente un número par.
La única excepción de este argumento se encuentra en los extremos: cuando k =
0, n, las dos aristas (vn , v0 ) y (v0 , v1 ) se añaden al recuento de aristas incidentes en v0
según el argumento anterior, de modo que también v0 = vn debe ser par.
La implicación contraria se demuestra por inducción sobre el número de vértices.
De hecho, vamos a demostrar esta implicación para multigrafos dirigidos.
Supongamos que G es un multigrafo conexo todos cuyos vértices son de grado par.
En el caso de un grafo de un solo vértice, el circuito euleriano se obtiene de forma
trivial. Así pues, sea |V | = n y supongamos que todo multigrafo conexo de menos
de n vértices, todos pares, posee un circuito euleriano.
Sea v un vértice cualquiera de G; por hipótesis de conexión, el grado d de v debe ser
un número par estrictamente mayor que cero. Consideremos los vérticesi v 1 , v2 , . . . , vd
adyacentes a v, como se muestran en la figura 2.18(a). Si suprimimos v y las aristas
incidentes en él, obtenemos el grafo G − v; la supresión de las aristas indicadas se
muestra en gris en la figura 2.18(b). Ahora, los vértices vi resultan ser todos impares
tras la supresión. Adjuntando las aristas (v1 , v2 ), (v3 , v4 ), . . . , (vd−1 , vd ) obtenemos
un nuevo grafo en el que todos los vértices vuelven a ser de grado par; no obstante,
el número de vértices es ahora n − 1. Además, el nuevo grafo es obviamente conexo
(obsérvese que, por la adjunción de las nuevas aristas, podemos obtener un multigrafo).
Por lo tanto, se aplica la hipótesis de inducción, y deducimos que existe un recorrido
euleriano. El paso por las aristas auxiliares de dicho circuito se produce en sentidos
imprevisibles que indicamos con flechas en 2.18(b).
Queda convertir este circuito euleriano en uno para G. Para ello, basta obser-
var que la nueva arista (vi−1 , vi ) siempre puede ser reemplazada por el recorrido de
(vi−1 , v), (v, vi ) (y en sentido contrario si es necesario), como se muestra en la figu-
ra 2.18(c). Con esto obtenemos un circuito euleriano de G y el teorema queda demos-
trado.

De este teorema se deduce un interesante corolario.

Corolario 1. Sea G un grafo conexo no dirigido. Si G tiene exactamente dos vértices


impares, G posee un recorrido euleriano. Recíprocamente, si G posee un recorrido eu-
leriano, sus vértices extremos son los únicos vértices impares de G (si son diferentes).

Demostración. Sean v y w los vértices impares en cuestión, y añadamos a G la aris-


ta (v, w) (observemos que, una vez más, de esta adjunción puede resultar un multi-
grafo). Con esto, obtenemos un grafo en las hipótesis del teorema anterior, que posee

45
Q2
Zorrilla Q3 Zorrilla
A Q4 A
B Q5 B
C C
Abad
D D
Abascal
E E
Álvarez
F F
Bastardo
G G
Cobas
H H
Cazorla
I I
Dehesa
J J
González
3 3
Guzmán
+ +
Herrero
∗ ∗
Lebrel
5 Zapatero 5
+ +
Zorrilla
6 6
A
12 12
χ (K 5 ) = 5 B χ (K 5 ) = 5
χ (K 3,3 ) = 2 C χ (K 3,3 ) = 2
v1 v1
χ (C7 ) = 3 vd D χ (C7 ) = 3 vd
χ (esto) = 4 E χ (esto) = 4
χ (esto otro) = 4 F
v2 otro) = 4
χ (esto v2
x1 ≥ 6 G x1 ≥ 6
x2 ≥ 8 .. v H x2 ≥ 8 .. v
. I .
x1 ≥ 6, x 2 ≥ 8 x1 ≥ 6, x 2 ≥ 8
x1 < 6, x 2 < 8 J x1 < 6, x 2 < 8
3 v3 v3
A2 A2
+
A1 A1
A − A1 − A2 v5 ∗ A − A1 − A2 v5
A12 v4 5 A12 v4
+
(a) 6 (b)
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2 v1
χ (C7 ) = 3 vd
χ (esto) = 4
χ (esto otro) = 4 v2
x1 ≥ 6
x2 ≥ 8 .. v
x1 ≥ 6, x 2 ≥ 8 .
x1 < 6, x 2 < 8
v3
A2
A1
A − A 1 − A 2 v5
A12 v4

(c)

Figura 2.18: Demostración del teorema de Euler: (a) antes de suprimir v. (b) Suprimi-
do v y añadidas las aristas auxiliares, el grafo resultante posee un circuito euleriano.
(c) Construcción del circuito euleriano para G

46
un circuito euleriano. Forzosamente, el circuito para por la arista (v, w) exactamente
una vez. Suprimiéndola del circuito obtenemos un recorrido del grafo G. Recíproca-
mente, un recorrido euleriano de vértices extremos v y w se completa, añadiendo la
arista (v, w), obteniendo un circuito euleriano del multigrafo resultante. Por lo tanto,
éste tiene todos sus vértices pares, de lo que se deduce que los vértices v y w eran
impares al principio.

Por lo tanto, un grafo tiene un recorrido euleriano si y solamente si el número de


vértices impares es cero o dos. Que dicho número no pueda ser la unidad es consecuen-
cia del siguiente

Teorema 20. Sea G un grafo no dirigido. El número de vértices impares de G es


siempre par.

Demostración. Sean {v1 , v2 , . . . , vn } los vértices de G y d1 , d2 , . . . , dn sus respectivos


grados. El número de extremos que poseen las aristas de G es, evidentemente, 2|A|,
puesto que cada arista tiene dos extremos. Ahora bien, podemos contar dicho número
de extremos sumando los grados de todos los vértices, puesto que dichos grados son el
número de extremos de aristas que confluyen en un vértice dado. De modo que se tiene
n
X
di = 2|A|
i=1

Ahora bien, esto significa que la suma de los grados de los vértices es par. Como la
suma de dos números impares es siempre par, el número de di0 s no puede ser impar,
puesto que el resultado de la suma sería impar en ese caso. Por tanto, hay un número
par de vértices impares.

Es decir, un grafo nunca podrá tener un solo vértice impar (ni tres, ni cinco. . . ). Este
teorema se conoce a veces como “lema del apretón de manos”, porque puede ponerse
en la siguiente forma: en una fiesta, el número de personas que estrechan la mano a una
cantidad impar de gente tiene que ser necesariamente par. Es una consecuencia directa
de que en un apretón siempre intervienen dos manos.

2.7.3. Caminos hamiltonianos


Un problema de enunciado análogo, pero cuya simplicidad es tremendamente en-
gañosa, es la determinación de si un grafo posee un camino hamiltoniano.

Definición 10. Sea G un grafo (dirigido o no). Un camino C en G se dice que es ha-
miltoniano si C pasa por cada vértices del grafo exactamente una vez. Un ciclo que
pasa exactamente una vez por cada vértice (excepto el vértice inicial, que aparece
también como final), se denomina ciclo hamiltoniano

Al contrario que en el caso euleriano, aquí no precisamos recorrer todas las aris-
tas; simplemente nos interesa visitar cada vértice exactamente una vez. Aunque no se
menciona explícitamente, los caminos hamiltonianos son siempre simples, lo que se
deduce directamente de la definición.
El nombre de este tipo de recorrido deriva de un puzzle ideado por Sir William
Rowan Hamilton (1805–1865). Básicamente, Hamilton pedía encontrar un ciclo ha-
miltoniano en un grafo isomorfo al retículo de vértices de un dodecaedro. La solución

47
J
Lebrel
Zapatero 3
+
Zorrilla

A
5
B
+
C
6
D
12
χ (KE )=5
5
F
χ (K 3,3 ) = 2
G )=3
χ (C 7
H
χ (esto) = 4
I =4
χ (esto otro)
Jx ≥ 6
1
3x ≥ 8
2
+
x1 ≥ 6, x 2 ≥ 8
x1 < 6,∗x 2 < 8
5 A
2
+
A1
A − A61 − A2
12 A
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2
Figura 2.19: El puzzle de Hamilton
χ (C7 ) = 3
χ (esto) = 4
χ (esto otro) = 4 v3 vm
vm+1
x 1 ≥ 6 v2
x2 ≥ 8
x1 ≥ 6, x 2 ≥ 8
x1 < 6, x 2 < 8
A2 vn
A1
A − A1 − A2
A12 v1

Figura 2.20: Construcción de un camino hamiltoniano en un torneo.

es bastante sencilla. Sin embargo, dado un grafo arbitrario, no resulta fácil determinar
si posee un ciclo hamiltoniano o no.
De hecho, no se conoce ninguna caracterización fácil de los grafos hamiltonianos, y
es probable que nunca se conozca ninguna. La razón de ello es que el problema del ciclo
hamiltoniano es NP-completo. No es sencillo definir esta propiedad; baste mencionar
que una solución eficiente del problema del ciclo hamiltoniano permitiría resolver de
golpe una vasta familia de problemas computacionales enormemente difíciles, y existen
sospechas muy fundadas de que tal solución eficaz no puede existir.
Esto no implica que, para determinados grafos de tipos muy particulares, no sea po-
sible determinar la existencia de caminos hamiltonianos (no necesariamente cerrados).
Un ejemplo de ello lo constituyen los torneos definidos en la sección 2.5.2.

Teorema 21. Todo torneo posee un camino hamiltoniano

Demostración. Por inducción sobre el número de vértices n = |V |. El teorema es


trivial para n = 1.
Consideremos entonces un torneo G de n vértices y supongamos que todo torneo
de n − 1 vértices posee un camino hamiltoniano. Sea v = v1 un vértice de G y con-
sideremos el grafo G − v que se obtiene suprimiendo v y todas las aristas que entran
o salen de dicho vértice. El grafo resultante tiene n − 1 vértices y, por hipótesis de
inducción, posee un camino hamiltoniano. Sea éste C = (v2 , v3 , . . . , vn ); numeramos
los vértices en el orden que dicho camino nos proporciona, por conveniencia. Nuestra
notación implica, naturalmente, que el camino supuesto por hipótesis va de v 2 a vn , no
en sentido contrario.
Ahora pueden darse tres posibilidades:

48
1. El torneo posee una arista (v1 , v2 ). En ese caso, puede completarse el camino C
añadiéndole al principio esta arista y obteniéndose un camino hamiltoniano C 0 =
(v1 , v2 , . . . , vn ) para G, con lo que el teorema quedaría demostrado.

2. El torneo posee una arista (vn , v1 ). En ese caso, puede completarse el camino C
añadiéndole al final esta arista y obteniéndose un camino hamiltoniano C 0 =
(v2 , . . . , vn , v1 ) para G, con lo que el teorema quedaría demostrado.

3. Si ninguna de las circunstancias anteriores se da, la definición de torneo obliga


a que G posea las aristas (v2 , v1 ) y (v1 , vn ). Para cada vértice vk , con 2 ≤ k ≤
n, debe existir una arista ak con ak = (v1 , vk ) o ak = (vk , v1 ), puesto que
así lo exige el hecho de que G sea un torneo. Esta situación se describe en la
figura 2.7.3.
Consideremos entonces la sucesión de aristas a2 , a3 , a4 , . . . , an . En nuestro caso,
la primera arista entra en v1 y la última sale de v1 . Por lo tanto, tiene que haber
una última arista que entre en v1 en esa sucesión, antes de llegar a an . Sea dicha
arista am . Entonces, si reemplazamos la arista vm , vm+1 de C por el par de aristas
am y am+1 obtenemos

C 0 = (v2 , v3 , . . . , vm , v1 , vm+1 , vm+2 , . . . , vn )

que constituye el deseado camino hamiltoniano, y el teorema también es cierto


para G en este caso.

2.7.4. Recorridos en anchura y profundidad


Los algoritmos clásicos de teoría de grafos se basan en dos procedimientos bá-
sicos de recorrido denominados recorrido en anchura (breadth-first) y recorrido en
profundidad (depth-first). Aunque admiten muchas formulaciones (por ejemplo, co-
mo algoritmos de búsqueda en árboles), aquí estableceremos su funcionamiento en el
caso de grafos no dirigidos; para otros contextos funcionan exactamente igual con las
modificaciones obvias.
Consideremos el grafo de la figura 2.21(a), en la cual mostramos además su re-
presentación por listas de adyacencia (2.21(b)). Vamos a enunciar y ejecutar dos al-
goritmos que producen una enumeración ordenada de cada vértice del árbol. En cada
algoritmo, procedemos visitando cada vértice y añadiendo sus vecinos a una lista de
vértices pendientes. La visita de un vértice consiste en marcarlo como visitado y, si
procede, tratar la información que contiene y emitir su nombre o algún otro dato como
resultado de la visita. Hecho esto, seguimos tratando los vértices que queden pendien-
tes.
A grandes rasgos, los algoritmos de recorrido se describen en pseudocódigo en la
figura 2.22. El recorrido en profundidad admite una formulación recursiva muy sim-
ple, mientras que el recorrido en anchura debe formularse en términos de una cola
de vértices pendientes de visitar. En la cola, que inicialmente contiene sólo el vértice
de partida, los vértices se mantienen en orden; se extraen del principio con la opera-
ción S ACA P RIMERO y se añaden al final con la operación E NCOLA. Los vértices ya
visitados no se introducen en la cola en dicha operación.
En la tabla de la figura 2.23(a) podemos observar la operación del algoritmo de
recorrido en anchura. En cada paso, se toma el primer elemento de la cola, que se anota

49
C
D
E
F
G
H
I
J

+

+ 1 2 3 Vértice Adyacentes
1 {2, 4}
12 2 {1, 3, 5}
χ (K 5 ) = 5 3 {2, 5}
χ (K 3,3 ) = 2 4 {1, 5, 7, 8}
χ (C7 ) = 3 4 5 6 5 {2, 3, 4, 6, 8, 9}
χ (esto) = 4 6 {5}
χ (esto otro) = 4 7 {4, 8, 10}
x1 ≥ 6 8 {4, 5, 7, 9, 10}
x2 ≥ 8 9 {5, 8}
x1 ≥ 6, x 2 ≥ 8 7 8 9
10 {7, 8}
x1 < 6, x 2 < 8
A2
A1
A − A1 − A2 10
A12

(a) Grafo ejemplo (b) Lista de adyacencia

Figura 2.21: Datos de partida para recorridos en anchura y profundidad

como visitado, y se examina su lista de adyacencia. Los vecinos que no hayan sido
ya visitados se añaden al final de la cola antes de proceder a la siguiente iteración.
Como resultado de este proceso, obtenemos que el recorrido construye un árbol como
el mostrado en 2.23(b). Cada nodo figura en este árbol como hijo del nodo “culpable”
de su ingreso en la cola Q. Un árbol de esta forma es un árbol abarcador (spanning
tree): cubre todos los vértices del grafo.
El recorrido de los vértices en profundidad es más difícil de visualizar al ser recur-
siva la formulación natural del algoritmo 2.22(a). La idea consiste en visitar en cada
paso cualquiera de los nodos vecinos aún no visitados, hasta que llegamos a un callejón
sin salida (es decir, no hay más vecinos inmediatos sin visitar). En ese caso es preciso
volver atrás y reiniciar nuestro paseo en el último punto en el que dejamos sin explorar
alguna posibilidad.
Una forma menos vaga de expresar este procedimiento es la forma no recursiva
del recorrido en profundidad que se esboza en el algoritmo de la figura 2.22(c). En
esta versión se emplea una pila S, en la que se almacenan los vértices pendientes de
ser recorridos. La operación de una pila es inversa a la de una cola: los elementos se
introducen en ella por delante (con la operación P USH) y se sacan de ella también del
principio (P OP).
Inicialmente introducimos en la pila sólo el vértice de partida. Mientras la pila no se
vacíe, tomamos el primer elemento de la pila (que es el último introducido, al revés que
en una cola); si no está marcado como visitado ya, lo visitamos; y finalmente apilamos
su lista de adyacentes (salvo los que estén marcados como visitados, que no se añaden).
Un ejemplo de ejecución de este proceso aparece en la tabla de la figura 2.24(a),
donde vamos viendo la historia de los contenidos de la pila y los elementos que van
visitándose en sucesión. Como resultado del proceso obtenemos también el diagra-
ma 2.24(b), que es otro árbol abarcador del grafo inicial. Una vez más, las aristas del

50
C4
C5
C7
P6
Cm
Q0
Q1
Q2
Q3
Q4
Q5
Abad
Abascal
B READTH -F IRST(G, v)
D EPTH -F IRST(G, v) 1 QÁlvarez
← [v]
1 V ISITA(v) 2 Bastardo
while Q 6= ∅
2 for each w in Ad j (v) 3 doCobasw ← S ACA P RIMERO(Q)
3 do D EPTH -F IRST(G, w) 4 CazorlaV ISITA(w)
5 Dehesa
E NCOLA(Ad j (w))
González
(a) En profundidad Guzmán
Herrero(b) En anchura
Lebrel
Zapatero
D EPTH -F IRST-NR(G, v)
1 S ← vacio Zorrilla
2 P USH(v) A
3 while S 6= ∅ B
4 do w ← P OP(S) C
5 if w no visitado D
6 then E
7 V ISITA(w) F
8 next ← Ad j (w) G
9 next ← next − V ISITADOS H (next)
10 P USH(next) I
11 J
3
+
(c) En profundidad, no recursivo∗
5
+
Figura 2.22: Recorridos en anchura (a) y en profundidad (b, c); pseudocódigos
6
12
χ (K 5 ) = 5
χ (K 3,3 ) = 2
Visitados Cola Q χ (C7 ) = 3
– 1 χ (esto) = 4 1 2 3
1 2 4 χ (esto otro) = 4
12 453 x1 ≥ 6
124 5378 x2 ≥ 8 6 5 4
1245 3 7 8 6 9x ≥ 6, x ≥ 8
1 2
12453 7 8 6 9 x < 6, x < 8
1 2
124537 8 6 9 10 A2 7 8 9
1245378 6 9 10 A1
12453786 9 10 A − A1 − A2
124537869 10 A12 10
1 2 4 5 3 7 8 6 9 10 –
(b) Arbol abarcador
(a) Traza

Figura 2.23: Funcionamiento del algoritmo B READTH -F IRST: (a) Traza del algoritmo,
con la historia de vértices visitados y el estadode la cola en cada iteración, (b) árbol
abarcador resultante del recorrido

51
E
F
G
H
I
J
3
+

5
+
6
12
Pila Visitado χ (K 5 ) = 5
1 1 χ (K 3,3 ) = 2
24 4 χ (C7 ) = 3 1 2 3
2875 5 χ (esto) = 4
2872368 χ8(esto otro) = 4
2 8 7 2 3 6 9 7 10 10 x1 ≥ 6 4 5 6
287236977 7 x2 ≥ 8
28723697 – x1 ≥ 6, x 2 ≥ 8
2872369 9x1 < 6, x 2 < 8 7 8 9
287236 6 A2
28723 3 A1
2872 2 A − A1 − A2
10
287 – A12
28 –
2 – (b) Arbol abarcador

(a) Evolución del stack

Figura 2.24: Funcionamiento del algoritmo D EPTH -F IRST: (a) Traza del algoritmo,
con la historia de vértices visitados y el estado de la pila en cada iteración, (b) árbol
abarcador resultante del recorrido. Las flechas grises indican los procesos de backtrac-
king.

grafo relacionan cada vértice con el “culpable” de su inclusión en la pila de pendientes.


Las flechas grises indican los momentos en que se produjo vuelta atrás (backtracking)
al haberse encontrado un callejón sin salida.

2.7.5. Caminos mínimos, MST y demás


Los algoritmos de recorrido de la sección 2.7.4 son la base de los algoritmos clá-
sicos de teoría de grafos que se estudian en la teoría de Estructuras de Datos y Algo-
rítmica. De hecho, la estructura de datos básica subyacente a las búsquedas en anchura
y profundidad (cola o pila) puede reemplazarse por una estructura más general deno-
minada cola de prioridad, en la que los elementos son recuperados de acuerdo con
un valor de prioridad que se asocia a cada uno. Con valores adecuados de la priori-
dad, se obtienen búsquedas en anchura, en profundidad o recorridos que conducen a
algoritmos para encontrar caminos mínimos o árboles abarcadores.
Estos conceptos se relacionan con el concepto de red. Una red se define como un
grafo a cada una de cuyas aristas se ha asociado un número real, denominado su peso
o coste. En la figura 2.25 tenemos un ejemplo de red. El coste asociado a un camino
se obtiene de la forma obvia: sumando los pesos de las aristas que lo componen, y lo
mismo puede definirse para un subárbol de la red correspondiente.
Se denomina camino mínimo (o camino más corto) entre dos vértices v y w al
camino de peso menor que une los dos vértices. En la red de la figura 2.25, el camino
más corto entre los vértices 1 y 8 es el marcado en línea de trazos. El algoritmo para
encontrar este tipo de caminos es el algoritmo de Dijkstra y se estudiará con profusión
en la asignatura de Estructuras de Datos.

52
H
I
J

+

χ (K 5 ) = 5
χ (K 3,3 ) = 2 2 32
χ (C7 ) = 3 12 21 8
χ (esto) = 4
6 18
χ (esto otro) = 4 1
5
x1 ≥ 6 13 17
14
x2 ≥ 8 8
x1 ≥ 6, x 2 ≥ 8 3 3 15
x1 < 6, x 2 < 8 6 7
A2 24
A1 4 25
A − A1 − A2
A12 69 5

Figura 2.25: Una red con el camino más corto entre 1 y 8 y su MST

Las aristas marcadas con trazo grueso en la misma figura (de pesos 3, 6, 5, 13, 14,
17 y 25) constituyen un árbol abarcador mínimo (en inglés, minimum spanning tree
o MST. Se trata de un árbol que cubre todos los vértices del grafo teniendo el peso
menor posible. Existen dos algoritmos clásicos para encontrar tal MST, los algoritmos
de Kruskal y Prim; serán también objeto de estudio en el futuro.

2.8. Planaridad y coloreado


Se dice que un grafo G = (V, E) (simple, no dirigido y sin bucles) es colo-
reable con n colores, o simplemente n-coloreable, si existe una función f : V →
{1, 2, . . . , n} tal que si u y v son vértices adyacentes, f (u) 6= f (v). Intuitivamente,
esta definición implica que, disponiendo de n colores distintos, podemos colorear los
vértices del grafo de modo que los vértices vecinos se distingan por el color. El menor
número n de colores que resulta suficiente para colorear un grafo G se denomina su
número cromático, y se denota por χ (G).
En la figura 2.26 mostramos algunos ejemplos de grafos con diferentes números
cromáticos.
Vamos a dar algunos teoremas que nos permiten estimar un número de colores
suficiente para el coloreado de ciertos grafos

Teorema 22. Dado un grafo G, las siguientes afirmaciones son equivalentes: a) G es


2-coloreable, b) G es bipartito, y c) G carece de ciclos de longitud impar.

Demostración. La equivalencia de b) y c) fue el contenido del teorema 16; nos queda,


pues, probar la (casi trivial) equivalencia de a) y b).
Si un grafo G admite un coloreado con dos colores, llamémoslo f : G → {1, 2},
denotemos

V1 = {v ∈ V (G) | f (v) = 1}
V2 = {v ∈ V (G) | f (v) = 2}

es decir, los conjuntos V1 y V2 contienen los vértices de color 1 y color 2, respecti-


vamente. Obviamente, estos conjuntos forman una partición de los vértices de V . Al

53
A
B
C
D
E
F
G
H
I
J
2
2
+ 1 2 3 1

1 3
2
+ 1 1
2
6
12 1 2
2 1
5 4
χ (K 5 ) = 5 χ (K 3,3 ) = 2 χ (C7 ) = 3
1 2 1 3

3 4
≥6
x1 1
2 3 2
4
≥ 81
x2
2
x1 ≥ 6, x 2
≥8 1
4
x1 < 6, x 2
<8 2
2 1 3
2 1
A2
A1 3
A − A1 − A2 3 1

A12 χ (esto) = 4 χ (esto otro) = 4

Figura 2.26: Algunos grafos y sus números cromáticos

ser f un 2-coloreado, vértices adyacentes tienen colores distintos: dicho de otro modo,
cada arista va de V1 a V2 , y el grafo es, por tanto, bipartito.
Si G es bipartito, con aristas entre dos conjuntos V1 y V2 exclusivamente, basta
asignar el primer color a los vértices de V1 y el segundo a los de V2 .

El caso de los grafos bipartitos es bastante especial. Un teorema algo más general,
aunque no demasiado potente, nos da una cota superior para el número de colores
preciso en un grafo cualquiera G.

Teorema 23. Si
1(G) = max {deg(v) | v ∈ V (G)}
es el mayor de los grados de los vértices de G, entonces

χ (G) ≤ 1(G)

Dicho de otra manera, si el vértice de mayor grado de G tiene grado d, bastan d + 1


colores para colorear G.

Demostración. Por inducción sobre el número de vértices. Si el grafo tiene un solo


vértice, su grado será cero y el grafo es trivialmente 1-coloreable, o sea que

χ (G) = 1 ≤ 1 = 1(G) + 1

Supongamos ahora que G tiene un número cualquiera |V | de vértices, y que el teorema


que queremos probar es cierto para todos los grafos con menos vértices que |V |. Sea
v un vértice de máximo grado de G, i.e., deg(v) = 1(G). Suprimamos v y todas las
aristas en él incidentes, obteniendo el grafo G 0 = G − v. Evidentemente, G 0 tiene un
vértice menos, y está claro que 1(G 0 ) ≤ 1(G), así que G 0 es (1(G) + 1)-coloreable,

54
por hipótesis de inducción. Ahora bien, si consideramos un (1(G) + 1)-coloreado de
G 0 , podemos extenderlo a un coloreado de G asignando algún color a v. Como el grado
de v es 1(G), alguno de los 1(G) + 1 colores no se ha utilizado en teñir a los vecinos
de v, y ese color podrá utilizarse para teñir a v, con lo que también G será (1(G) + 1)-
coloreable.

Obsérvese que este teorema proporciona un número de colores suficiente, pero pue-
de ser bastante mayor que el mínimo necesario. Por ejemplo, para K 3,3 (véase la figu-
ra 2.26) el teorema dice que cuatro colores bastan, y es así, porque de hecho bastan
dos. El caso del último grafo de la misma figura es especialmente significativo: hay un
vértice de grado 8, luego el teorema garantiza que nueve colores bastan. Sin embargo,
en la práctica vemos que con cuatro es posible colorear el grafo.
El último teorema sobre coloreado que veremos no se demostrará: sería realmente
difícil, por las razones que después veremos.
Definimos un grafo plano como uno que es factible representar en el plano de forma
que sus aristas no tengan intersecciones (salvo en los extremos, claro). Por ejemplo, la
figura 2.26 representa tres grafos planos. Los dos primeros no lo son: aunque no es
obvio, K 5 y K 3,3 son imposibles de dibujar en un plano sin que alguna arista se cruce
con otra.
Una propiedad curiosa de los grafos planos es la siguiente, que enunciamos sin
demostrar:

Teorema 24. Si G es un grafo plano, el número C de regiones conexas en que su


representación divide al plano satisface la relación

C− A+V =2

siendo A y V los números de aristas y vértices, respectivamente.

El teorema al que hacíamos referencia antes es el

Teorema 25. (de los cuatro colores) Todo grafo plano es 4-coloreable
La interpretación geométrica de este enunciado es que cualquier mapa puede co-
lorearse con cuatro colores de forma que países fronterizos se distingan por el color.
Por complejo que sea el mapa, cuatro colores serán siempre suficientes. El teorema
de los cuatro colores se demostró en 1976, tras más de un siglo de intentos fallidos y
la comprobación exhaustiva por computador de miles de configuraciones a las que la
demostración se reduce.

55
56
Capítulo 3

Recurrencias y notación
asintótica

3.1. Objetivo
En el presente apartado nos plantearemos dos clases de problemas: la resolución en
forma cerrada de recurrencias lineales homogéneas, y la estimación del crecimiento de
recurrencias divide y vencerás.
Un ejemplo del primer tipo de problema es la sucesión de Fibonacci, definida por
las fórmulas

F1 = F2 = 1 (3.1)
Fn = Fn−1 + Fn−2 (3.2)

Los dos primeros términos están dados explícitamente por (3.1) (los valores iniciales),
y el tercero y siguientes pueden calcularse aplicando reiteradamente la ecuación de
recurrencia (3.2). Así, la sucesión queda perfectamente determinada y sus primeros
términos son
n 1 2 3 4 5 6 7 8 9 10 11 12 ...
Fn 1 1 2 3 5 8 13 21 34 55 89 144 ...

Si cambiamos los valores iniciales, obtenemos la sucesión de Lucas:

L1 = 2
L2 = 1
Ln = L n−1 + L n−2

cuyos términos iniciales son

n 1 2 3 4 5 6 7 8 9 10 11 12 ...
Ln 2 1 3 4 7 11 18 29 47 76 123 199 ...

Aplicando las ecuaciones de recurrencia podemos calcular cualquier término de


estas sucesiones. Ahora bien, ¿sería posible encontrar una fórmula explícita para Fn
o L n en función de n que nos permitiera obtener estos números sin tener que pasar por

57
todos los términos intermedios? Resulta que sí, y para la sucesión de Fibonacci una tal
fómula es à √ !n à √ !n
1 1+ 5 1 1− 5
Fn = √ −√ (3.3)
5 2 5 2
Por qué la fórmula tiene este aspecto, y cómo se obtiene, será el primer problema
que resolveremos. Además, es interesante observar que, cuando n es muy grande y
consideramos términos muy avanzados de Fn , el segundo término de (3.3) tiende a
cero (puesto que
¯ 1 − √5 ¯ √ !n
¯ ¯ Ã
¯ ¯ 1− 5
¯ ¯<1 ⇒ → 0 cuando n → ∞)
¯ 2 ¯ 2

Entonces, el crecimiento de Fn √
se debe exclusivamente al primer sumando y se escribe
Fn = O(φ n ), donde φ = (1 + 5)/2, para expresar que los números de Fibonacci se
comportan, asintóticamente, como una exponencial de base φ.
Otro tipo de relación de recurrencia algo diferente es la siguiente

Q n = Q n/2 + cn (3.4)

que aparece en el análisis del tiempo de ejecución de Quicksort, el algoritmo más rápi-
do conocido para la ordenación de un vector de números. En este caso, no es factible
encontrar una fórmula explícita para Q n , pero nos interesa saber cómo aumenta cuan-
do n se hace muy grande, puesto que eso mide el coste del algoritmo para ordenar
vectores de dimensión cualquiera. Una estimación aproximada es lo máximo que po-
demos obtener en estos casos, y demostraremos un teorema que nos permite obtener
esa estimación. En este caso particular, se obtiene que

Q n = O(n log n)

lo que significa que el tiempo de ejecución del Quicksort crece algo más deprisa que
el tamaño del vector a ordenar (pero infinitamente más despacio que el cuadrado de su
tamaño, por ejemplo).

3.2. Recurrencias lineales homogéneas


Una sucesión de números complejos {z k }∞k=0 se dice que satisface una recurrencia
lineal homogénea de orden n si se verifica la relación

z k = c1 z k−1 + c2 z k−2 + . . . cn z k−n (3.5)

para todo k ≥ n, siendo los coeficientes ci constantes (independientes del índice k).
En el caso particular de la sucesión de Fibonacci, la recurrencia Fn = Fn−1 + Fn−2
es de segundo orden, al igual que sucede con la sucesión de Lucas.
Nos gustaría encontrar una fórmula explícita para los valores de una sucesión que
satisface (3.5). Supongamos que existe una fórmula del tipo siguiente

z k = λk

Si esta fórmula es cierta, la recurrencia (3.5) se satisface si

λk = c1 λk−1 + c2 λk−2 + . . . cn λk−n

58
es decir
P(λ) = λn − c1 λn−1 − c2 λn−2 − · · · − cn = 0 (3.6)
El polinomio P(λ) es el polinomio característico de la recurrencia (3.5), y la ecua-
ción (3.6) es su ecuación característica. Los ceros de P(λ) son los valores propios o
raíces características de la relación de recurrencia, y juegan un papel importantísi-
mo en su resolución. De hecho, la construcción recién escrita nos garantiza que cual-
quier raíz característica λ origina una sucesión que satisface la recurrencia planteada:
z k = λk .
De hecho, las raíces características proporcionan aún más soluciones si tienen mul-
tiplicidad superior a la unidad. Aunque no lo demostraremos, si λ es un cero de multi-
plicidad m de P(λ), cada una de las sucesiones
λk , kλk , k 2 λk , . . . k m−1 λk
satisface la recurrencia (3.5). Y las combinaciones lineales de soluciones son también
soluciones. Todo lo cual podemos sintetizar en el siguiente
Teorema 1. Si P(λ) es el polinomio característico de la recurrencia lineal homogé-
nea (3.5), y λ1 , λ2 , . . . , λ p son los distintos ceros de P(λ), con multiplicidades respec-
tivas m 1 , m 2 , . . . , m p respectivamente, cualquier sucesión que satisface la recurrencia
tiene la forma
zk = c10 λk1 + c11 kλk1 + c12 k 2 λk1 + . . . c1,m 1 −1 k m 1 −1 λk1
+ c20 λk2 + c21 kλk2 + c22 k 2 λk2 + . . . c2,m 2 −1 k m 2 −1 λk2
...
+ c p0 λkp + c p1 kλkp + c p2 k 2 λkp + . . . c p,m p −1 k m p −1 λkp
Más simplemente, la terrible fórmula anterior puede escribirse
z k = P1 (k)λk1 + P2 (k)λk2 + Pp (k)λkp
donde cada Pi es un polinomio en la variable k, de grado menor que m i . En términos
coloquiales, cada cero λ del polinomio característico nos da tantas soluciones indepen-
dientes de la recurrencia original como multiplicidad m tenga: dichas soluciones son
λk , kλk , k 2 λk , . . . k m−1 λk . Las combinaciones lineales que podamos formar con todas
estas funciones del índice k cubren todas las posibilidades.
Aunque completamente general, el contenido del teorema se entiende mejor con un
ejemplo concreto.
Ejemplo 7. Obtener una fórmula para la sucesión de Lucas.
El polinomio característico de la recurrencia L n = L n−1 + L n−2 es λ2 − λ − 1. Los
ceros son √ √
1+ 5 1− 5
φ= φ̄ =
2 2
Del teorema 1 se deduce que
L n = Aφ n + B φ̄ n
donde A y B son coeficientes a determinar. Ahora bien, los valores iniciales de la
sucesión proporcionan
L1 = 2 = Aφ + B φ̄
L2 = 1 = Aφ 2 + B φ̄ 2

59
Tenemos dos ecuaciones y dos incógnitas. Resolviendo el sistema lineal obtenemos

2 1+ 5
A= √ B=−
1+ 5 2
y por tanto à √ !n √ à √ !n
2 1+ 5 1+ 5 1− 5
Ln = √ −
1+ 5 2 2 2

Ejemplo 8. Resolver la recurrencia

an = 6an−1 − 12an−2 + 10an−3 − 3an−4

dados a1 = 1, a2 = 2, a3 = 3, a4 = 6.
En este caso, el polinomio característico es

λ4 − 6λ3 + 12λ2 − 10λ + 3

Si tiene ceros racionales, éstos deben ser divisores del término independiente, así que
probamos con ±1 y ±3. Se obtiene la descomposición factorial

λ4 − 6λ3 + 12λ2 − 10λ + 3 = (λ − 1)3 (λ − 3)

i.e., 1 es una raíz triple y 3 una raíz simple de la ecuación característica. Por tanto, la
solución de la recurrencia tendrá la forma

an = 3n A + B + Cn + Dn 2

Para determinar cuánto valen A, B, C y D planteamos las ecuaciones proporcionadas


por los valores iniciales:

a1 = 1 = 3A + B + C + D
a2 = 2 = 9A + B + 2C + 4D
a3 = 3 = 27A + B + 3C + 9D
a4 = 6 = 81A + B + 4C + 16D

y obtenemos que A = 1/12, B = −3/4, C = 2 y D = −1/2. Por lo tanto

an = 3n /12 − 3/4 + 2n − n 2 /2

3.3. Notación asintótica


La aplicación más corriente de nuestros cálculos sobre recurrencias es la estima-
ción del tiempo que un algoritmo tarda en ejecutarse. En tal estimación, no es preciso
obtener un resultado numéricamente exacto: lo único de interés es una idea vaga de
cómo aumenta el tiempo de ejecución cuando la dimensión del problema aumenta.
Por ejemplo, los algoritmos usuales para la suma de matrices cuadradas de dimen-
sión n ×n requieren realizar n 2 sumas. Si se trata de un producto de matrices, es preciso
multiplicar escalarmente cada fila del primer factor por cada columna del segundo. Un
producto escalar de un vector de n elementos exige n multiplicaciones y n − 1 sumas,
de forma que el tiempo de ejecución de una multiplicación de dos matrices n × n es el

60
requerido para n 2 sumas y n 3 − n 2 multiplicaciones. La multiplicación suele dominar
en coste a la suma, y está claro que, para matrices de un tamaño moderado, el suman-
do n 2 es despreciable respecto a n 3 . De esta forma, adquiere sentido la afirmación “el
producto de matrices consume un tiempo proporcional a n 3 ”.
Este tipo de valoración en que despreciamos todos los términos involucrados en un
cálculo salvo aquéllos cuyo crecimiento domina al de todos los restantes, es lo que se
denomina asintótica. La notación más habitual para expresar estas manipulaciones es
la notación O (léase “O mayúscula” u “O grande”).
Definición 11. Sean f (n), g(n) funciones reales de argumento entero. Decimos que f
es O grande de g, y escribimos f (n) = O(g(n)), si existen c > 0 y N entero tales que

| f (n)| ≤ c|g(n)| para todo n > N

Es decir, salvo una constante multiplicativa, la función f está dominada por g desde
cierto valor en adelante.
Ejemplo 9. Son válidas las siguientes notaciones asintóticas:
Si f (n) = O(1), la función f está acotada.
n 2 = O(n e ) para e ≥ 2, pero no si e < 2.
n 3 − n + 3 = O(n 3 )
2n + 3n = O(3n )
1/n = O(1)
n + 1/n = O(n)
log n = O(n)√
log n = O( n)
Las propiedades más usuales de la notación O son las siguientes:
Teorema 2. Se verifican las siguientes propiedades
Si | f (n)| ≤ |g(n)|, entonces f (n) = O(g(n)). En particular, f (n) = O( f (n)).
Si lim f (n)/g(n) < ∞, f (n) = O(g(n)).
n a = O(n b ) si y solamente si a ≤ b.
a n = O(bn ) si y solamente si a ≤ b.
log n = O(n e ) para todo e > 0.
O( f (n)) + O(g(n)) = O(max{| f (n)|, |g(n)|})
O( f (n))O(g(n)) = O( f (n)g(n))
De lo anterior podemos deducir que, si P(n) = c0 n k + c1 n k−1 · · · + ck es un
polinomio en n, el término dominante (de mayor grado) es el que define su crecimiento
asintótico: P(n) = O(n k ).
Ejemplo 10. Estimar el crecimiento de los términos de la sucesión de Lucas.
Según lo calculado en la sección 3.2, tenemos la fórmula
à √ !n √ à √ !n
2 1+ 5 1+ 5 1− 5
Ln = √ −
1+ 5 2 2 2

Ahora bien, el segundo paréntesis tiene un valor absoluto menor que la unidad, de
forma que à √ !n
1− 5
= O(1)
2

61

y como (1 +5)/2 O(1) = O(1), obtenemos
µ √ ¶n µ √ ¶n µ √ ¶n
2 1+ 5 1+ 5 1+ 5
Ln = √ − O(1) = O + O(1) = O + O(1)
1+ 5 2 2 2
pues que el término izquierdo domina asintóticamente al derecho. En otras palabras, el
crecimiento de los números de Lucas es exponencial.
La notación asintótica permite realizar con mucha comodidad cálculos difíciles,
eliminando la obligación de arrastrar cantidades irrelevantes que podemos despreciar.
Esto nos resultará útil en la sección siguiente, donde estudiaremos el crecimiento de
funciones definidas por recurrencias que no podemos resolver de forma explícita.

3.4. Recurrencias divide y vencerás


Una recurrencia ubicua en el análisis de algoritmos es la que se ajusta a la siguiente
forma:
f (n) = a f (n/b) + cn d a ≥ 1, b > 1, c > 0, d > 0 (3.7)
Una función creciente f que satisfaga esta recurrencia no puede, generalmente, cal-
cularse en forma explícita salvo en casos muy particulares. Así pues, una solución
completa como la que obtuvimos para las recurrencias lineales será imposible en la
mayoría de casos. Sin embargo, sí es factible encontrar una relación que nos dé idea, al
menos, de cómo crece la función f cuando su argumento tiede a infinito. Esto debería
ser suficiente para nuestro propósito de analizar el comportamiento de un algoritmo
recursivo, puesto que nos interesa el crecimiento del tiempo de ejecución, no su valor
absolutamente exacto para cada instancia individual de n. Esa estimación aproximada
de crecimiento será la que obtengamos en la presente sección.
Para ello, vamos a aplicar la fórmula (3.7) reiteradas veces:
f (n) =
³ ´
a f (n/b) + cn d = a a f (n/b2 ) + c(n/b)d + cn d
a ³ ´ a
= a 2 f (n/b2 ) + cn d d + cn d = a 2 a f (n/b3 ) + c(n/b2 )d + cn d d + cn d
b b
³ a ´2 ³a´
= a 3 f (n/b3 ) + cn d d + cn d d + cn d
b b
= ... ·³ ´ ¸
a k−1 ³ a ´2 ³ a ´
= a k f (n/bk ) + cn d + · · · + + + 1 (3.8)
bd bd bd
El proceso puede repetirse cuantas veces sea necesario, y nosotros vamos a escoger k
de forma que el argumento de f (n/b k ) esté comprendido entre 0 y 1. Esto se consigue
tomando
k = dlogb ne
que denota el primer entero mayor que la cantidad logb n. Si lo hacemos así, 0 <
n/bk < 1 y cuando n → ∞, tenemos siempre que f (0) < f (n/b k ) < f (1) y por
tanto f (n) = O(1).
Por otra parte, el corchete de la última expresión en 3.8 puede expresarse de forma
más compacta como
³ a ´k−1 ³ a ´2 ³ a ´ (a/bd )k − 1
+ · · · + + + 1 =
bd bd bd (a/bd ) − 1

62
siempre que a/bd 6= 1. Tenemos entonces

f (n) =
(a/bd )logb n − 1
= a logb n O(1) + cn d
(a/bd ) − 1
n logb a /n d − 1
= n logb a O(1) + cn d
(a/bd ) − 1
n b − nd
log a
= O(n logb a ) + c
(a/bd ) − 1
= O(n logb a ) + O(n d )

despreciando constantes multiplicativas. Entonces, pueden darse los casos siguientes:

d > logb a. En tal caso, f (n) = O(n d ).

d < logb a. En tal caso, f (n) = O(n logb a ).


d = logb a. Si se da esta igualdad, a = b d y nuestra sumación geométrica del
corchete en (3.8) no es lícita, puesto que la razón entre términos es igual a la
unidad. Pero en este caso, el cálculo resulta aún más simple, puesto que la suma
deviene entonces logb n y

f (n) = O(n logb a + cn d logb n = O(n d logb n)

puesto que el segundo término domina al primero

Llegamos así al llamado teorema maestro:

Teorema 3. Si una función monótona f (n) satisface la recurrencia (3.7), entonces


Si d > logb a. f (n) = O(n d ).
Si d < logb a, f (n) = O(n logb a ).
Si d = logb a, f (n) = O(n d logb n).

63

Vous aimerez peut-être aussi