Вы находитесь на странице: 1из 20

17/11/2014

108561 - ALGORITMOS E
ESTRUTURAS DE DADOS
Prof. Valrio Aymor Martins
Aula 25/26 Arvores
Extrado das aulas de David Menotti DECOM/UFOP
Algoritmos e Estruturas de Dados
Prof. Valrio Aymor Martins

2014/2

rvores
So estruturas de dados adequadas para a
representao de hierarquias.
Uma rvore composta por um conjunto de ns.
Existe um n r, denominado raiz, que contm zero
ou mais subrvores, cujas razes so ligadas
diretamente a r.
A raiz se liga a um ou mais elementos, e cada um
desses elementos forma uma nova rvore. Esses
elementos so seus filhos.
2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

17/11/2014

rvores de Pesquisa
A rvore de pesquisa uma estrutura de dados
muito eficiente para armazenar informao.
Ela particularmente adequada quando existe
necessidade de considerar todos ou alguma
combinao de:
1. Acesso direto e seqencial eficientes.
2. Facilidade de insero e retirada de registros.
3. Boa taxa de utilizao de memria.
4. Utilizao de memria primria e secundria.
Algoritmos e Estruturas de Dados
Prof. Valrio Aymor Martins

2014/2

rvores: Conceitos
GRAU: nmero de subrvores em um n.
FOLHA: um n que possui grau zero, isto , no
possui subrvores.
FILHOS: so as razes das subrvores de um n.
N NO TERMINAL: um n que no uma folha e
diferente da raiz.
2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

17/11/2014

Formas de Representao Grfica

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

rvores Binrias
uma rvore que pode ser nula e que tem as
seguintes caractersticas:
Existe um n especial chamado raiz
Nenhum n tem grau superior a 2, isto , todo n tem no
mximo 2 filhos
Existe um senso de posio, ou seja, distingue-se entre
uma subrvore esquerda e subrvore direita.

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

17/11/2014

rvores Binrias de Pesquisa sem Balanceamento


Para qualquer n que contenha um registro

... temos a relao invariante

Todos os registros com chaves menores esto na subrvore


esquerda.
Todos os registros com chaves maiores esto na subrvore
direita.
2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

rvores Binrias de Pesquisa sem Balanceamento

O nvel do n raiz 0.
Se um n est no nvel i ento a raiz de suas subrvores esto
no nvel i + 1.
A altura de um n o comprimento do caminho mais longo
deste n at um n folha.
A altura de uma rvore a altura do n raiz.
2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

17/11/2014

Processo de Pesquisa em rvores


Para encontrar um registro com uma chave x:

Compare-a com a chave que est na raiz.


Se x menor, v para a subrvore esquerda.
Se x maior, v para a subrvore direita.
Repita o processo recursivamente, at que a
chave procurada seja encontrada ou um n folha
atingido.
Se a pesquisa tiver sucesso ento o contedo do
registro retorna no prprio registro x.
Algoritmos e Estruturas de Dados
Prof. Valrio Aymor Martins

2014/2

Processo para Inserir em rvores


Onde inserir?
Chegar a um elemento que no tem filhos ter
uma pesquisa sem sucesso.
O apontador desse elemento o ponto de
insero.

Como inserir?
Pesquise at achar o elemento que no tem filhos
Inserir o registro
2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

10

17/11/2014

Processo para Inserir em rvores

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

11

Processo para Inserir em rvores

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

12

17/11/2014

Processo para Remoo em rvores


Como retirar?
Pesquise at achar o elemento
Folha?
N interno, contendo um filho?
Raiz da rvore ou subrvore?

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

2014/2

13

Processo para Remoo em rvores


1. A retirada de um registro no to simples quanto a insero.
2. Se o n que contm o registro a ser retirado possui no
mximo um descendente a operao simples.
3. No caso do n conter dois descendentes o registro
a ser retirado deve ser primeiro:
substitudo pelo registro mais direita na subrvore
esquerda;
ou pelo registro mais esquerda na subrvore direita.

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

14

17/11/2014

Exemplo de Retirada de N

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

15

Exemplo de Retirada de N

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

16

17/11/2014

Exemplo de Retirada de N

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

17

Exemplo de Retirada de N

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

18

17/11/2014

Percorrendo a rvore
Percorrer a rvore:

Em que ordem chaves so recuperadas?


1, 2, 3, 4, 5, 6 e 7.

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

19

Caminhamento Central
Aps construda a rvore, pode ser necessrio percorrer
todo os registros que compem a tabela ou arquivo.
Existe mais de uma ordem de caminhamento em
rvores, mas a mais til a chamada ordem de
caminhamento central.
O caminhamento central mais bem expresso em
termos recursivos:
1. caminha na subrvore esquerda na ordem central;
2. visita a raiz;
3. caminha na subrvore direita na ordem central.

Uma caracterstica importante do caminhamento central


que os ns so visitados de forma ordenada.
2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

20

10

17/11/2014

Caminhamento Central
n O procedimento Central mostrado abaixo:
def Central(no):
if (no = Null) return
Central(no[0])
print(no[1])
Central(no[2])
return

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

21

Complexidade Computacional
n O nmero de comparaes em uma pesquisa com
sucesso:

melhor caso : C(n) = O(1)

pior caso: C(n) = O(n)

caso mdio : C(n) = O(log n)


n O tempo de execuo dos algoritmos para rvores
binrias de pesquisa dependem muito do formato das
rvores.

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

22

11

17/11/2014

Complexidade Computacional
1. Para obter o pior caso basta que as chaves sejam
inseridas em ordem crescente ou decrescente.
Neste caso a rvore resultante uma lista linear,
cujo nmero mdio de comparaes (n + 1)/2.
2. Para uma rvore de pesquisa aleatoria o nmero
esperado de comparaes para recuperar um
registro qualquer cerca de 1,39 log n, apenas 39%
pior que a rvore completamente balanceada.
Algoritmos e Estruturas de Dados
Prof. Valrio Aymor Martins

