Árvores Balanceadas

39
CAP-223 Árvores Balanceadas mpo de busca numa Árvore Binária de Busca pende 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

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

Page 1: Á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

Page 2: Árvores Balanceadas

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

Page 3: Árvores Balanceadas

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.)

Page 4: Árvores Balanceadas

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.)

Page 5: Árvores Balanceadas

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

Page 6: Árvores Balanceadas

CAP-223

Árvores Balanceadas (cont.)

Altura de um nó

Comprimento do caminho mais longo do nó até folha

Page 7: Árvores Balanceadas

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

Page 8: Árvores Balanceadas

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

Page 9: Árvores Balanceadas

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

Page 10: Árvores Balanceadas

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

Page 11: Árvores Balanceadas

CAP-223

Height-Balanced trees (cont.)

Três propriedades de balanceamento:

[-]horizontal

[/]inclinação à esquerda (left-leaning)

[\]inclinação à direita (right-leaning)

Page 12: Árvores Balanceadas

CAP-223

Height-Balanced trees (cont.)

rotação

12

a

bx

y

z

a

b

x y z

Page 13: Árvores Balanceadas

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

Page 14: Árvores Balanceadas

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

Page 15: Árvores Balanceadas

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)

Page 16: Árvores Balanceadas

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

}

Page 17: Árvores Balanceadas

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

}}

Page 18: Árvores Balanceadas

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

Page 19: Árvores Balanceadas

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

Page 20: Árvores Balanceadas

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

Page 21: Árvores Balanceadas

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

Page 22: Árvores Balanceadas

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

Page 23: Árvores Balanceadas

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

Page 24: Árvores Balanceadas

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)

Page 25: Árvores Balanceadas

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

}

Page 26: Árvores Balanceadas

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

}}

Page 27: Árvores Balanceadas

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)

}}

Page 28: Árvores Balanceadas

CAP-223

Height-Balanced trees (cont.)Caso 1

a

b

X Y

Z

a

b

X

Y

Z

rotação

Page 29: Árvores Balanceadas

CAP-223

Height-Balanced trees (cont.)Caso 2

a

b

XY

Z

a

b

X Y Z

rotação

Page 30: Árvores Balanceadas

CAP-223

Height-Balanced trees (cont.)

Caso 3

a

c

X Y

Z

W

b

a

b

X Y ZW

c

rotação dupla

Page 31: Árvores Balanceadas

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

Page 32: Árvores Balanceadas

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

Page 33: Árvores Balanceadas

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

Page 34: Árvores Balanceadas

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

Page 35: Árvores Balanceadas

CAP-223

Multiway Trees (cont.)

Exemplo de Árvore (3,5) B-Tree

19

1115 273645

2 5 7 4857661214 1618 3033 373922252620

Page 36: Árvores Balanceadas

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

Page 37: Árvores Balanceadas

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.)

Page 38: Árvores Balanceadas

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)

Page 39: Árvores Balanceadas

CAP-223

QuadTreesUsadas muito para armazenamento de imagens

01

2 3