A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Árvores Balanceadas (AVL)

Apresentações semelhantes


Apresentação em tema: "Árvores Balanceadas (AVL)"— Transcrição da apresentação:

1 Árvores Balanceadas (AVL)
Prof. Luiz José Hoffmann Filho

2 Roteiro Contextualização Árvores Balanceadas (AVL)
Operações de Balanceamento

3 Roteiro Contextualização Árvores Balanceadas (AVL)
Operações de Balanceamento

4 Contextualizaçã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. 1, 2, 3, 4, 5, 6, , 6, 2, 5, 1, 7, 3

5 Contextualizaçã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.

6 Roteiro Contextualização Árvores Balanceadas (AVL)
Operações de Balanceamento

7 Á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: 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). 130 100 150 120 200 80 110

8 Como reconhecer uma árvore desbalanceada? (1/2)
Como saber se a árvore está desbalanceada ? Verificando se existe algum nodo “desregulado”. Como saber se um nodo está desregulado ? 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.

9 Como reconhecer uma árvore desbalanceada? (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 árvore FB(p) = h(sad(p)) – h(sae(p))

10 Exemplos de cálculos de FB
+6 +5 +4 +3 +2 +1 Inserção: 1, 2, 3, 4, 5, 6 e 7 Inserção: 4, 2, 3, 6, 5, 1 e 7 -1 +2 Inserção: 4, 1, 3, 6, 5, 2 e 7

11 Operação: Inserção Inserção: 4, 6, 1, 7, 5, 3 e 2. -1 +2
+2 Op. de balanceamento -1

12 Operação: Remoção Inserção: 4, 6, 2 e 7. +1 +2 Remover nó 2
Inserção: 4, 6, 2 e 7. +2 +1 Remover nó 2 Op. de balanceamento

13 Roteiro Contextualização Árvores Balanceadas (AVL)
Operações de Balanceamento

14 Operaçõ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.

15 Tipos de Rotações Rotação Simples: Rotação Dupla: Rotação a Esquerda
Rotação a Direita Rotação Dupla:

16 Exemplos de Rotação Simples
Suponha que nós queiramos inserir o nó 3 na árvore inicial abaixo -1 -1 +1 -2 +1 Rotação a direita (nó 8) 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.

17 Exemplo de Rotação Dupla (1/2)
Suponha que queiramos inserir o nó 5 na árvore abaixo -1 -1 +1 -2 (a) -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.

18 Exemplo de Rotação Dupla (2/2)
-2 (b) +1 Logo após da rotação a esquerda: (b) rotaciona-se o nó 8 (FB = -2) na direção oposta (direita neste caso).

19 Pseudo-Código: Rotações Simples
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 q = left(p); hold = right(q); right(q) = p; left(p) = hold;

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

21 Conclusõ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.

22 AVL Tree Applet

23 Exercí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. 30, 40, 24, 58, 48, 26, 11, 13, 14 20, 15, 25, 10, 30, 24, 17, 12, 5, 3 40, 30, 50, 45, 55, 52 20, 15, 25, 12, 17, 24, 30, 10, 14, 13 20, 15, 25, 12, 17, 30, 26 35, 39, 51, 20, 13, 28, 22, 32, 25, 33

24 Exercí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).

25 Exercícios 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 105 Insira 20 Remova 99 Remova 36


Carregar ppt "Árvores Balanceadas (AVL)"

Apresentações semelhantes


Anúncios Google