Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho [email protected] 1.

25
Árvores Árvores Balanceadas Balanceadas (AVL) (AVL) Prof. Luiz José Hoffmann Filho [email protected] 1

Transcript of Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho [email protected] 1.

Page 1: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Árvores Árvores Balanceadas Balanceadas

(AVL) (AVL) Prof. Luiz José Hoffmann Filho

[email protected]

1

Page 2: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

RoteiroRoteiro• Contextualização

• Árvores Balanceadas (AVL)

• Operações de Balanceamento

2

Page 3: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

RoteiroRoteiro• Contextualização

• Árvores Balanceadas (AVL)

• Operações de Balanceamento

3

Page 4: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

ContextualizaçãoContextualização• As ABP estudadas têm uma séria desvantagem que

pode afetar o tempo necessário para recuperar um item armazenado.

• A desvantagem é que o desempenho da ABP depende da ordem em que os elementos são inseridos.

4

1, 2, 3, 4, 5, 6, 7 4, 6, 2, 5, 1, 7, 31

2

3

4

5

67

2

4

6

1 3 5 7

Page 5: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

ContextualizaçãoContextualização• Idealmente, deseja-se que a árvore esteja

balanceada, para qualquer nó p da árvore.• Como saber se a árvore está balanceada ? • Para cada nó p da árvore a altura da sua sae

é aproximadamente igual à altura da sua sad.

5

Page 6: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

RoteiroRoteiro• Contextualização

• Árvores Balanceadas (AVL)

• Operações de Balanceamento

6

Page 7: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Árvores Balanceadas (AVL)Árvores Balanceadas (AVL)• O nome AVL vem de seus criadores Adelson Velsky e

Landis (1962).

• Uma árvore binária de pesquisa T é denominada AVL se:o Para todos nós de T, as alturas de suas duas sub-

árvores diferem no máximo de uma unidade.

• Operações de consulta, inserção e remoção de nós tem custo O(log2n).

7

130

100 150

120 20080

110

120

100

11080

130

200

150

Page 8: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Como reconhecer uma árvore desbalanceada? Como reconhecer uma árvore desbalanceada?

(1/2)(1/2)

• Como saber se a árvore está desbalanceada ?o Verificando se existe algum nodo “desregulado”.

• Como saber se um nodo está desregulado ? o Subtraindo-se as alturas das suas sub-árvores.

• Por questões de eficiência, estas diferenças são pré-calculadas e armazenadas nos nós correspondentes, sendo atualizadas durante as operações.

8

Page 9: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Como reconhecer uma árvore desbalanceada?Como reconhecer uma árvore desbalanceada?

(2/2)(2/2)

• Possíveis valores de diferença para cada nó em uma árvore balanceada: -1, 0, 1.

• Fator de Balanceamento (FB) de cada nó da árvoreo FB(p) = h(sad(p)) – h(sae(p))

9

Page 10: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Exemplos de cálculos de FBExemplos de cálculos de FB

10

1

2

3

4

5

67

+6+5

+4+3

+2+1

0

Inserção: 1, 2, 3, 4, 5, 6 e 7

2

4

6

1 3 5 70 0

0

0 0

00

Inserção: 4, 2, 3, 6, 5, 1 e 7

4

1 6

3

2

5 7

-1

0

00

+2

-1

0

Inserção: 4, 1, 3, 6, 5, 2 e 7

Page 11: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Operação: InserçãoOperação: Inserção

11

2

4

6

1 3 5 70 0

0

0 0

00

Op. de balanceamento4

1 6

3

2

5 7

0

00

+2

-1

0

Inserção: 4, 6, 1, 7, 5, 3 e 2. -1

Page 12: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Operação: RemoçãoOperação: Remoção

12

4

6

7

+2

0+1Remover nó 2

4

6

70

0

0Op. de balanceamento4

2 6

7

+1

0

+10

Inserção: 4, 6, 2 e 7.

Page 13: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

RoteiroRoteiro• Contextualização

• Árvores Balanceadas (AVL)

• Operações de Balanceamento

13

Page 14: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Operações de Inserção e RemoçãoOperações de Inserção e Remoção• A inserção ou remoção de um nó em uma árvore

AVL pode ou não provocar seu desbalanceamento.

• Se a árvore AVL ficar desbalanceada, a restauração do seu balanceamento é realizado através de ROTAÇÕES.

14

Page 15: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Tipos de RotaçõesTipos de Rotações• Rotação Simples:

