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

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

Árvores Binárias de Pesquisa e Balanceamento usando Árvores AVL

Apresentações semelhantes


Apresentação em tema: "Árvores Binárias de Pesquisa e Balanceamento usando Árvores AVL"— Transcrição da apresentação:

1 Árvores Binárias de Pesquisa e Balanceamento usando Árvores AVL
Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)

2 UDESC – Prof. Kariston Pereira
Tópicos Abordados Árvores Binárias de Pesquisa (ABP) Balanceamento usando árvores AVL UDESC – Prof. Kariston Pereira

3 Árvores Binárias de Pesquisa
Definição: árvore binária de pesquisa (ABP) é uma árvore binária na qual para cada nó n: A sua subárvore à esquerda contém somente nós com valores menores que o valor em n. A sua subárvore à direita contém somente nós com valores maiores que o valor em n. Ambas as subárvores também sejam ABP. Os nós de uma ABP contêm valores distintos. UDESC – Prof. Kariston Pereira

4 UDESC – Prof. Kariston Pereira
ABP: exemplo 4 3 6 1 5 7 2 UDESC – Prof. Kariston Pereira

5 Árvores Binárias de Pesquisa
ABPs são comumente utilizadas para: Busca; Implementação de estruturas mais abstratas, tais como conjuntos. Operações típicas em um ABP: Busca Inserção Exclusão UDESC – Prof. Kariston Pereira

6 UDESC – Prof. Kariston Pereira
Busca numa ABP Em média, tem desempenho na ordem de O(log n). node* busca(node *n, char chave) { if (n == null) return null; if (chave < n->info) return busca(n->left, chave); if (chave > n->info) return busca(n->right, chave); return n; } UDESC – Prof. Kariston Pereira

7 UDESC – Prof. Kariston Pereira
Inserção numa ABP Deve obedecer as condições de uma ABP. Percorre a árvore até encontrar o nó no qual o novo nó deve ser inserido como filho. Exemplo: inserção do valor 2. 4 4 3 6 3 6 1 5 7 1 5 7 2 UDESC – Prof. Kariston Pereira

8 UDESC – Prof. Kariston Pereira
Exclusão numa ABP Deve obedecer as condições de uma ABP. Três casos de exclusão: Nó folha Nó tem um filho Nó tem dois filhos Por cópia Por fusão UDESC – Prof. Kariston Pereira

9 UDESC – Prof. Kariston Pereira
Exclusão de um nó folha Exclue-se o nó e seu pai aponta para nulo. Exemplo: exclusão do nó 2. 4 4 3 6 3 6 1 5 7 1 5 7 2 UDESC – Prof. Kariston Pereira

10 Exclusão de um nó com um filho
Exclue-se o nó e seu pai aponta para o nó filho. Exemplo: exclusão do nó 1. 4 4 3 6 3 6 1 5 7 2 5 7 2 UDESC – Prof. Kariston Pereira

11 Exclusão de um nó com dois filhos... Por Fusão
Extrai-se uma subárvore das duas subárvores do nó e a anexa ao ascendente do nó. Deve-se encontrar na subárvore esquerda, o nó com maior valor e torná-lo um ascendente da subárvore direita. Tornar o maior nó na subárvore esquerda a raiz da subárvore direita. Excluir o nó e seu pai deve apontar para a raiz da subárvore esquerda. Exemplo 1: exclusão do nó 6. 4 4 3 5 3 6 1 7 1 5 7 2 UDESC – Prof. Kariston Pereira 2

12 Exclusão de um nó com dois filhos... Por Fusão... Exemplo 2
Tornar o maior nó na subárvore esquerda a raiz da subárvore direita. Excluir o nó e seu pai deve apontar para a raiz da subárvore esquerda. Exemplo: exclusão do nó 10 15 11 5 10 30 12 5 11 20 40 30 12 40 20 UDESC – Prof. Kariston Pereira

13 Exclusão de um nó com dois filhos... Por Fusão... Exemplo 3
Tornar o maior nó na subárvore esquerda a raiz da subárvore direita. Excluir o nó e seu pai deve apontar para a raiz da subárvore esquerda. Exemplo: exclusão do nó 15 10 10 30 5 30 5 20 40 4 7 20 40 4 7 UDESC – Prof. Kariston Pereira

14 UDESC – Prof. Kariston Pereira
Tópicos Abordados Árvores Binárias de Pesquisa (ABP) Balanceamento usando árvores AVL UDESC – Prof. Kariston Pereira

15 Balanceamento de Árvores Binárias
Numa ABP, as inserções e exclusões influenciam a estrutura da árvore Tende a ficar desbalanceada. Reduz o desempenho da busca. Exemplo: inserção dos valores: 1, 2, 3, 4, 5. 1 2 É preciso balancear a árvore! 3 4 5 UDESC – Prof. Kariston Pereira

16 UDESC – Prof. Kariston Pereira
Lembrando que... Árvore Balanceada: para todo nó, a diferença de altura de suas subárvores deve ser de, no máximo, um. UDESC – Prof. Kariston Pereira

17 UDESC – Prof. Kariston Pereira
Inserção numa ABP Exemplo: inserção do valor 2 torna a árvore desbalanceada. 4 3 6 1 5 7 2 UDESC – Prof. Kariston Pereira

18 Abordagens para Balanceamento
Árvores Auto-balanceáveis: Árvores AVL; Árvores bicolores (Red & Black Trees) Balanceamento a posteriori Algoritmo DSW (Day/Stout/Warren, 1986) UDESC – Prof. Kariston Pereira

