Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Informatica
Universidad Politecnica de Valencia
Curso 2008/2009
Tema 4:
Grafos y arboles
FI UPV: Curso 2008/2009
EDA-4
TEMA 4. Grafos y arboles
Objetivos
Deniciones, representacion y recorrido de arboles y grafos.
Contenidos
1 Grafos: Deniciones basicas
2 Representacion de grafos
3
Arboles: Deniciones basicas
4
Arboles binarios
5 Representacion de arboles
6 Recorridos de arboles binarios
7 Recorrido de grafos
8 Orden topologico en grafos acclicos
Bibliografa
Introduction to Algorithms, de Cormen, Leiserson y Rivest (sec. 5.4, 5.5, 11.4 y 23.1)
Estructuras de datos y algoritmos, de Aho, Hopcroft y Ullman (captulos 3, 6 y 7)
FI UPV: Curso 2008/2009 Pagina 4.1
EDA-4
1. GRAFOS: DEFINICIONES B
ASICAS
Grafo dirigido: es un par G = (V, A) donde V es un conjunto nito de elementos
llamados vertices y A V V es un conjunto de pares ordenados de vertices llamados
aristas.
Si (u, v) es una arista de G, se dice que el vertice v es adyacente a u.
0 1 2
5 3 4
FI UPV: Curso 2008/2009 Pagina 4.2
EDA-4
1. GRAFOS: DEFINICIONES B
ASICAS
Grafo no dirigido: es un par G = (V, A) donde V es un conjunto nito de vertices y
A u, v [ u, v V v ,= u es un conjunto de pares no ordenados de vertices.
Si a = u, v es una arista no dirigida, se dice que a une a u y v y que a incide en u y v.
Si u, v es una arista de G, se dice que el vertice v es adyacente a u. La relacion es
simetrica.
0 1
4 3
2
FI UPV: Curso 2008/2009 Pagina 4.3
EDA-4
1. GRAFOS: DEFINICIONES B
ASICAS
Grado: para todo vertice v,
grado de entrada es el n umero de aristas que inciden en v;
grado de salida es el n umero de aristas que emergen de v;
grado es la suma de los grados de entrada y salida de v.
El grado de un grafo es el maximo grado de sus vertices.
0 1 2
5 3 4
Ejem.: El grado de entrada del vertice 1 es 2; el grado de salida es 1; el grado del vertice es 3. El grado del
grafo es 3.
FI UPV: Curso 2008/2009 Pagina 4.4
EDA-4
1. GRAFOS: DEFINICIONES B
ASICAS
Camino desde un vertice u V a un vertice v V : es una secuencia v
0
, v
1
, . . . , v
k
) de
vertices de G = (V, A) tal que v
0
= u, v
k
= v, (v
i
, v
i+1
) A, 0 i < k.
La longitud de un camino v
0
, v
1
, . . . , v
k
) es el n umero de aristas que lo forman.
Camino simple: es un camino v
0
, v
1
, . . . , v
k
) en el que todos sus vertices son distintos,
excepto quizas el primero y el ultimo.
Ciclo: es un camino simple v
0
, v
1
, . . . , v
k
) tal que v
0
= v
k
y el camino contiene al menos
una arista.
Un bucle es un ciclo de longitud 1.
0 1 2
5 3 4
Ejem.: El camino 0, 3, 1, 4 es simple y tiene longitud 3. El camino 0, 1, 4, 3, 1 no es simple.
Ejem.: El camino 1, 4, 3, 1 es un ciclo de longitud 3. El ciclo 5, 5 es un bucle.
Grafo acclico: es un grafo sin ciclos.
FI UPV: Curso 2008/2009 Pagina 4.5
EDA-4
1. GRAFOS: DEFINICIONES B
ASICAS
Subgrafo: G
= (V
, A
) es un subgrafo de G = (V, A) si V
V A
A.
Subgrafo inducido: Dado V
V , el subgrafo de G inducido por V
es G
= (V
, A
)
tal que A
= (u, v) A [ u, v V
.
0 1 2
5 3 4
0 1
3 4
0 1
3 4
Subgrafo Subgrafo inducido por V
= 0, 1, 3, 4
FI UPV: Curso 2008/2009 Pagina 4.6
EDA-4
1. GRAFOS: DEFINICIONES B
ASICAS
Vertice alcanzable desde un vertice u: es cualquier vertice v para el que existe un
camino de u a v.
Las componentes conexas en un grafo no dirigido son las clases de equivalencia de
vertices seg un la relacion ser alcanzable.
Un grafo no dirigido es conexo si u, v V , v es alcanzable desde u. Es decir, si tiene
una unica componente conexa.
Las componentes fuertemente conexas en un grafo dirigido son las clases de
equivalencia de vertices seg un la relacion ser mutuamente alcanzable.
Un grafo dirigido es fuertemente conexo si u, v V , v es alcanzable desde u.
0 1
4 3
2
0 1 2
5 3 4
FI UPV: Curso 2008/2009 Pagina 4.7
EDA-4
1. GRAFOS: DEFINICIONES B
ASICAS
Grafo completo: es un grafo G = (V, A) en el que u, v V , u ,= v, (u, v) A.
Grafo etiquetado: es un grafo G = (V, A) acompa nado de una funcion f : A E,
donde E es un conjunto cuyas componentes se denominan etiquetas.
Grafo ponderado: es un grafo etiquetado con n umeros reales (E R).
Un grafo se considera denso si [A[ [V [
2
.
Un grafo se considera disperso si [A[ <<< [V [
2
.
FI UPV: Curso 2008/2009 Pagina 4.8
EDA-4
2. REPRESENTACI
|V |
u=1
|V |
v=1
|V |
w=1
1 O([V [
3
)
FI UPV: Curso 2008/2009 Pagina 4.21
EDA-4
Ejercicio: Cuadrado de un grafo
Solucion con listas de adyacencia:
1 grafoListaAd
*
grafoListaAd::cuadrado() const {
2 grafoListaAd
*
resul = new grafoListaAd(vertices);
3 for (int u=0; u<vertices; ++u)
4 for (const arista
*
r=vec[u]; r!=0; r=r->sig)
5 for (const arista
*
s=vec[r->vertice_destino]; s!=0; s=s->sig)
6 resul->insertar_arista(u, s->vertice_destino);
7 return resul;
8 }
FI UPV: Curso 2008/2009 Pagina 4.22
EDA-4
3.
ARBOLES: DEFINICIONES B
ASICAS
Bosque: es un grafo no dirigido acclico.
) tal que V
= V y A
A.
Grafo Bosque Arbol
FI UPV: Curso 2008/2009 Pagina 4.23
EDA-4
3.
ARBOLES: DEFINICIONES B
ASICAS
Teorema (Propiedades de los arboles libres):
Sea G = (V, A) un grafo no dirigido. Los siquientes predicados son equivalentes:
1. G es un arbol libre.
2. Cualquier par de vertices esta conectados por un unico camino.
3. G es conexo, pero si se elimina cualquier arista de A, el grafo resultante
no es conexo.
4. G es conexo y tiene [V [ 1 aristas.
5. G es acclico, y tiene [V [ 1 aristas.
6. G es acclico, pero si se a nade una arista, se crea un ciclo.
Arbol
FI UPV: Curso 2008/2009 Pagina 4.24
EDA-4
3.
ARBOLES: DEFINICIONES B
ASICAS
Arbol enraizado
Un arbol enraizado es un arbol libre con un vertice (o nodo) distinguido denominado raz.
7
3
8 12
10 4
11 2
5 6 1
9
raz
Si existe un camino de un nodo x a un nodo y en un arbol T, se dice que x es antecesor
de y, y que y es sucesor de x.
Si (x, y) es el ultimo arco en el camino desde la raz r del arbol T hasta el nodo y,
entonces x es el padre de y, e y es el hijo de x. La raz es el unico nodo en T que no
tiene padre. Si dos nodos tienen el mismo padre son hermanos.
FI UPV: Curso 2008/2009 Pagina 4.25
EDA-4
3.
ARBOLES: DEFINICIONES B
ASICAS
Arbol enraizado
Un nodo sin hijos lo denominaremos hoja. El resto son nodos internos.
El grado de un nodo es el n umero de hijos que tiene.
Se llama profundidad de un nodo a la longitud del camino desde la raz a ese nodo.
La altura de un arbol es la profundidad del nodo mas profundo.
7
3
8 12
10 4
11 2
5 6 1
9
profundidad 0
profundidad 1
profundidad 2
profundidad 3
profundidad 4
altura=4
FI UPV: Curso 2008/2009 Pagina 4.26
EDA-4
4.
ARBOLES BINARIOS
Un arbol binario es un arbol en el que el maximo n umero de hijos de cada
nodo es 2 (hijo izquierdo e hijo derecho).
3
2
4 1
7
5
6
profundidad 0
profundidad 1
profundidad 2
profundidad 3
altura=3
Un arbol binario se dice que es completo (o lleno) si todas las hojas tienen
la misma profundidad y todos los nodos internos tienen grado 2.
Un arbol binario es casi-completo si el arbol es completo, a excepcion quizas
en el nivel de las hojas, en el cual todas las hojas estan tan a la izquierda
como sea posible.
FI UPV: Curso 2008/2009 Pagina 4.27
EDA-4
Propiedades de los arboles binarios completos
0
1
2
3
h=3
1=2_0
2=2_1
4=2_2
8=2_3
profundidad num. nodos
h1
i=0
2
i
= 2
h
1
nodos total: n =
h
i=0
2
i
= 2
h+1
1
. . . y la altura
n = 2
h+1
1 h = log
2
n|
FI UPV: Curso 2008/2009 Pagina 4.28
EDA-4
Propiedades de los arboles binarios
El maximo n umero de nodos de profundidad i es 2
i
.
El maximo n umero de nodos en un arbol binario de altura h es
2
h+1
1. El maximo n umero de nodos internos es 2
h
1. El maximo
n umero de hojas es 2
h
.
La altura mnima de un arbol binario con n nodos es log
2
n|.
Para cualquier arbol binario no vaco, si n
0
es el n umero de hojas y
n
2
es el n umero de nodos de grado 2, entonces n
0
= n
2
+ 1.
Ejercicio.
Arboles k-arios. Un arbol k-ario es un arbol en el que el
maximo n umero de hijos de cada nodo es k (as, un arbol binario es un
arbol k-ario con k = 2). Cuantas hojas tiene un arbol k-ario completo
de altura h? Y cuantos nodos internos?
FI UPV: Curso 2008/2009 Pagina 4.29
EDA-4
5. REPRESENTACI
ON DE
ARBOLES
Arboles binarios
Hijo izquierdo e Hijo derecho para cada nodo: variables
dinamicas o vectores.
Arbol binario (casi-completo): vector (heaps).
Otros . . .
FI UPV: Curso 2008/2009 Pagina 4.30
EDA-4
5. REPRESENTACI
ON DE
ARBOLES
Listas (ordenadas) de hijos
1
3
10
5 6 7 11 12
2 9
4 8
1
2
3
4
5
6
7
10
8
9
10
11
12
NIL
5 6
NIL
7
NIL
11 12
NIL
NIL
NIL
NIL
NIL
NIL
NIL
2 3
NIL
9
4 8
NIL
raz
FI UPV: Curso 2008/2009 Pagina 4.31
EDA-4
5. REPRESENTACI
ON DE
ARBOLES
Hijo mas a la izquierda-Hermano derecha: variables dinamicas o vectores
B I
D H
A
C
J
E F G K L
2
3
4
....
8
9
10
....
12
13
14
16
17
....
15
K
F
L
E
16
12
7
15
3
17
8
NIL
NIL
13
NIL
14
C
D
A
H
I
G
J
10
9
2 B
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
NIL
raz
clave
hizq her_d
A
C
E F G K L
D H
B I
J
raz
hizq her_d
clave
FI UPV: Curso 2008/2009 Pagina 4.32
EDA-4
5. REPRESENTACI
ON DE
ARBOLES
Con vectores y direccion del padre
1
10
5 6 7 11 12
4 8
2 9 1
10
5 6 7 11 12
4 8
2 9
3 3
1 2 3 4 5 6 7 8 9 10 11 12
3 3 3 1 1 9 4 4 4 10 10 3
El nodo i es la raz del arbol si T[i] = i. Cada nodo apunta a su
padre: T[i] = padre(i).
FI UPV: Curso 2008/2009 Pagina 4.33
EDA-4
5. REPRESENTACI
ON DE
ARBOLES
ON DE
ARBOLES