Árvores Balanceadas

Post on 20-Jan-2016

32 views 2 download

description

8. 1. 4. 12. 2. 6. 10. 14. 2. 3. 4. 11. 5. 7. 9. 13. 15. 1. 3. Árvores Balanceadas. Tempo de busca numa Árvore Binária de Busca depende da profundidade da árvore. Com 4 nós precisa de 4 comparações. Com 15 nós precisa de 4 comparações. 1. 2. 9. 1. 5. 7. 10. 4. 10. - PowerPoint PPT Presentation

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