Árvores Balanceadas
description
Transcript of Árvores Balanceadas
CAP-223
Árvores Balanceadas
Tempo de busca numa Árvore Binária de Buscadepende da profundidade da árvore
1
2
3
4
8
4 12
2 6 10 14
1 3 5 7 9 11 13 15
Com 4 nós precisa de 4 comparações
Com 15 nós precisa de 4 comparações
CAP-223
Árvores Balanceadas (cont.)
2 5 10 7 1 6 8 4 3 9
1 9 7 2 8 10 4 3 6 5
A geração de uma Árvore Binária de Busca nãogarante que o resultado seja eficiente para a busca
2
1 5
4
3
10
7
6 8
9
1
9
7
2
10
8
4
3 6
5
CAP-223
6 7 8 3 4 9 2 5 10 1 6 10 3 5 9 1 4 2 8 7
6
3
2
1
7
4
5
8
9
10
6
3
1
2
5
4
10
9
8
7
Árvores Balanceadas (cont.)
CAP-223
O ideal é sempre ter uma Árvore Binária completa.Mas nem sempre isso é possível.
Árvore não é balanceada
A melhor estrutura, para uma árvore parcialmentepreenchida, é aquela onde TODOS OS NÍVEISestão preenchidos exceto o último nível que podenão ter algumas folhas
Árvores Balanceadas (cont.)
CAP-223
Árvores Balanceadas (cont.)
Conhecimento a priori dos dados é uma boa ajuda.Não é sempre o caso.
Mas nas operações de inserção e remoção, aeficiência na busca deve ser mantida. COMO?
Duas categorias de árvores:
Árvores Height-Balanced (1962) AVL (G. Adel’son-Vel’skii e E. Landis)
Árvores Multiway B-trees e sua generalização a-b trees
CAP-223
Árvores Balanceadas (cont.)
Altura de um nó
Comprimento do caminho mais longo do nó até folha
CAP-223
Height-Balanced treesPara cada nó, as alturas das suas sub-árvoresdiferem no máximo em 1. Também são chamadasde árvores AVL e esta diferença é o fator debalanceamento.
5
2
1 4
3
10
7 11
6 9 12
8
6
4
2
1 3
5
8
7 9
10
CAP-223
Height-Balanced trees (cont.)Convenções usadas para o Fator de Balanceamento
[/] ou [ -1], sub-árvore à esquerda tem altura maior[\] ou [+1], sub-árvore à direita tem altura maior[-] ou [0], sub-árvores possuem a mesma altura
0
+1
0 +1
0
0
0 -1
00 0
CAP-223
6
4
5
8
9
10
Height-Balanced trees (cont.)
Exemplo de uma árvore que não está balanceadapela altura.
O nó marcado viola a condição de balanceamento
CAP-223
Height-Balanced trees (cont.)
Operações aplicadas para reestruturar AVLsdepois de serem “bagunçadas” devido àinserção e remoção
Rotação (rotation)
Rotação Dupla (double rotation)
Árvore dividida em sub-árvores e reconstruinuma maneira diferente
CAP-223
Height-Balanced trees (cont.)
Três propriedades de balanceamento:
[-]horizontal
[/]inclinação à esquerda (left-leaning)
[\]inclinação à direita (right-leaning)
CAP-223
Height-Balanced trees (cont.)
rotação
12
a
bx
y
z
a
b
x y z
CAP-223
Height-Balanced trees (cont.)
rotação dupla
Y
1
2
a
b
x Z
c
W
Y
a
b
x
Z
c
W
CAP-223
Height-Balanced trees (cont.)Processo de Inserção
novo elemento inserido na árvore
condição de balanceamento do novo nó -
a partir do novo nó•caminhe até a raiz passando a informação que a altura da sub-árvore do nó inserido aumentou em 1
em cada nó no caminho uma operação baseada em algumas regras é realizada
CAP-223
Height-Balanced trees (cont.)
As regras dependem de:
condição de balanceamento do nó (encontrado no caminho) antes da inclusão do novo elemento
direção do acesso a esse nó (esquerda ou direita)
CAP-223
Height-Balanced trees (cont.)
Regra I1
SE ( nó atual tem a condição de balanceamento horizontal[-] ){
mude para [\] se acessou pelo lado direito
mude para [/] se acessou pelo lado esquerdo
SE ( nó é raiz ) FIMSENÃO continue subir
}
CAP-223
Height-Balanced trees (cont.)Regra I2
SE ( nó atual tem a condição de balanceamento [/] ou [\] ){
SE ( acesso via sub-árvore que era mais baixa antes da inserção do nó)
{mude para [-]FIM
}}
CAP-223
Height-Balanced trees (cont.)
1
2
Insere 0
Antes da inserção do novo nó 0a sub-árvore à esquerda era maisbaixa que o da direita (Não haviasub-árvore à esquerda)
1
20
1
20
CAP-223
SE ( nó atual tem a condição de balanceamento [/] ou [\] ){
SE ( acesso via sub-árvore que era mais alta antes da inserção do nó)
{// condição de balanceamento violadarestaura o balanceamento
}}
Height-Balanced trees (cont.)
Regra I3
CAP-223
2
1 5
3
Height-Balanced trees (cont.)
Insere 4
2
1 5
3
4
Antes da inserção do novo nó 4a sub-árvore à esquerda era maisalta que o da direita (Não haviasub-árvore à direita)
2
1 5
3
4
BALANCEAR
CAP-223
Height-Balanced trees (cont.)
Como restaurar a condição de balanceamento?
SE os últimos dois passos vieram da mesmadireção (os dois de esquerda ou os dois dedireita) ENTÃO aplica rotação
SE os últimos dois passos vieram de direçõesopostas (um de esquerda e outro de direita OUum de direita e outro de esquerda) ENTÃOaplica rotação dupla
CAP-223
Height-Balanced trees (cont.)
11
2
1
2
5
2
1 5
rotação
2
1 5
3
2 5
34
2
1 4
3 53
rotaçãodupla
2
1 5
3
4
CAP-223
Height-Balanced trees (cont.)
Processo de Remoção
um elemento é removido da árvore
a partir do nó removido•caminhe até a raiz passando a informação que a altura da sub-árvore do nó removido diminuiu em 1
em cada nó no caminho uma operação baseada em algumas regras é realizada
CAP-223
Height-Balanced trees (cont.)
As regras dependem de:
condição de balanceamento do nó (encontrado no caminho) antes da remoção do elemento
direção do acesso a esse nó (esquerda ou direita)
CAP-223
Height-Balanced trees (cont.)Regra D1
SE ( nó atual tem a condição de balanceamento horizontal[-] ){
mude para [\] se acessou pelo lado direito
mude para [/] se acessou pelo lado esquerdo
}
CAP-223
Height-Balanced trees (cont.)Regra D2
SE ( nó atual tem a condição de balanceamento [/] ou [\] ){
SE ( acesso via sub-árvore que era mais alta antes da remoção do nó)
{mude para [-]continue a caminhar para cima com amensagem que a sub-árvore do nóencurtou
}}
CAP-223
Height-Balanced trees (cont.)Regra D3
SE ( nó atual tem a condição de balanceamento [/] ou [\] ){
SE ( acesso via sub-árvore que era mais baixa antes da remoção do nó)
{// condição de balanceamento violadarestaura o balanceamento (3 casos)
}}
CAP-223
Height-Balanced trees (cont.)Caso 1
a
b
X Y
Z
a
b
X
Y
Z
rotação
CAP-223
Height-Balanced trees (cont.)Caso 2
a
b
XY
Z
a
b
X Y Z
rotação
CAP-223
Height-Balanced trees (cont.)
Caso 3
a
c
X Y
Z
W
b
a
b
X Y ZW
c
rotação dupla
CAP-223
Multiway Trees•Número variável de filhas•Devido ao interesse em manter as árvores balanceadas, tem que adicionar algumas restrições
Restrições
Folhas na mesma profundidadeLimitação no número de filhas
limite inferior alimite superior bexemplo (2,3) trees
nós com 2 ou 3 filhas
CAP-223
Multiway TreesDefinição de árvore-(a,b):
•Elementos xi com ordenação definida•a e b são inteiros tal que 2 a e (2a-1) b•c(N) é número de filhas do nó N
•todas as folhas no mesmo nível•2 c(raiz) b•a c(N) b, para N que não seja raiz
Árvores-(a,b) com b = 2a - 1
B-trees
CAP-223
Multiway Trees (cont.)Os nós que não são folhas são consideradosnós internos.
Nó interno com k filhas possui k-1 elementosou chaves tal que x1 < x2 < ... < xk-1
Árvores que correspondem às k filhas sãoT1, T2, ..., Tk
y xi para todos os elementos y na T1 ... Ti
xi z para todos os elementos z na Ti+1 ... Tk
CAP-223
Multiway Trees (cont.)
Os algoritmos operam nos nós internos eignoram as folhas. As folhas são entidadesfictícias.
Na verdade as folhas são arquivos físicoscom todos os registros cujo as chaves estãolocalizadas nos nós internos
CAP-223
Multiway Trees (cont.)
Exemplo de Árvore (3,5) B-Tree
19
1115 273645
2 5 7 4857661214 1618 3033 373922252620
CAP-223
Multiway Trees (cont.)
Nó 19 aponta para 2 nós [nó 11-15 e nó 27-36-45]
Nó 11-15 aponta para 3
Nó 27-36-45 aponta para 4
CAP-223
Operação de Inserção
Separação dos nós
Operação de Remoção
Junção dos nós
Multiway Trees (cont.)
CAP-223
Multiway Trees (cont.)A operação de inserção começa a partir de umaprocura, até a FOLHA, sem sucesso do nó a serinserido O NÓ NÃO ESTÁ NA ÁRVORE
A chave a ser inserida começa no pai da FOLHA.
Processo de inserção depende se o Nó possuiMENOS que (b-1) elementos. Neste caso, o elementox é inserido.Caso contrário há a necessidade de uma cisão(split)
CAP-223
QuadTreesUsadas muito para armazenamento de imagens
01
2 3