Grafos
A × B = {(a, b) | a ∈ A, b ∈ B}
1
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.
1.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.
2
“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
3
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
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 1.4.
4
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 a 1 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”.
1.2. Grafos
1.2.1. Grafo dirigido y no dirigido
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 llamados 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 1.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)}.
Un grafo dirigido o digrafo G es un par (V, E), donde V es un conjunto 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 1.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.
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.
5
E E
F F
G G
H H
I I
J J
3 3
+ +
∗ ∗
5 5
+ +
6 6
12 1 2 3 12 1 2 3
χ(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 4 5 χ(esto 6otro) = 4 4 5 6
(a) (b)
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 mismo 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 1.1 se esquematizan
los valores de estos parámetros para las definiciones recién dadas.
6
(2, 4) y (2, 5). En el grafo no dirigido de la figura 1.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 1.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 1.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 1.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 1.1(a), el vértice 2 tiene grado de salida 3,
grado de entrada 2 y grado 5.
7
Vértice Adj(V )
0 1 0 0 0 0
0 1 {2}
1 0 1 1 0
0
2 {2, 4, 5}
0 0 0 0 0
M =
1
3 {}
0 0 0 1 0
0
4 {1, 5}
0 0 1 0 0
5 {4}
0 0 1 0 0 0
6 {3}
(a) (b)
Figura 1.2: Representación del grafo de la figura 1.1(a) por medio de a) matriz de
adyacencia b) listas de adyacencia
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.
8
1.3. 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 1.1(a), el vértice 3 es accesible desde 6, pero no al contrario).
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 1.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 1.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.
A = {a1 , a2 , a3 , . . . , an }
9
Zapatero Zapatero
Zorrilla Zorrilla
A A
B B
C C
D D
E E
F F
G G
H H
I I
J 36 J
3 3
+ +
∗ 12 18 ∗
5 5
+ +
64 6 9 6
12 12
χ(K 5 ) = 5 χ(K 5 ) = 5
χ(K 3,3 ) = 2 2 3 3,3 ) = 2
χ(K
χ(C7 ) = 3 χ(C7 ) = 3
χ(esto) = 4 χ(esto) = 4 3 4 6 9
χ(esto otro) = 4 1χ(esto otro) = 4
(a) (b)
10
D
E
F
G
H
I
J
3
+
∗
5
+
6 K5
K4 K6
12
χ(K 5 ) = 5
χ(K 3,3 ) = 2
χ(C7 ) = 3
χ(esto) = 4
χ(esto otro) = 4
11
P60 Q
Q
CQ
Q
Q m1 Q
2 4
3
Q
Q 02 5
QAbad
Q 4
Q
Q135
Abascal
Q
Q24
Álvarez
Abad
Q
Q35
Bastardo
Abascal
Q
Cobas
Abad
Álvarez 4
Cazorla
Abascal
Bastardo Q5
Cobas
Abad
ÁlvarezDehesa
González
Abascal
Cazorla
Bastardo
Guzmán
Dehesa
Cobas
Álvarez
GonzálezHerrero
Cazorla
Bastardo
Guzmán
Dehesa
CobasLebrel
Zapatero
Herrero
González
Cazorla
Zorrilla
Lebrel
Guzmán
Dehesa
Herrero A
Zapatero
González
Lebrel B
Zorrilla
Guzmán
Zapatero
Herrero A C
Lebrel
Zorrilla B D
Zapatero CA E F
Zorrilla DB G
E H
C
A
F I
D
B
G
E J
C
H
F 3
D
EJI +
G
H
F3 ∗
G
+ I 5
H J∗ +
I3 6
+
+J∗5 12
χ(K 5 )36 5= 5
χ(K 3,312 )+
+∗ =2
Propiedad Definición 5) =
χ(Kχ(C 7 )5 65= 3Grafo Matriz
3,3 ) =12
χ(Kχ(esto) +2= 4
χ(K )) =
χ(C57otro)=12 65 3= 4
Reflexiva ∀a a R a χ(esto
χ(K ) = 2 (M R )ii = 1 ∀i
3,3
χ(esto) = 4
χ(K
χ(C ) =
57 ) = 3 5
Simétrica ∀a, b a R b ⇒ bχ(esto
R aχ(Kotro))
3,3 = 4
χ(esto)
=
= 2 4 M Rt = M R
Antisimétrica ∀a, b a R byb R χ(esto
a⇒ χ(C
a 7 ) b=
otro)
= = 34 (M R )i j 6= (M R ) j i ∀i 6= j
12
χ(esto) =4
Transitiva ∀a, b, c a R b y b χ(esto a R c= 4
R c ⇒ otro) M R2 ⊂ MR
1.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
asignando orientaciones a cada una de las aristas. En la figura 1.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 8 veremos que siempre es posible encontrar uno en cualquier torneo.
13
D
E
F
G
H
I
J
3
+
∗
5 C5
+
6
12
χ(K 5 ) = 5
χ(K 3,3 ) = 2
χ(C7 ) = 3
χ(esto) = 4P6
C7
χ(esto otro) = 4
1.6. Arboles
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.
14
9 Abascal
A Abascal
9A A 9
12 Álvarez
B Álvarez
12 B B 12
18 Bastardo
C Bastardo
18 C C 18
36 Cobas
D 36Cobas
D D 36
C1 Cazorla
E Cazorla
C1 E E C1
C2 Dehesa
F Dehesa
C 2F F C2
C3 González
G González
C3 G G C3
C4 Guzmán
H Guzmán
C4 H H C4
C5 Herrero
I Herrero
C5 I I C5
C7 Lebrel
J CLebrel
7 J J C7
P6 Zapatero Zapatero
P P6
3 6 3 3
Cm Zorrilla
+ Zorrilla
C m+ + C m
Q0 ∗A Q0 ∗ A ∗ Q0
Q1 5B Q1 5 B 5 Q1
Q2 + C Q 2+ C + Q2
Q3 6 D Q 3 6 D 6 Q3
Q4 12 E Q 412 E 12 Q4
Q 5 χ(K 5 ) = 5 F χ(K 5 )Q= 5 5 F χ(K 5 ) = 5 Q5
χ(K ) = 2 G Q 0χ(K ) = 2 G χ(K ) = 2
Abad 3,3 Abad
3,3 3,3 Abad
Abascal χ(C7 ) = 3 H χ(C 7) = 3 H
Abascal Q 1χ(C7 ) = 3Abascal Q2
Álvarezχ(esto) = 4 I χ(esto)
Álvarez=4 I χ(esto) = 4Álvarez
χ(esto
Bastardo otro) = 4 J χ(esto otro)
Bastardo = 4 J χ(esto otro) = Bastardo
4
Cobas 3 Cobas 3 Cobas
Cazorla + (a) Cazorla + (b) Cazorla (c)
Dehesa ∗ Dehesa ∗ Dehesa
González 5 González 5 González
Guzmán + Guzmán + Guzmán
Herrero 6 Herrero 6 Herrero
Lebrel 12 Lebrel 12 Lebrel
Zapatero χ(K 5 ) = Q 53 χ(K 5 ) = 5
Zapatero Zapatero
χ(K 3,3 ) = 2 χ(K 3,3 ) = 2
C C
D D D
(d) (e)
E E E
F F F
G G Grafos Q n , para n = 0, . . . ,G4
Figura 1.7:
H H H
I I I
J J J
3 3 3
+ + +
∗ ∗ ∗
5 5 5
+ + +
6 6 6
12 12 12
χ(K 5 ) = 5 χ(K 5 ) = 5 χ(K 5 ) = 5
χ(K 3,3 ) = 2 χ(K 3,3 ) = 2 χ(K 3,3 ) = 2
χ(C7 ) = 3 χ(C7 ) = 3 χ(C7 ) = 3
χ(esto) = 4 χ(esto) = 4 χ(esto) = 4
χ(esto otro) = 4 χ(esto otro) = 4 χ(esto otro) = 4
Figura 1.8: (a) Un árbol. (b) Un bosque. (c) Un grafo que no es ni un árbol ni un bosque
15
La figura 1.8(a) muestra un árbol, y en 1.8(b) vemos un bosque que no es un árbol,
al no ser conexo. El grafo de 1.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.
ei ≥ n i − 1 i = 1, 2, . . . m
ei ≤ n i − 1 i = 1, 2, . . . m
Sumando
m m m
!
X X X
ei ≤ (n i − 1) = ni −m
i=1 i=1 i=1
16
Lebrel
Zapatero
Zorrilla
A
B
C
D
E
F
G
H
I vd v1
J C m
C1
3
+ ..
. v2
∗C4
5
v v
+ 6
6
12 v3
χ(K 5 ) = 5
χ(K 3,3 ) = 2 C2
χ(C7 ) = 3 v5
χ(esto) = 4 v4
χ(esto otro) = 4 C3
17
Álvarez
E
Bastardo
F
Cobas
G
Cazorla
H
DehesaI
González J
Guzmán 3
Herrero
+
Lebrel∗
Zapatero5
Zorrilla
+ p
A6
x v
B
12
χ(K 5 ) =C5 u w
χ(K 3,3 ) =D2 z
χ(C7 ) = E3 y
χ(esto) = F4 0
χ(esto otro) =G4 p
H
Figura I1.10: Demostración de la implicación 1 ⇒ 2 en el teorema 4
J
3 7
+
∗
5 6 8 9
+
6
12 3 4 5 10 11 12
χ(K 5 ) = 5
χ(K 3,3 ) = 2
χ(C7 ) = 3
χ(esto) = 4
χ(esto otro) = 4 1 2
18
Lebrel
A
B
C
D
E
F
G Abad
H
I
J
3 Abascal Álvarez Zapatero Zorrilla
+
∗
5
+ Bastardo González Guzmán
6
12
χ(K 5 ) = 5
χ(K 3,3 ) = 2
χ(C7 ) = 3
χ(esto) = 4 Cazorla Cobas Dehesa Herrero
χ(esto otro) = 4
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 1.2.2. Si todos los nodos de un árbol tienen grado a lo sumo m,
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 1.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 1.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
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?
19
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)
D EMOSTRACIÓ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.
20
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)
3 + 5 ∗ (6 + 12)
(+ 3 (* 5 (+ 6 12)))
21
Zorrilla
A
B
C
D
E
F
G
H
I
J
3
e
+
∗
5 a g
+
6
12 c b j f
χ(K 5 ) = 5
χ(K 3,3 ) = 2
χ(C7 ) = 3
χ(esto) = 4
d
χ(esto otro) = 4 h
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
22
Zapatero Cm 2
Zorrilla Q0 3
A Q1 4
B Q2 6
C Q3 9
D Q4 12
E Q5 18
F Abad 36
G Abascal C1
H Álvarez C2
IBastardo C3
J Cobas C4
Cazorla C5
+ Dehesa + C7
González P6
Guzmán Cm Recorrido Expresión
3
Herrero ∗ Q0 Inorden 3 + 5 ∗ 6 + 12
Lebrel Q1 Postorden 3 5 6 12 + ∗+
Zapatero Q2 Preorden +3 ∗ 5 + 6 12
χ(K 5 ) = 5 Zorrilla Q3
χ(K 3,3 ) = 2 5 Q4 +
χ(C7 ) = 3 Q5
χ(esto) = 4 Abad
χ(esto otro) = 4 6
Abascal 12
E Álvarez
F (a)
Bastardo (b)
G Cobas
H Cazorla
Figura 1.15: a) Árbol sintáctico y b) notaciones infija, prefija y postfija para la expresión
I Dehesa
3 + 5 ∗ (6 + 12)
J González
3 Guzmán
+ Herrero
∗ Lebrel
5 ZapateroB
+ Zorrilla
6
12
χ(K 5 ) = 5 A D
χ(K 3,3 ) = 2
χ(C7 ) = 3 E
χ(esto) = 4 F
χ(esto otro) = 4 G C
H
FiguraI 1.16: Los puentes de Königsberg
J
3
+
∗ A
5
+
6
12 D
χ(K 5 ) = 5B
χ(K 3,3 ) = 2
χ(C7 ) = 3
χ(esto) = 4
χ(esto otro) = 4 C
23
como suele formularse en las revistas de matemática recreativa, dibujar la figura de un
solo trazo sin levantar el lápiz del papel.
Sea G un grafo no dirigido. Denominamos recorrido euleriano de G a un ca-
mino 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 ) con-
tiene 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 1.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 1.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.
Teorema 6 Sea G un grafo conexo no dirigido. Entonces, G posee un circuito eule-
riano si y solamente si G carece de vértices impares.
D EMOSTRACIÓ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 aparece en la
sucesión (v0 , v1 ), . . . , (vn−1 , vn ) exactamente una vez, y al ser el recorrido cerrado,
v0 = v n .
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
24
C3
Cobas Cobas
C4
Cazorla Cazorla
C5
Dehesa Dehesa
C7
González González
P6
Guzmán Guzmán
Cm
Herrero Herrero
Q0
Lebrel Lebrel
Zapatero Q1 Zapatero
Q2
Zorrilla Zorrilla
Q3
A A
Q4
B B
Q5
C C
Abad
D D
Abascal
E E
Álvarez
F F
G Bastardo G
Cobas
H H
Cazorla
I I
J Dehesa J
3 González
v1 3 v1
vd Guzmán vd
+ +
Herrero
∗ ∗
5 Lebrel v2 5 v2
Zapatero
+ +
6 .. v Zorrilla 6 .. v
. A .
12 12
χ(K 5 ) = 5 B χ(K 5 ) = 5
C v3 v3
χ(K 3,3 ) = 2 χ(K 3,3 ) = 2
χ(C7 ) = 3 D χ(C7 ) = 3
χ(esto) = 4 v5 E χ(esto) = 4 v5
χ(esto otro) = 4 v4 F χ(esto otro) = 4 v4
G
(a) H (b)
I
J
3 v1
vd
+
∗
5 v2
+
6 .. v
.
12
χ(K 5 ) = 5
v3
χ(K 3,3 ) = 2
χ(C7 ) = 3
χ(esto) = 4 v5
χ(esto otro) = 4 v4
(c)
Figura 1.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
25
adyacentes a v, como se muestran en la figura 1.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 1.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 1.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 1.18(c). Con esto obtenemos un circuito euleriano de G y el teorema queda demos-
trado.
De este teorema se deduce un interesante corolario.
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 d i0 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.
26
B
C
D
E
F
G
H
I
J
3
+
∗
5
+
6
12
χ(K 5 ) = 5
χ(K 3,3 ) = 2
χ(C7 ) = 3
χ(esto) = 4
χ(esto otro) = 4
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.
27
B
C
D
E
F
G
H
I
J
3
+
∗
v3 vm
5 vm+1
+ v2
6
12
χ(K 5 ) = 5
χ(K 3,3 ) = 2 vn
χ(C7 ) = 3
χ(esto) = 4
χ(esto otro) = 4 v1
28
González
Guzmán
Herrero
Lebrel
Zapatero
Zorrilla
A
B
C
D
E
F
G 1 2 3 Vértice Adyacentes
H 1 {2, 4}
I 2 {1, 3, 5}
J 3 {2, 5}
4 {1, 5, 7, 8}
+ 4 5 6 5 {2, 3, 4, 6, 8, 9}
∗ 6 {5}
7 {4, 8, 10}
+ 8 {4, 5, 7, 9, 10}
9 {5, 8}
7 8 9
12 10 {7, 8}
χ(K 5 ) = 5
χ(K 3,3 ) = 2
χ(C7 ) = 3
χ(esto) = 4
10
χ(esto otro) = 4
29
B READTH -F IRST(G, v)
D EPTH -F IRST(G, v) 1 Q ← [v]
1 V ISITA (v) 2 while Q 6= ∅
2 for each w in Ad j (v) 3 do w ← S ACA P RIMERO (Q)
3 do D EPTH -F IRST(G, w) 4 V ISITA(w)
5 E NCOLA(Ad j (w))
(a) En profundidad
(b) En anchura
D EPTH -F IRST-NR(G, v)
1 S ← vaci o
2 P USH (v)
3 while S 6= ∅
4 do w ← P OP(S)
5 if w no visitado
6 then
7 V ISITA(w)
8 next ← Ad j (w)
9 next ← next − V ISITADOS(next)
10 P USH(next)
11
Como resultado de este proceso, obtenemos que el recorrido construye un árbol como
el mostrado en 1.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 1.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 1.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).
30
Zapatero
Zorrilla
A
B
C
D
E
F
G
H
I
J
Visitados Cola Q +
– 1 ∗ 1 2 3
1 23
12 453 +
124 5378 4 5 6
1245 37869 12
12453 7869 χ(K 5 ) = 5
124537 8 6 9 10 χ(K 3,3 ) = 2 7 8 9
1245378 6 9 10 χ(C7 ) = 3
12453786 9 10 χ(esto) = 4
124537869 10 χ(esto otro) = 4 10
1 2 4 5 3 7 8 6 9 10 –
(b) Arbol abarcador
(a) Traza
Figura 1.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
31
Herrero
Lebrel
Zapatero
Zorrilla
A
B
C
D
E
F
G
H
I
Pila Visitado J
1 1
24 4 + 1 2 3
2875 5 ∗
2872368 8
2 8 7 2 3 6 9 7 10 10 + 4 5 6
287236977 7
28723697 – 12
2872369 9 χ(K 5 ) = 5 7 8 9
287236 6 χ(K 3,3 ) = 2
28723 3 χ(C7 ) = 3
2872 2 χ(esto) = 4 10
287 –
χ(esto otro) = 4
28 –
2 – (b) Arbol abarcador
Figura 1.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 backtracking.
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.
32
Q0
Q1
Q2
Q3
Q4
Q5
Abad
Abascal
Álvarez
Bastardo
Cobas
Cazorla
Dehesa
González
Guzmán
Herrero
Lebrel
Zapatero
Zorrilla
A
B
C
D
E
F
G
H
I
J
2 32
+ 12 21 8
∗ 6 18
1
5
+ 13 17
14
8
3 3 15
χ(K 5 ) = 5 6 7
χ(K 3,3 ) = 2 24
χ(C7 ) = 3 4 25
χ(esto) = 4
χ(esto otro) = 4 69 5
Figura 1.25: Una red con el camino más corto entre 1 y 8 y su MST
33
Cazorla
Dehesa
González
Guzmán
Herrero
Lebrel
Zapatero
Zorrilla
A
B
C 2
2
D 1 2 3 1
E
F1 3
1 2
G 1
2
H
I 1 2
2 1
J 5 4
χ(K 5 ) = 5 χ(K 3,3 ) = 2 χ(C7 ) = 3
+ 1 2 1 3
∗
3 4
+ 1
2 3 2
4
61
2
12 4 1
2
2 1 3
2 1
3 3 1
V1 = {v ∈ V (G) | f (v) = 1}
V2 = {v ∈ V (G) | f (v) = 2}
34
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 10 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.
D EMOSTRACIÓ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,
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 1.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 1.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 11 Si G es un grafo plano, el número C de regiones conexas en que su re-
presentació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.
35
El teorema al que hacíamos referencia antes es el
Teorema 12 (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.
36