You are on page 1of 9

Cap´ıtulo 2

Arvores

Defini¸c˜ao 29. Uma Arvore ´e um grafo simples, conexo e aciclico.

Exemplo 9. A figura 2.1 ´e um exemplo duma ´arvore:

Defini¸c˜ao 30.

´ Figura 2.1: Arvore
´
Figura 2.1:
Arvore

´

Arvore com raiz ´e uma ´arvore com um vertice particular designado raiz.

Exemplo 10. A figura 2.2 mostra um exemplo duma ´arvore vom raiz:

a

e(raiz) b g d f i c h j
e(raiz)
b
g
d
f
i
c
h
j

Figura 2.2:

´

Arvore com raiz

26

USTM Tome´ Sicuaio e Lucia´

Ginger

2.1 Propriedades das arvores

Teorema 10. Seja T um grafo simples com n vertices. As quatro afirma¸c˜oes s˜ao equivalentes:

(a)

T ´e uma arvore.

(b)

T ´e conexo e n˜ao cont´em circuitos.

(c) T ´e conexo e

(d) T n˜ao cont´em ciclos e tem n 1 arestas.

tem n 1 arestas.

Defini¸c˜ao 31. Seja T uma arvore com raiz, v 0 raiz de T . Suponhamos que x, y e z s˜ao vertices

pertencentes a T e que (v 0 , v 1 ,

, v n ) ´e um caminho pertencente a T. Ent˜ao

(a) v n1 ´e o pai de v n .

(b) v 0 ,

, v n1 s˜ao antepassados de v n .

(c)

v n ´e filho de v n1 .

(d)

Se x ´e antepassado de y, ent˜ao y ´e um descendente de x.

(e)

Se x e y s˜ao filhos de z, ent˜ao x e y s˜ao irm˜aos.

(f ) Se x n˜ao tem filho, x ´e um vertice terminal (ou folha).

(g) Se x n˜ao ´e um vertice terminal, x ´e um vertice interno.

Exemplo 11. Na ´arvore com raiz da figura 2.2,

(a)

o pai de i ´e g.

(b)

os antepassados de j s˜ao i, g e e.

(c)

os filhos de e s˜ao b, d, f e g.

(d)

os descendentes de g s˜ao h, i e j.

(e)

b, d, f

e g s˜ao irm˜aos.

(f ) a, d, f , c, j e h s˜ao vertices terminais.

(g) b, i e g s˜ao vertices internos.

Defini¸c˜ao 32. Uma ´arvore bin´aria ´e uma ´arvore 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´aria completa ´e uma arvore bin´aria 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˜ao exemplos de arvores bin´arias. A arvore bin´aria T 2 ´e uma arvore binaria completa pois cada vertice tem ou um filho a direita e um filho a esquerda,

ou n˜ao tem nenhum filho. Na arvore bin´aria T 1 , os vertices b, c e d s˜ao filhos a esquerda e g,

e, h e f

s˜ao filhos a direita.

27

USTM Tome´ Sicuaio e Lucia´

Ginger

a b g e c f d
a
b
g
e
c
f
d

´

(T 1 )

h

Figura 2.3:

2.2 Arvores com pesos

c f d ´ ( T 1 ) h Figura 2.3: 2.2 Arvores com pesos ´

´

(T 2 )

Arvores bin´arias

Defini¸c˜ao 33. Seja T uma ´arvore com raiz. Se cada folha de T estiver associado com um

numero real, diremos que T ´e uma ´arvore com pesos. Cada n´umero real associado com as

folhas de T chama-se peso. Se T tiver n folhas e n n´ıveis, ter´a respectivamente w 1 , w 2 ,

da raiz at´e a folha w i . Chama-se peso duma

w n pesos e l i , (i = 1, 2,

,

, n) comprimento

arvore W (T ) ao somatorio dos produtos dos pesos da folhas pelos seus niveis, isto ´e:

W(T) =

n

i=1

w i · l i .

Exemplo 13. As ´arvores da figura 2.4 s˜ao exemplos de grafos com pesos. As folhas da ´arvore

4 9 7
4
9
7

7

6 9
6
9

2

6

4

7

7

2

 

(T 1 )

(T 2 )

 

´

 

Figura 2.4:

Arvore com pesos

9 7 7 6 4 2
9
7
7
6
4
2

(T 3 )

T 1 tem pesos 2, 4, 6, 7, 7 e 9. Assim, o peso w 1 = 2, w 2 = 4, w 3 = 6, w 4 = 7, w 5 = 7 e w 6 = 9.

Os n´ıveis das folhas s˜ao l 1 = 3, l 2 = 1,

l 3 = 3, l 4 = 2, l 5 = 1 e l 6 = 2.

Ent˜ao o peso da arvore

T 1 ´e:

W(T 1 ) =

6

i=1

w i · l i = 2 · 3 + 4 · 1 + 6 · 3 + 7 · 2 + 7 · 1 + 9 · 2 = 67.

28

USTM Tome´ Sicuaio e Lucia´

Ginger

Para a ´arvore T 2 temos

E para a ´arvore T 3 temos

W(T 2 ) =

W(T 3 ) =

6

i=1

6

i=1

w i · l i =

90.

w i · l i = 88.

2.2.1 Algor´ıtimo de Huffman