2014/2

23

rvores Binrias Balanceadas AVL


Georgy Adelson-Velsky and Landis' tree (1962)

rvore binria de busca


tal que, para qualquer n
interno v, a diferena das
alturas dos filhos de v
no mximo 1.
rvores AVL so
balanceadas.

4
44
2

3
17

78
1

32

1
88

50
1
48

62

Exemplo: nmeros prximo dos ns


so suas alturas.
2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

24

12

17/11/2014

rvores Binrias Balanceadas - AVL


Inserindo os ns 30, 20, 40, 10, 25, 35 e 50 nesta ordem,
teremos:
30
20
10

40
25

35

50

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

2014/2

25

rvores Binrias no Balanceada


Inserindo os ns 10, 20, 30, 40 e 50 nesta ordem,
temos:
10
20
30
40
50

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

26

13

17/11/2014

rvores Binrias Balanceadas


Existem ordens de insero de ns que conservam o
balanceamento de uma rvore binria.
Na prtica impossvel prever essa ordem ou at
alter-la.
Existem vrios algoritmos para balanceamentos.

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

27

rvores Binrias Balanceadas


A vantagem de uma rvore balanceada com relao
a uma degenerada est em sua eficincia.
Por exemplo: numa rvore binria degenerada de
10.000 ns so necessrias, em mdia, 5.000
comparaes (semelhana com arrays ordenados e
listas encadeadas).
Numa rvore balanceada com o mesmo nmero de
ns essa mdia reduz-se a 14 comparaes.

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

28

14

17/11/2014

rvores AVL: Fator de Balanceamento


Uma rvore binria balanceada aquela na qual,
para cada n, as alturas de suas subrvores esquerda
e direita diferem de, no mximo, 1.
Fator de balanceamento (FB) de um n a diferena
entre a altura da subrvore esquerda em relao
subrvore direita.
FB(p) = altura(subrvore esquerda de p)
- altura(subrvore direita de p)
Em uma rvore binria balanceada todos os FB de
todos os ns esto no intervalo -1 FB 1
2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

29

rvores AVL: Insero


Inicialmente inserimos um novo n na rvore
normalmente.
A insero deste pode degenerar a rvore.
A restaurao do balanceamento feita atravs de
rotaes na rvore no n piv.
N piv aquele que aps a insero possui Fator
de Balanceamento fora do intervalo.

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

30

15

17/11/2014

AVL
Primeiro caso: (rotao simples para a direita)
FB > 1 (subrvore esquerda maior que subrvore
direita)
E a subrvore esquerda desta subrvore esquerda
maior que a subrvore direita dela
Ento realizar uma rotao simples para a direita.
3
2
1
Algoritmos e Estruturas de Dados
Prof. Valrio Aymor Martins

2014/2

31

rvores AVL: Insero


Primeiro caso: (rotao simples para a direita)
3
2
2
1

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

32

16

17/11/2014

rvores AVL: Insero


Segundo caso: (rotao simples para a esquerda)
FB < -1 (subrvore esquerda menor que subrvore
direita)
E a subrvore direita desta subrvore direita maior
que a subrvore esquerda dela
Ento realizar uma rotao simples para a esquerda.
1
2
3
Algoritmos e Estruturas de Dados
Prof. Valrio Aymor Martins

2014/2

33

rvores AVL: Insero


Segundo caso: (rotao simples para a esquerda)

2
2
1

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

34

17

17/11/2014

rvores AVL: Insero


Terceiro caso: (rotao dupla para a direita)
FB > 1 (subrvore esquerda maior que subrvore
direita)
E a subrvore esquerda desta subrvore esquerda
menor ou igual que a subrvore direita dela
Ento realizar uma rotao dupla para a direita.
3
1
2
Algoritmos e Estruturas de Dados
Prof. Valrio Aymor Martins

2014/2

35

rvores AVL: Insero


Terceiro caso: (rotao dupla para a direita)

3
2

2
2

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

36

18

17/11/2014

rvores AVL: Insero


Quarto caso: (rotao dupla para a esquerda)
FB < -1 (subrvore esquerda menor que subrvore
direita)
E a subrvore direita desta subrvore direita menor
que a subrvore esquerda dela
Ento realizar uma rotao dupla para a esquerda.
1
3
2
Algoritmos e Estruturas de Dados
Prof. Valrio Aymor Martins

2014/2

37

rvores AVL: Insero


Quarto caso: (rotao dupla para a esquerda)

1
2
3

2
1

2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

38

19

17/11/2014

rvores AVL: Remoo: Rebalanceamento


Seja z o primeiro n desbalanceado encontrado acima de w. Seja y o
filho de z com maior altura, e x o filho de y com maior altura.
Executar restructure(x) para rebalancear z.
Pode ocorrer desbalanceamento de outro n acima continuar
verificao de balanceamento at raiz.
a=z

62

44

17

50

48

2014/2

c=x

78

54

44

b=y

62

88

17

78

50

48

88

54

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

39

Complexidade em rvores AVL


uma nica reestruturao O(1)
o usando uma rvore binria implementada com estrutura
ligada
pesquisa O(log n)
o altura de rvore O(log n), no necesita reestruturao
inserir O(log n)
o busca inicial O(log n)
o reestruturao para manter balanceamento O(log n)
remove O(log n)
o busca inicial O(log n)
o reestruturao para manter balanceamento O(log n)
2014/2

Algoritmos e Estruturas de Dados


Prof. Valrio Aymor Martins

40

20

Вам также может понравиться