o Rotação a Esquerdao Rotação a Direita

• Rotação Dupla:o Rotação a Esquerdao Rotação a Direita

15

Page 16: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Exemplos de Rotação SimplesExemplos de Rotação Simples• Suponha que nós queiramos inserir o nó 3 na árvore

inicial abaixo

3

16

08

4 10

2 6

00 0

-18

4 10

2 6

3

-1 0+1 0

-2

0

Rotação a direita (nó 8)0

0

0 0

4

2 8

1063

+1 0

A inserção do nó 3 produziu um desbalanço no nó 8 verificado pelo FB = -2 neste nó. Neste caso, como os sinais dos FB são os mesmos (nó 8 com FB = -2 e nó 4 com FB = -1) significa que precisamos fazer apenas uma ROTAÇÃO SIMPLES.

Page 17: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Exemplo de Rotação Dupla Exemplo de Rotação Dupla (1/2)(1/2)

• Suponha que queiramos inserir o nó 5 na árvore abaixo

17

08

4 10

2 6

00 0

-1

0

8

4 10

2 6

50

0-1

+1

-2

(a)8

6 10

4

52

00

0

0-2-2

Observe que o nó 8 tem FB = -2 e tem um filho com FB = +1 (sinais opostos). Neste caso, o balanceamento é alcançado com duas rotações. Primeiro: (a) rotação simples sobre o nó 4 (com FB = +1) para a esquerda.

Page 18: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Exemplo de Rotação Dupla Exemplo de Rotação Dupla (2/2)(2/2)

18

8

6 10

4

52

00

0

0-2-2

Logo após da rotação a esquerda: (b) rotaciona-se o nó 8 (FB = -2) na direção oposta (direita neste caso).

(b) 6

4 8

2 105

0

00

00+1

Page 19: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Pseudo-Código: Rotações Pseudo-Código: Rotações SimplesSimples

• Rotação Simples a Esquerda

p aponta para o nó desbalanceado q = right(p); hold = left(q); left(q) = p; right(p) = hold; p = q;

• Rotação Simples a Direita p aponta para o nó desbalanceado q = left(p); hold = right(q); right(q) = p; left(p) = hold; p = q;

19

10

12

157

30

21

+2

0

+10

+10

10 15 12 7 21 30

2

10

1

154

7

0

0

0

-1

-1

-2 10 15 4 2 1 7

Page 20: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

Pseudo-Código: Busca e InserçãoPseudo-Código: Busca e Inserção• Busca e Inserção

o Procurar pseudo-código no livro do Tenembaum “Estrutura de Dados Usando C”. pags: 531, 532, 533 e 534.

20

Page 21: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

ConclusõesConclusões• Balanceamento de árvores busca minimizar o

número médio de comparações necessárias para localizar qualquer dado.

• Operações de inserção e remoção de nós tendem a tornar as árvores desbalanceadas.

• Há um custo extra de processamento.

• Compensado quando os dados armazenados precisam ser recuperados muitas vezes.

21

Page 22: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

AVL Tree AppletAVL Tree Applet• http://www.qmatica.com/DataStructures/Trees/AV

L/AVLTree.html• http://people.ksp.sk/~kuko/bak/

22

Page 23: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

ExercíciosExercícios• Insira em uma árvore AVL, itens com as chaves

apresentadas nos itens a seguir (na ordem em que aparecem). Desenhe a árvore resultante da inserção, sendo que uma nova árvore deve ser desenhada quando houver uma rotação. Indique qual a rotação que foi executada.

a)30, 40, 24, 58, 48, 26, 11, 13, 14b)20, 15, 25, 10, 30, 24, 17, 12, 5, 3c) 40, 30, 50, 45, 55, 52d)20, 15, 25, 12, 17, 24, 30, 10, 14, 13e)20, 15, 25, 12, 17, 30, 26f) 35, 39, 51, 20, 13, 28, 22, 32, 25, 33

23

Page 24: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

ExercíciosExercícios• Dadas as seguintes chaves M, G, B, H, S, P, F, C

como entrada (nesta ordem), desenhe a respectiva árvore AVL (balanceando-a quando for necessário).

24

Page 25: Árvores Balanceadas (AVL) Prof. Luiz José Hoffmann Filho ljhfilho@gmail.com 1.

ExercíciosExercícios

25

Nesta questão, você deverá executar duas inserções e duas remoções na árvore AVL acima, desenhe cada uma das operações necessárias.

Insira 105Insira 20Remova 99Remova 36