Dada uma lista L = (w 1 , w 2 ,

construir uma arvore bin´aria 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 ´arvore bin´aria

´optima para os pesos w 1 , w 2

produzindo uma ´arvore bin´aria ´optima T (L).

Huffman(List) {Input: Uma lista L = (w 1 , w 2 ,

{Output: Uma ´arvore bin´aria ´optima T (L) para L} Se n = 2 ent˜ao T (L) ´e uma ´arvore com 2 folhas, de pesos w 1 e w 2 caso contr´ario procurar dois membros (elementos) de L, diremos u e v. Seja L uma lista obtida de L pela remo¸c˜ao de u e v e inser¸c˜ao de u + v. Recur para L e de T (L) para Huffman(L ) pela substitui¸c˜ao de uma folha de peso u + v em Huffman(L ) por uma subarvore com duas folhas de pesos u e v. return T (L).

,w n . O algor´ıtimo recurssivo seguinte resolve o problema,

, w n ) de pelo menos dois numeros n˜ao negativos, e queremos

, w n ) de numeros n˜ao negativos, n 2 }

Exemplo 14. Considere os pesos 2, 4, 6, 7, 7, 9. Primeiro o algor´ıtimo repetidamente combina os dois pesos menores para obter uma nova sequencia mais curta pela substitui¸c˜ao destes pela sua soma. Execu¸c˜ao do algor´ıtimo Huffman(2,4,6,7,7,9) substituir 2 e 4 por 2 + 4 e Huffman(6,6,7,7,9) substituir 6 e 6 por 6 + 6 e Huffman(7,7,9,12) substituir 7 e 7 por 7 + 7 e Huffman(9,12,14) substituir 9 e 12 por 9 + 12 e Huffman(14,21) que constr´oi a primeira ´arvore na figura 2.5 que representa o

29

USTM Tome´ Sicuaio e Lucia´

Ginger

7 7 9 6 2 4
7
7
9
6
2
4

Figura 2.5:

´

Arvore com peso m´ınimo

resultado da ´arvore da execu¸c˜ao do algor´ıtimo de Huffman:

Exemplo 15. Vamos encontrar uma arvore bin´aria ´optima 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 ´arvore da execu¸c˜ao do algor´ıtimo de Huffman:

10 13 19 7 5 2 3
10
13
19
7
5
2
3

Figura 2.6:

´

Arvore com peso m´ınimo

2.2.2 Codigos de Huffman

Defini¸c˜ao 34. Seja T uma ´arvore bin´aria. 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´e as folhas

denomina-se Codigo Prefixo

Exemplo 16. O conjunto {000, 0100, 0101, 110, 11100, 11101} repesenta o codigo prefixo gerado

pela arvore bin´aria da figura 2.7.

30

USTM Tome´ Sicuaio e Lucia´

Ginger

0 1 1 1 0 1 0 0 0 0 0 1 1 0
0
1
1
1
0
1
0
0
0
0
0
1
1
0

Figura 2.7:

´

Arvore bin´aria com Codigo Prefixo

Defini¸c˜ao 35. Seja T uma ´arvore bin´aria com peso m´ınimo. O codigo prefixo formado por T

denomina-se C´odigo de Huffman.

Exemplo 17. Consideremos um alfabeto que consiste das letras a, v, e, r, y, o, z, p que tem

y = 4, o = 8, z = 3, p = 9. Vamos

determinar uma ´arvore m´ınima representada pela figura 2 .8 para o alfabeto e o codigo prefixo

frequencias correspondentes a = 30, v = 5, e = 25, r = 16,

(c´odigo de Huffman) correspondente ´e: 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 5 3 4
25
30
8
9
16
5
3
4

Figura 2.8:

´

Arvore bin´aria m´ınima

temos o codigo seguinte da palavra arvore: 11101100000010101.

Para descodificar o c´odigo 001101000100011, vamos percorrer os caracteres da esquerda para

a direita comparando com os codigos prefixos das letras (alfabeto), assim para o codigo dado

teremos a seguinte mensagem: ”prova”.

31

USTM Tome´ Sicuaio e Lucia´

Ginger

2.3 Spanning Trees

Defini¸c˜ao 36. Uma ´arvore T ´e uma ´arvore geradora dum grafo G se T ´e um subgrafo de

G que cont´em todos os vertices de G.

Exemplo 18.

Teorema 11. Um grafo G tem uma arvore geradora se e somente se G for conexo.

2.4 Minimal Spanning Trees

Defini¸c˜ao 37. Seja G um grafo com pesos. Uma ´arvore geradora m´ınima de G ´e uma

arvore geradora de G com peso m´ınimo.

Exemplo 19.

2.4.1 Algoritmo de Prim

{input: Um grafo conexo com pesos}

{ ouput: Um conjunto E de arestas de uma arvore geradora m´ınima. }

E =

Escolher w V (G) e V := {w}

while V

= V (G) do

Escolher uma aresta { u, v } em E ( G ) de peso m´ınimo com u V e v V ( G ) V.

Colocar {u, v} em E e v em V.

return E.

Exemplo 20.

2.4.2 Algoritmo de Kruskal

{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 Tome´ Sicuaio e Lucia´

Ginger

For j = 1 to |E(G)| do If (E {e j } ´e aciclico) then Colocar e j em E return E.

Exemplo 21.

2.5 Percurso de Arvores

2.5.1 Preorder

2.5.2 Inorder

2.5.3 Postorder

33

Cap´ıtulo 3

Automatos, Gramaticas, e Linguagens

3.1 Circuitos sequenciais e Maquinas de estados finitos

3.2 Automatos de estados finitos

3.3 Linguagens e Gram´aticas

3.4 Automatos finitos indeterminados

3.5 Rela¸c˜ao entre automatos e Linguagens

34