1 / 39

Árvores Balanceadas

8. 1. 4. 12. 2. 6. 10. 14. 2. 3. 4. 11. 5. 7. 9. 13. 15. 1. 3. Árvores Balanceadas. Tempo de busca numa Árvore Binária de Busca depende da profundidade da árvore. Com 4 nós precisa de 4 comparações. Com 15 nós precisa de 4 comparações. 1. 2. 9. 1. 5. 7. 10. 4. 10.

feivel
Download Presentation

Árvores Balanceadas

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. 8 1 4 12 2 6 10 14 2 3 4 11 5 7 9 13 15 1 3 Árvores Balanceadas Tempo de busca numa Árvore Binária de Busca depende da profundidade da árvore Com 4 nós precisa de 4 comparações Com 15 nós precisa de 4 comparações CAP-223

  2. 1 2 9 1 5 7 10 4 10 2 8 3 7 4 8 6 3 6 9 5 Árvores Balanceadas (cont.) A geração de uma Árvore Binária de Busca não garante que o resultado seja eficiente para a busca 2 5 10 7 1 6 8 4 3 9 1 9 7 2 8 10 4 3 6 5 CAP-223

  3. 6 6 3 10 3 7 9 4 8 5 2 1 9 8 5 2 4 1 10 7 Árvores Balanceadas (cont.) 6 7 8 3 4 9 2 5 10 1 6 10 3 5 9 1 4 2 8 7 CAP-223

  4. Árvores Balanceadas (cont.) O ideal é sempre ter uma Árvore Binária completa. Mas nem sempre isso é possível. Árvore não é balanceada A melhor estrutura, para uma árvore parcialmente preenchida, é aquela onde TODOS OS NÍVEIS estão preenchidos exceto o último nível que pode não ter algumas folhas CAP-223

  5. Árvores Balanceadas (cont.) Conhecimento a priori dos dados é uma boa ajuda. Não é sempre o caso. Mas nas operações de inserção e remoção, a eficiência na busca deve ser mantida. COMO? Duas categorias de árvores: • Árvores Height-Balanced (1962) • AVL (G. Adel’son-Vel’skii e E. Landis) • Árvores Multiway • B-trees e sua generalização a-b trees CAP-223

  6. Árvores Balanceadas (cont.) Altura de um nó Comprimento do caminho mais longo do nó até folha CAP-223

  7. 5 10 2 1 4 7 11 6 9 12 3 8 6 4 8 7 9 5 2 10 1 3 Height-Balanced trees Para cada nó, as alturas das suas sub-árvores diferem no máximo em 1. Também são chamadas de árvores AVL e esta diferença é o fator de balanceamento. CAP-223

  8. 0 0 +1 -1 0 +1 0 0 0 0 0 Height-Balanced trees (cont.) Convenções usadas para o Fator de Balanceamento [/] ou [ -1], sub-árvore à esquerda tem altura maior [\] ou [+1], sub-árvore à direita tem altura maior [-] ou [0], sub-árvores possuem a mesma altura CAP-223

  9. 6 4 8 9 5 10 Height-Balanced trees (cont.) Exemplo de uma árvore que não está balanceada pela altura. O nó marcado viola a condição de balanceamento CAP-223

  10. Height-Balanced trees (cont.) Operações aplicadas para reestruturar AVLs depois de serem “bagunçadas” devido à inserção e remoção • Rotação (rotation) • Rotação Dupla (double rotation) Árvore dividida em sub-árvores e reconstrui numa maneira diferente CAP-223

  11. Height-Balanced trees (cont.) • Três propriedades de balanceamento: • [-]horizontal • [/]inclinação à esquerda (left-leaning) • [\]inclinação à direita (right-leaning) CAP-223

  12. b a a x b 1 2 x y z y z Height-Balanced trees (cont.) rotação CAP-223

  13. b a a c c x b W 1 2 W Y Z x Z Y Height-Balanced trees (cont.) rotação dupla CAP-223

  14. Height-Balanced trees (cont.) • Processo de Inserção • novo elemento inserido na árvore • condição de balanceamento do novo nó - • a partir do novo nó • caminhe até a raiz passando a informação que • a altura da sub-árvore do nó inserido aumentou • em 1 • em cada nó no caminho uma operação • baseada em algumas regras é realizada CAP-223

  15. Height-Balanced trees (cont.) • As regras dependem de: • condição de balanceamento do nó • (encontrado no caminho) antes da • inclusão do novo elemento • direção do acesso a esse nó • (esquerda ou direita) CAP-223

  16. Height-Balanced trees (cont.) Regra I1 SE ( nó atual tem a condição de balanceamento horizontal[-] ) { mude para [\] se acessou pelo lado direito mude para [/] se acessou pelo lado esquerdo SE ( nó é raiz ) FIM SENÃO continue subir } CAP-223

  17. Height-Balanced trees (cont.) Regra I2 SE ( nó atual tem a condição de balanceamento [/] ou [\] ) { SE ( acesso via sub-árvore que era mais baixa antes da inserção do nó) { mude para [-] FIM } } CAP-223

  18. 1 1 2 0 1 2 2 0 Height-Balanced trees (cont.) Insere 0 Antes da inserção do novo nó 0 a sub-árvore à esquerda era mais baixa que o da direita (Não havia sub-árvore à esquerda) CAP-223

  19. Height-Balanced trees (cont.) Regra I3 SE ( nó atual tem a condição de balanceamento [/] ou [\] ) { SE ( acesso via sub-árvore que era mais alta antes da inserção do nó) { // condição de balanceamento violada restaura o balanceamento } } CAP-223

  20. 2 1 5 3 2 4 2 1 5 BALANCEAR 1 5 3 3 4 Height-Balanced trees (cont.) Insere 4 Antes da inserção do novo nó 4 a sub-árvore à esquerda era mais alta que o da direita (Não havia sub-árvore à direita) CAP-223

  21. Height-Balanced trees (cont.) Como restaurar a condição de balanceamento? SE os últimos dois passos vieram da mesma direção (os dois de esquerda ou os dois de direita) ENTÃO aplica rotação SE os últimos dois passos vieram de direções opostas (um de esquerda e outro de direita OU um de direita e outro de esquerda) ENTÃO aplica rotação dupla CAP-223

  22. Height-Balanced trees (cont.) 1 5 2 2 1 5 2 4 3 2 2 rotação 2 2 1 5 1 5 rotação dupla 1 4 1 5 3 3 3 5 3 4 1 CAP-223

  23. Height-Balanced trees (cont.) • Processo de Remoção • um elemento é removido da árvore • a partir do nó removido • caminhe até a raiz passando a informação que • a altura da sub-árvore do nó removido diminuiu • em 1 • em cada nó no caminho uma operação • baseada em algumas regras é realizada CAP-223

  24. Height-Balanced trees (cont.) • As regras dependem de: • condição de balanceamento do nó • (encontrado no caminho) antes da • remoção do elemento • direção do acesso a esse nó • (esquerda ou direita) CAP-223

  25. Height-Balanced trees (cont.) Regra D1 SE ( nó atual tem a condição de balanceamento horizontal[-] ) { mude para [\] se acessou pelo lado direito mude para [/] se acessou pelo lado esquerdo } CAP-223

  26. Height-Balanced trees (cont.) Regra D2 SE ( nó atual tem a condição de balanceamento [/] ou [\] ) { SE ( acesso via sub-árvore que era mais alta antes da remoção do nó) { mude para [-] continue a caminhar para cima com a mensagem que a sub-árvore do nó encurtou } } CAP-223

  27. Height-Balanced trees (cont.) Regra D3 SE ( nó atual tem a condição de balanceamento [/] ou [\] ) { SE ( acesso via sub-árvore que era mais baixa antes da remoção do nó) { // condição de balanceamento violada restaura o balanceamento (3 casos) } } CAP-223

  28. b a rotação a b X Z Z Y X Y Height-Balanced trees (cont.) Caso 1 CAP-223

  29. b a rotação a b Z Y Y Z X X Height-Balanced trees (cont.) Caso 2 CAP-223

  30. b c rotação dupla a c a W X Y Z Z b W X Y Height-Balanced trees (cont.) Caso 3 CAP-223

  31. Multiway Trees • Número variável de filhas • Devido ao interesse em manter as • árvores balanceadas, tem que adicionar • algumas restrições • Restrições • Folhas na mesma profundidade • Limitação no número de filhas • limite inferior a • limite superior b • exemplo (2,3) trees • nós com 2 ou 3 filhas CAP-223

  32. Multiway Trees Definição de árvore-(a,b): • Elementos xi com ordenação  definida • a e b são inteiros tal que 2  a e (2a-1)  b • c(N) é número de filhas do nó N • todas as folhas no mesmo nível • 2  c(raiz)  b • a  c(N)  b, para  N que não seja raiz Árvores-(a,b) com b = 2a - 1  B-trees CAP-223

  33. Multiway Trees (cont.) Os nós que não são folhas são considerados nós internos. Nó interno com k filhas possui k-1 elementos ou chaves tal que x1 < x2 < ... < xk-1 Árvores que correspondem às k filhas são T1, T2, ..., Tk y  xi para todos os elementos y na T1 ... Ti xi z para todos os elementos z na Ti+1 ... Tk CAP-223

  34. Multiway Trees (cont.) Os algoritmos operam nos nós internos e ignoram as folhas. As folhas são entidades fictícias. Na verdade as folhas são arquivos físicos com todos os registros cujo as chaves estão localizadas nos nós internos CAP-223

  35. 19 22 27 48 2 57 25 36 5 66 26 7 45 37 30 11 12 16 15 14 18 33 39 20 Multiway Trees (cont.) Exemplo de Árvore (3,5)  B-Tree CAP-223

  36. Multiway Trees (cont.) Nó 19 aponta para 2 nós [nó 11-15 e nó 27-36-45] Nó 11-15 aponta para 3 Nó 27-36-45 aponta para 4 CAP-223

  37. Multiway Trees (cont.) Operação de Inserção Separação dos nós Operação de Remoção Junção dos nós CAP-223

  38. Multiway Trees (cont.) A operação de inserção começa a partir de uma procura, até a FOLHA, sem sucesso do nó a ser inserido  O NÓ NÃO ESTÁ NA ÁRVORE A chave a ser inserida começa no pai da FOLHA. Processo de inserção depende se o Nó possui MENOS que (b-1) elementos. Neste caso, o elemento x é inserido. Caso contrário há a necessidade de uma cisão (split) CAP-223

  39. QuadTrees Usadas muito para armazenamento de imagens 1 0 2 3 CAP-223

More Related