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

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

Árvores Balanceadas Liliane Rose Benning Salgado.

Apresentações semelhantes


Apresentação em tema: "Árvores Balanceadas Liliane Rose Benning Salgado."— Transcrição da apresentação:

1 Árvores Balanceadas Liliane Rose Benning Salgado

2 POSSÍVEL PROBLEMA Exemplo: 50, 20, 39, 42, 40... 50 20 39 42 A árvore binária pode degenerar para uma estrutura próxima a uma lista ligada, e o tempo de acesso deixa de ser logarítmico. 40

3 Conclusão: Após um certo número de inserções e remoções, as ár- vores deixam de ser ótimas (custo O(log n) para n nós). Idéia: Manter o custo de acesso na mesma ordem de grandeza de uma árvore ótima, ou seja, O(log n). Este custo DEVE ser mantido inclusive após inserções e remoções. Solução: A árvore deve ser alterada, periodicamente. de forma que os custos destas modificações se mantenham em O(log n). UMA ÁRVORE COM ESTAS CARACTERÍSTICAS É BALANCEADA

4 Conceito de Balanceamento Fato: as árvores completas são aquelas que minimizam o número de comparações efetuadas no pior caso para uma busca por chave. Aplicações Dinâmicas: desaconselhável (caso degenerado visto antes) Idéia: Aplicar um algoritmo que torne a árvore novamente completa. Dificuldade: conseguir um custo menor do que (n) passos,no pior caso.

5 Exemplo: transformação para uma árvore completa. Custo (n) passos pelo menos. Conclusão: Aŕvores completas e a busca binária não são recomenda- das para aplicações dinâmicas. Alternativa: Exigir que a altura da árvore seja igual a O(log n) para n nós. Além disto, cada subárvore que contém m nós deve possuir altura O(log m). ÁRVORE NESTAS CONDIÇÕES É BALANCEADA.

6 Pontos Importantes ● Forma de uma árvore balanceada é menos rígida do que a de uma árvore completa ● Mais fácil o rebalanceamento ● AVL é um exemplo de tal árvore. Satisfaz as condições de balanceamento e após as inclusões e remoções empregam operações de rebalanceamento com custo O(log n) passos.

7 Árvores AVL (Adel'son-Vel'skit e Landis [1962]) Def.: Uma árvore binária T é denominada AVL quando, para todo nó v, a altura das 2 subárvores, esquerda e direita, satisfazem fb(v) = | altura(dir) - altura(esq) | ≤ 1 onde fb(v) é o fator de balanceamento do nó v. Neste caso, v é dito regulado. Uma árvore que contenha um nó que não satisfaça esta condição de altura é denominada desregulada.

8 INSERÇÃO EM ÁRVORE AVL AVL-Inserir (T, x) Entrada: Árvore AVL e um elto x para inserção em T. Saída: Árvore AVL (T + x) Início 1. Use o algoritmo de inserção para árvore de busca binária. 2. Se (T + x) é AVL então devolva (T + x) 3. senão T' = AVL-Balance (T + x). 4. Devolva T'. Fim

9 AVL-Balance Existem 4 possibilidades. Veremos a seguir 2 delas, as demais são simétricas. Usaremos um exemplo genérico para explicar o algoritmo de rebalanceamento. (Veja as árvores AVL a seguir )

10 Caso 1: Rotação simples (direita) O novo nó foi inserido na subárvore da esquerda, fazendo a altura de B igual a (h + 2), enquanto a altura de C é h. SOLUÇÃO: executamos uma rotação, movendo B para cima no sentido horário e modificamos e modificamos o resto da árvore se- gundo a propriedade de uma árvore de busca binária. OBS: A altura da árvore enraizada em B após a rotação é a mesma da árvore original antes da inserção. Logo, nao precisamos mais balancear.

11 Caso 2: Rotação dupla (direita) O novo nó é inserido na subárvore da esquerda enraizada por B, mas na configuração do novo exemplo (filho de B tem 2 árvores). Nova- mente, a altura de B é (h + 2) e de C é igual a h. SOLUÇÃO: executamos uma rotação dupla, movendo D para cima (2 vezes) no sentido horário e modificamos o resto da árvore segundo a propriedade uma árvore de busca binária. OBS: De novo, a árvore obtida pela rotação dupla tem mesma altura do que a árvore original (antes da inserção), a saber (h + 2). Logo, não precisamos mais de balanceamento.

12 Definição 1 (nó crítico): é a raiz da menor subárvore que perde a pro- priedade AVL como resultado da inserção. Definição 2 (nó crítico): é o ancestor mais próximo do novo nó inse- rido (folha) com fator de balanceamento igual a 1 (fb = 1). Aspectos de Implementação 1. Mantemos em cada nó o valor do fator de balanceamento (fb). 2. No ato da inserção, caminhamos para baixo na árvore armazenando o último fb igual a 1 encontrado. 3. Qd encontramos a folha para inserção já sabemos se precisamos de ro- tação. 4. Retornamos de maneira bottom-up, reajustamos o fb de cada nó neste caminho e efetuamos a rotação se necessário.

13 Remoção na AVL AVL-Remoção(T,x) Entrada: árvore AVL e o nó x a ser removido em T. Saída: árvore AVL (T – x). Início 1. Execute a remoção como na aŕvore binária de busca. 2. Verifique se a árvore ficou desregulada (use o fator de balanceamento como na inserção). 3. Execute uma ou mais rotações (simples ou dupla). 4. Devolva (T – x). Fim

14 OBS: No pior caso, precisamos de O(log n) rotações. Felizmente cada rotação requer um número constante de passos. Logo, a remoção mantém o custo em O(log n) onde n é o número de nós na árvore AVL. Existem muitos outros esquemas para Árvores de Busca Balanceadas... no que segue estudaremos mais um caso: árvores B.


Carregar ppt "Árvores Balanceadas Liliane Rose Benning Salgado."

Apresentações semelhantes


Anúncios Google