1 / 22

Árvores Balanceadas (AVL)

Árvores Balanceadas (AVL) . Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com. Roteiro. Contextualização Árvores Balanceadas (AVL) Operações de Balanceamento. Roteiro. Contextualização Árvores Balanceadas (AVL) Operações de Balanceamento. Contextualização.

stew
Download Presentation

Árvores Balanceadas (AVL)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Árvores Balanceadas (AVL) Prof. Alexandre Parra Carneiro da Silva parrasilva@gmail.com

  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, 7 4, 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 é aproximadamenteigual à altura da sua sad.

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

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

  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. 0 +6 Inserção: 1, 2, 3, 4, 5, 6 e 7 Inserção: 4, 2, 3, 6, 5, 1 e 7 +5 0 0 +4 +3 0 0 0 0 +2 +1 0 -1 Inserção: 4, 1, 3, 6, 5, 2 e 7 0 +2 -1 0 0 0 Exemplos de cálculos de FB

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

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

  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 a Esquerda • Rotação a Direita • Rotação Dupla: • Rotação a Esquerda • Rotação a Direita

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

  19. 10 15 12 7 21 30 10 15 4 2 1 7 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 p aponta para o nó desbalanceado q = left(p); hold = right(q); right(q) = p; left(p) = hold; p = q;

  20. Pseudo-Código: Busca e Inserção • 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 • http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20applet.htm

More Related