Professional Documents
Culture Documents
Arvores
Definição 30. Árvore com raiz é uma árvore com um vertice particular designado raiz.
Exemplo 10. A figura 2.2 mostra um exemplo duma árvore vom raiz:
e(raiz)
b g
d f
i
a c h
j
26
USTM Tomé Sicuaio e Lúcia Ginger
Teorema 10. Seja T um grafo simples com n vertices. As quatro afirmações são equivalentes:
(a) T é uma arvore.
(b) T é conexo e não contém circuitos.
(c) T é conexo e tem n − 1 arestas.
(d) T não contém ciclos e tem n − 1 arestas.
Definição 31. Seja T uma arvore com raiz, v0 raiz de T . Suponhamos que x, y e z são vertices
pertencentes a T e que (v0 , v1 , . . . , vn ) é um caminho pertencente a T. Então
(a) vn−1 é o pai de vn .
(b) v0 , . . . , vn−1 são antepassados de vn .
(c) vn é filho de vn−1 .
(d) Se x é antepassado de y, então y é um descendente de x.
(e) Se x e y são filhos de z, então x e y são irmãos.
(f ) Se x não tem filho, x é um vertice terminal (ou folha).
(g) Se x não é um vertice terminal, x é um vertice interno.
Definição 32. Uma árvore binária é uma árvore com raiz na qual cada vertice tem ou um
filho a esquerda, um filho a direita, um filho a esquerda e a direita, ou nenhum filho. Uma
arvore binária completa é uma arvore binária na qual todos os vertices tem ou um filho a
direita e a esquerda ou nenhum filho.
Exemplo 12. Os grafos da figura 2.3 são exemplos de arvores binárias. A arvore binária T2 é
uma arvore binaria completa pois cada vertice tem ou um filho a direita e um filho a esquerda,
ou não tem nenhum filho. Na arvore binária T1 , os vertices b, c e d são filhos a esquerda e g,
e, h e f são filhos a direita.
27
USTM Tomé Sicuaio e Lúcia Ginger
b g
e h
c
f
d
(T1 ) (T2 )
Definição 33. Seja T uma árvore com raiz. Se cada folha de T estiver associado com um
numero real, diremos que T é uma árvore com pesos. Cada número real associado com as
folhas de T chama-se peso. Se T tiver n folhas e n nı́veis, terá respectivamente w1 , w2 , . . . ,
wn pesos e li , (i = 1, 2, . . . , n) comprimento da raiz até a folha wi . Chama-se peso duma
arvore W (T ) ao somatorio dos produtos dos pesos da folhas pelos seus niveis, isto é:
n
X
W (T ) = wi · li .
i=1
Exemplo 13. As árvores da figura 2.4 são exemplos de grafos com pesos. As folhas da árvore
4 7
9 7 6 9 9 7 7
2 6 4 7 7 2 6
4 2
(T1 ) (T2 ) (T3 )
28
USTM Tomé Sicuaio e Lúcia Ginger
Dada uma lista L = (w1 , w2 , . . . , wn ) de pelo menos dois numeros não negativos, e queremos
construir uma arvore binária com pesos T com os membros de L como pesos, de tal maneira que
o peso W (T ) da arvore seja o mı́nimo possı́vel. Chamaremos tal arvore T de árvore binária
óptima para os pesos w1 , w2 ,. . . ,wn . O algorı́timo recurssivo seguinte resolve o problema,
produzindo uma árvore binária óptima T (L).
Huffman(List)
{Input: Uma lista L = (w1 , w2 , . . . , wn ) de numeros não negativos, n ≥ 2 }
{Output: Uma árvore binária óptima T (L) para L}
Se n = 2 então
T (L) é uma árvore com 2 folhas, de pesos w1 e w2
caso contrário
procurar dois membros (elementos) de L, diremos u e v.
Seja L0 uma lista obtida de L pela remoção de u e v e inserção de u + v.
Recur para L0 e de T (L) para Huffman(L0 ) pela substituição de uma folha de peso u + v em
Huffman(L0 ) por uma subarvore com duas folhas de pesos u e v.
return T (L).
29
USTM Tomé Sicuaio e Lúcia Ginger
7 7 9
2 4
Exemplo 15. Vamos encontrar uma arvore binária óptima com pesos 2,3,5,7,10,13,19. Vamos
repetidamente combinar os dois menores pesos para obter as sequencias de pesos
2,3,5,7,10,13,19 → 5,5,7,10,13,19 → 7,10,10,13,19 → 10,13,17,19 → 17,19,23 → 23,36.A
figura 2.6 mostra o resultado da árvore da execução do algorı́timo de Huffman:
10 13 19
2 3
Definição 34. Seja T uma árvore binária. Se a cada filho a esquerda for associado um digito
zero e digito um a cada filho a direita . A cada sequencia de digitos da raiz até as folhas
denomina-se Codigo Prefixo
Exemplo 16. O conjunto {000, 0100, 0101, 110, 11100, 11101} repesenta o codigo prefixo gerado
pela arvore binária da figura 2.7.
30
USTM Tomé Sicuaio e Lúcia Ginger
0 1
1 1
0
0 0 1
0
0
0 1
0 1
Definição 35. Seja T uma árvore binária com peso mı́nimo. O codigo prefixo formado por T
denomina-se Código de Huffman.
Exemplo 17. Consideremos um alfabeto que consiste das letras a, v, e, r, y, o, z, p que tem
frequencias correspondentes a = 30, v = 5, e = 25, r = 16, y = 4, o = 8, z = 3, p = 9. Vamos
determinar uma árvore mı́nima representada pela figura 2.8 para o alfabeto e o codigo prefixo
(código de Huffman) correspondente é: a = 11, v = 1000, e = 01, r = 101, y = 10011, o = 000,
z = 10010, e p = 001.
Podemos codificar a mensagem: ”arvore”, mapeando cada caracter pelo respectivo codigo, assim
25 30
8 9 16
3 4
31
USTM Tomé Sicuaio e Lúcia Ginger
Definição 36. Uma árvore T é uma árvore geradora dum grafo G se T é um subgrafo de
G que contém todos os vertices de G.
Exemplo 18.
Teorema 11. Um grafo G tem uma arvore geradora se e somente se G for conexo.
Definição 37. Seja G um grafo com pesos. Uma árvore geradora mı́nima de G é uma
arvore geradora de G com peso mı́nimo.
Exemplo 19.
Exemplo 20.
{input: Um grafo conexo com pesos G, com arestas listadas na ordem crescente}
{ouput: Um conjunto E de arestas de uma arvore geradora mı́nima para G.}
E=∅
32
USTM Tomé Sicuaio e Lúcia Ginger
For j = 1 to |E(G)| do
S
If (E {ej } é aciclico) then
Colocar ej em E
return E.
Exemplo 21.
2.5.1 Preorder
2.5.2 Inorder
2.5.3 Postorder
33
Capı́tulo 3
Automatos, Gramaticas, e
Linguagens
34