19 Árvore AVL Tem o nome de seus inventores: Adel’son-Vel’skii e Landis (1962). Definição: uma AVL é uma ABP construída de tal modo que o Fator de Balanceamento de seus nós é -1, 0 ou +1. Fator de Balanceamento (FB) de um nó é definido como: FB = altura(sub_arv_esquerda) - altura(sub_arv_direita) UDESC – Prof. Kariston Pereira

20 Condição de balanceamento:
Exemplos +1 -1 5 4 -1 -2 -1 2 6 2 5 +1 +1 1 4 7 1 3 7 3 6 Condição de balanceamento: É uma árvore AVL Não é uma árvore AVL!! UDESC – Prof. Kariston Pereira

21 UDESC – Prof. Kariston Pereira
Rotações Para manter a condição de árvore AVL durante inserções ou exclusões, utiliza-se uma operação chamada rotação. Uma rotação: Reorganiza um ou mais nós desbalanceados; Preserva a ordem das chaves (ABP); UDESC – Prof. Kariston Pereira

22 UDESC – Prof. Kariston Pereira
Rotações: casos de uso Rotações Simples À esquerda; À direita. Rotações Duplas UDESC – Prof. Kariston Pereira

23 Rotação Simples à Direita
Condição: Sempre que um nó tem fator positivo (+2) e seu filho à esquerda também tem fator positivo (+1). Execução: Filho à esquerda (P) assume a posiçao do nó desbalanceado (Q). Filho à direita de P passa a ser o filho à esquerda de Q . Q torna-se o filho à direita de P. +2 Q Rotação à direita P +1 +1 P D B Q +1 B C A C D UDESC – Prof. Kariston Pereira A

24 Rotação à Direita: exemplo
1) Árvore está balanceada. 4 +1 3 6 2 5 7 UDESC – Prof. Kariston Pereira

25 Rotação à Direita: exemplo
2) Ao se adicionar o valor 1, o nó 3 torna-se desbalanceado. +1 4 +2 3 6 +1 2 5 7 1 UDESC – Prof. Kariston Pereira

26 Rotação à Direita: exemplo
3) É preciso fazer uma rotação à direita no nó 3. +1 4 4 +2 Rotação à direita 3 6 2 6 +1 2 5 7 1 3 5 7 1 UDESC – Prof. Kariston Pereira

27 Rotação Simples à Esquerda
Condição: Sempre que um nó tem fator negativo (-2) e seu filho à direita também tem fator negativo (-1). Execução: Filho à direita (P) assume a posiçao do nó desbalanceado (Q). Filho à esquerda de P passa a ser o filho à direita de Q. Q torna-se o filho à esquerda de P. -2 Q P Rotação à esquerda -1 -1 A P Q C -1 B C A B D D UDESC – Prof. Kariston Pereira

28 Rotação à Esquerda: exemplo
1) Árvore está balanceada. 4 +1 -1 3 6 2 7 UDESC – Prof. Kariston Pereira

29 Rotação à Esquerda: exemplo
2) Ao se adicionar o valor 9, o nó 6 torna-se desbalanceado. -1 4 +1 -2 3 6 -1 2 7 9 UDESC – Prof. Kariston Pereira

30 Rotação à Esquerda: exemplo
3) É preciso fazer uma rotação à esquerda no nó 6. -1 4 4 +1 Rotação à esquerda -2 +1 3 6 3 7 -1 2 7 2 6 9 9 UDESC – Prof. Kariston Pereira

31 Rotação Dupla: condições
À direita: Condição:sempre que um nó tem fator positivo e seu filho à esquerda tem fator negativo. Execução: rotação à esquerda no nó filho da esquerda e rotação à direita no próprio nó. À esquerda: Condição: sempre que um nó tem fator negativo e seu filho à direita tem fator positivo. Execução: rotação à direita no nó filho da direita e rotação à esquerda no próprio nó. UDESC – Prof. Kariston Pereira

32 Rotação Dupla à Direita: exemplo
4 +1 3 6 1 5 7 Árvore balanceada. UDESC – Prof. Kariston Pereira

33 Rotação Dupla à Direita: exemplo
+1 4 +2 3 6 -1 1 5 7 2 Ao se adicionar o valor 2, o nó 3 torna-se desbalanceado. É preciso fazer uma rotação dupla à direita. UDESC – Prof. Kariston Pereira

34 Rotação Dupla à Direita: exemplo
+1 +1 4 4 +2 Rotação à esquerda +2 3 6 3 6 -1 +1 1 5 7 2 5 7 2 1 UDESC – Prof. Kariston Pereira

35 Rotação Dupla à Direita: exemplo
+1 +1 4 4 +2 Rotação à esquerda +2 3 6 3 6 -1 +1 1 5 7 2 5 7 2 1 4 Rotação à direita 2 6 1 3 5 7 UDESC – Prof. Kariston Pereira

36 UDESC – Prof. Kariston Pereira
Considerações Para a operação de inserção, basta incluir o novo nó, avaliar o tipo de rotação, e executar a rotação. Se mais de um nó tiver FB = -2, basta balancear o nó de maior nível. No entanto, a operação de exclusão é mais complexa: Exclue-se o nó, em seguida realiza-se recursivamente n rotações a partir do nó desbalanceado até a raiz (caso necessário). UDESC – Prof. Kariston Pereira

37 UDESC – Prof. Kariston Pereira
Exercício: Remova o nó 8 (será preciso balancear mais de uma vez). 32 16 48 8 24 40 56 28 36 44 52 60 58 62 UDESC – Prof. Kariston Pereira


Carregar ppt "Árvores Binárias de Pesquisa e Balanceamento usando Árvores AVL"

Apresentações semelhantes


Anúncios Google