MC3305
Algoritmos e Estruturas de Dados II
Aula 10 –
Árvores Adelson-Velskii e Landis
Prof. Jesús P. Mena-Chalco
[email protected]
2Q-2014
1
Árvores balanceadas
2
Árvores balanceadas
As ABB permitem buscar de forma eficiente um elemento
dada uma chave.
Deseja-se que o custo de acesso tenha a ordem de grandeza
de uma árvore ótima → O(lg(n))
Este custo deve-se manter ao longo da utilização da
estrutura (inclusive após inserções/remoções).
O custo de ter a estrutura balanceada deve estar na,
idealmente, mesma ordem de grandeza.
Uma árvore binária é balanceada (ou equilibrada) se,
em cada um de seus nós, as subárvores esquerda e direita
tiverem aproximadamente a mesma altura.
3
Árvores balanceadas
Exemplo ruim para o restabablecimento de árvores completas
Para obter esta árvore é
necessário percorrer toda a
árvore, O(n)
Fonte: SZWARCFITER, J. L.; MARKEZON, L. Estruturas de Dados e seus Algoritmos, 3a edição, LTC, 2010.
4
Árvores balanceadas: completas e AVLs
5
AVL
Georgy M. Adelson-Velsky
Russia
Evgenii Mikhailovich Landis
Ucrania
(1922-2014/abril/26)
(1921-1997)
6
AVL
G.M. Adelson-Velskii y E.M. Landis
“An algorithm for the organization of information”.
Proceedings of the USSR Academy of Sciences, vol. 146, pp. 263–266, 1962
AVL foi a primeira estrutura
(conhecida)
de árvore de
altura balanceada/equilibrada.
7
Árvores AVL
Devido ao balanceamento da altura da árvore, as operações
de:
Busca
Inserção
Remoção
em uma árvore com n elementos podem ser efetuadas
em
mesmo no pior caso.
8
Árvores AVL
Devido ao balanceamento da altura da árvore, as operações
de:
Busca
Inserção
Remoção
em uma árvore com n elementos podem ser efetuadas
em
mesmo no pior caso.
Um teorema provado por Adelson-Velskii e Landis garante
que a árvore balanceada nunca será 45% mais alta que a
correspondente árvore perfeitamente balanceada,
independentemente do número de nós existentes.
9
Árvores AVL
Uma árvore AVL é definida como:
Uma árvore vazia é uma árvore AVL.
10
Árvores AVL
Uma árvore AVL é definida como:
Uma árvore vazia é uma árvore AVL.
Sendo T uma ABB, com subárvores esquerda (L) e
direita (R) , T será uma árvore AVL contanto que:
L e R são árvores AVL
A definição de uma ABB de altura equilibrada (AVL)
requer que cada subárvore seja também de altura
equilibrada.
11
Árvores AVL
12
Fator de balanceamento
13
Fator de balanceamento
O fator de balanceamento/equilibrio de um nó T em uma
ABB é definido como:
14
Fator de balanceamento
O fator de balanceamento/equilibrio de um nó T em uma
ABB é definido como:
Para qualquer nó T em uma árvore AVL, o fator de
balanceamento assume o valor: +1, 0, -1.
O fator de balanceamento de uma folha?
15
Fator de balanceamento
16
Fator de balanceamento
Fator=0
Alturas das subárvores
esquerda e direita
são iguais
17
Fator de balanceamento
Fator=+1
Alturas da subárvore
esquerda é maior
18
Fator de balanceamento
Fator=-1
Alturas da subárvore
esquerda é menor
19
Exemplo: Inserção de 'Maio'
20
Exemplo: Inserção de 'Março'
21
Exemplo: Inserção de 'Março'
22
Exemplo: Inserção de 'Novembro'
23
Exemplo: Inserção de 'Novembro'
24
Exemplo: Inserção de 'Novembro'
25
Exemplo: Inserção de 'Agosto'
26
Exemplo: Inserção de 'Agosto'
27
Exemplo: Inserção de 'Abril'
28
Exemplo: Inserção de 'Abril'
29
Exemplo: Inserção de 'Abril'
30
Exemplo: Inserção de 'Janeiro'
31
Exemplo: Inserção de 'Janeiro'
32
Exemplo: Inserção de 'Janeiro'
33
Exemplo: Inserção de 'Dezembro'
34
Exemplo: Inserção de 'Dezembro'
35
Exemplo: Inserção de 'Julho'
36
Exemplo: Inserção de 'Julho'
37
Exemplo: Inserção de 'Fevereiro'
38
Exemplo: Inserção de 'Fevereiro'
39
Exemplo: Inserção de 'Fevereiro'
40
Exemplo: Inserção de 'Junho'
41
Exemplo: Inserção de 'Junho'
42
Exemplo: Inserção de 'Outubro'
43
Exemplo: Inserção de 'Outubro'
44
Exemplo: Inserção de 'Outubro'
45
Exemplo: Inserção de 'Setembro'
46
Exemplo: Inserção de 'Setembro'
47
Rotações
48
Rotações
O processo de rebalanceamento é conduzido utilizando 4
tipos de rotações
LL
RR
LR
RL
Suponha que o novo nó inserido é Y:
As rotações são caracterizadas pelo ancestral A (com fator
de balanceamento +2 ou -2) mais próximo do nó Y.
49
Rotações
LL: Y inserido na subárvore esquerda da subárvore esquerda de A
LR: Y inserido na subárvore direita da subárvore esquerda de A
RR: Y inserido na subárvore direita da subárvore direita de A
RL: Y inserido na subárvore esquerda da subárvore direita de A
Seja B o filho de A no qual ocorreu a inserção de Y
LL (A = +2; B = +1)
LR (A = +2; B = -1)
RR (A = -2; B = -1)
RL (A = -2; B = +1)
A
B
Y
50
Rotação LL
51
Rotação LL
52
Rotação LL
53
Rotação LL
54
Rotação LL
55
Rotação LL
56
Rotação LL
57
Rotação LL
58
Rotação RR
59
Rotação RR
60
Rotação RR
61
Rotação RR
62
Rotação RR
63
Rotação RR
64
Rotação RR
65
Rotação RR
66
Rotação LR (a)
67
Rotação LR (b)
68
Rotação LR (b)
69
Rotação LR (b)
70
Rotação LR (c)
71
Rotação LR (c)
72
Rotação LR (c)
73
Rotação LR
74
Rotação LR
75
Rotação LR
76
Rotação LR
77
Rotação LR
78
Rotação LR
79
Rotação LR
80
Rotação LR
81
Rotação RL (a)
82
Rotação RL (b)
83
Rotação RL (b)
84
Rotação RL (b)
85
Rotação RL (c)
86
Ferramenta de visualização: AVL
http://www.qmatica.com/DataStructures/Trees/AVL/AVLTree.html
-1*(
)
87
Atividade em aula
Suponha que serão realizadas as seguintes inserções de
chaves na árvore AVL ao lado:
7
2
4
1
5
3
6
(a) Apresente a árvore AVL resultante (1 árvore)
(b) Indique o tipo de rotações consideradas em cada inserção
88
Atividade em aula
Operações
7 : RR
2 : -1 : LL
3 : LR
6 : RL
89
AVL é uma árvores balanceada?
90
Balanceamento de árvores AVL
Uma árvore AVL de altura h é balanceada se h = O(log(n))
Outra forma de pensar: Dada uma árvore AVL de altura h,
qual seria o valor mínimo possivel para n?
91
Balanceamento de árvores AVL
Uma árvore AVL de altura h é balanceada se h = O(log(n))
Outra forma de pensar: Dada uma árvore AVL de altura h,
qual seria o valor mínimo possivel para n?
h-2
h-1
92
Balanceamento de árvores AVL
Seja Th uma árvore AVL com altura h e número mínimo de
nós.
Nesta definição → h=4
T1
T2
T3
T4
93
Balanceamento de árvores AVL
Basta calcular um limite inferior do número de nós de Th.
Seja |Th| o número de nós de Th.
94
Analogia com a sequência de Fibonacci
95
AVL
Como
AVL é uma árvore balanceada!
Temos
96
AVL
Um teorema provado por Adelson-Velskii e Landis garante que a árvore
balanceada nunca será 45% mais alta que a correspondente árvore
perfeitamente balanceada, independentemente do número de nós existentes.
●
97
AVL
98
Para finalizar
Árvores balanceadas são muito utilizadas em problemas
reais:
JAVA: TreeMap, TreeSet.
C++: Map, Set do STL.
Custo de busca, inserção, remoção da árvore AVL: O(log n)
99
Sobre os slides
Slides baseados em:
Szwarcfiter, J.L. & Markezon, L. Estruturas de Dados e
seus Algoritmos, 3a edição, LTC, 2010.
Horowitz, E. & Sahni, S.; Fundamentos de Estruturas de
Dados, Editora Campus, 1984.
Wirth, N.; Algoritmos e Estruturas de Dados,
Prentice/Hall do Brasil, 1989.
Material de aula do Prof. José Augusto Baranauskas
(USP/Riberão Preto)
100
Download

Árvores AVL