Árvore B

1.742 visualizações

Publicada em

Publicada em: Educação
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Árvore B

  1. 1. Faculdade de Ciências Humanas, Saúde, Exatase Jurídicas de TeresinaTurma: Ciência da ComputaçãoPeríodo: 4º - ManhãDisciplina: Pesquisa e OrdenaçãoDocente: Willame PereiraDiscentes: Igor MonteiroLuis FellipeMarcelo KelleCopyright 2013.1
  2. 2. 1. Overview;2. Armazenamento Secundário;3. Definição da Árvore-B.Copyright 2013.1
  3. 3.  São árvores balanceadas, desenvolvidas para otimizar o acesso aarmazenamento secundário Os nós da árvore B podem ter muitos filhos. Esse fator deramificação é determinante para reduzir o número de acessos adisco. Árvores B são balanceadas, ou seja, sua altura é O(lg(n)) Árvores B são generalizações de árvores binárias balanceadas3
  4. 4.  Atualmente o armazenamento estável é feito em discosmagnéticos, e o custo de cada acesso (da ordem de milisegundos)é muito alto quando comparado ao acesso à memória RAM(ordem de nano segundos) Toda vez que um acesso é feito, deve-se aproveita-lo da melhormaneira possível, trazendo o máximo de informação relevante A quantidade de dados utilizados numa árvore B obviamente nãocabem na memória de uma só vez, por isso é necessário paginá-la Especializações são feitas de acordo com as necessidades daaplicação. O fator de ramificação, por exemplo, pode variar de 3 a2048 por exemplo (dependendo do buffer dos discos e dotamanho das páginas de memória alocados pelo SO)4
  5. 5.  Atualmente o armazenamento estável é feito em discosmagnéticos, e o custo de cada acesso (da ordem demilissegundos) é muito alto quando comparado ao acesso àmemória RAM (ordem de nano segundos) Toda vez que um acesso é feito, deve-se aproveita-lo da melhormaneira possível, trazendo o máximo de informação relevante A quantidade de dados utilizados numa árvore B obviamente nãocabem na memória de uma só vez, por isso é necessário paginá-la Especializações são feitas de acordo com as necessidades daaplicação. O fator de ramificação, por exemplo, pode variar de 3 a2048 por exemplo (dependendo do buffer dos discos e dotamanho das páginas de memória alocados pelo SO)5
  6. 6.  Na grande maioria dos sistemas, o tempo de execução de umalgoritmo de árvore B é determinado pelas leituras e escritas nodisco Um fator de ramificação alto reduz drasticamente a altura daárvore. Tomemos o exemplo:6
  7. 7.  Consideraremos que o os dados dos registros sejam guardadosjunto com a chave da árvore. Se estivéssemos usando uma árvoreB+, os registros ficariam todos nas folhas:7
  8. 8. 8
  9. 9. 9
  10. 10. 10
  11. 11. 4. Busca por Elemento;5. Inserção de Elemento;6. Separação de Nós.Copyright 2013.1
  12. 12.  A busca em uma árvore-B é similar à busca em uma árvorebinária, só que ao invés de uma bifurcação em cada nó, temosvários caminhos a seguir de acordo com o número de filhos do nó O algoritmo de busca na árvore é uma generalização da busca emuma árvore binária A função B-TREE-SEARCH recebe o apontador para o nó raiz (x) ea chave k sendo procurada Se a chave k pertencer à árvore o algoritmo retorna o nó ao qualela pertence e o índice dentro do nó correspondente à chaveprocurada, caso contrário, retorna NIL12
  13. 13. 13
  14. 14. 14
  15. 15.  A inserção nas árvores-B são relativamente mais complicadas,pois precisamos inserir a nova chave no nó correto da árvore, semviolar suas propriedades Como proceder se o nó estiver cheio? Caso o nó esteja cheio, devemos separar (split) o nó ao redor doelemento mediano, criando 2 novos nós que não violam asdefinições da árvore O elemento mediano é promovido, passando a fazer parte do nópai daquele nó A inserção é feita em um único percurso na árvore, a partir da raizaté uma das folhas15
  16. 16. 16
  17. 17. 17
  18. 18. 7. Inserção com Split;8. Remoção de Chaves;9. Complexidade da remoção.Copyright 2013.1
  19. 19.  Dessa maneira, em uma única passagem pela árvore, da raiz àsfolhas, inserimos uma determinada chave, dividindo (splits)cada nó da árvore que encontrarmos no caminho, caso o nó estejacheio O código a seguir faz uso de B-TREE-INSERT-NONFULL:19
  20. 20. B-TREE-INSERT(T, k)1. r ← root[T]2. if n[r] = 2t−1 then3. s ← ALLOCATE-NODE()4. root[T] ← s5. leaf [s] ← FALSE6. n[s] ← 07. c1[s] ← r8. B-TREE-SPLIT-CHILD(s, 1, r)9. B-TREE-INSERT-NONFULL(s, k)10. else B-TREE-INSERT-NONFULL(r, k) B-TREE-INSERT-NONFULL insere a chave k no nó x, caso este sejauma folha, caso contrário, procura o filho adequado e desce à elerecursivamente até encontrar a folha onde deve inserir k20
  21. 21. 21
  22. 22. 22
  23. 23.  A remoção de uma chave é análoga à inserção, porém com algunscomplicadores, já que uma chave pode ser removida de qualquernó, seja ele raiz ou não Assim como na inserção, precisamos garantir que, ao removermos achave as propriedades da árvore-B não sejam violadas Da mesma maneira que tivemos de garantir que um nó não setornasse grande demais na inserção, devemos garantir que ele nãotorne-se pequeno demais, ou seja, deve sempre ter pelo menos t-1elementos Sendo assim, seguiremos para os casos de remoção de chaves Existem 6 casos possíveis para a remoção de uma chave de umaárvore-B: Caso 1: Se a chave k estiver numa folha da árvore e a folha possuipelo menos t chaves, remove-se a chave da árvore23
  24. 24.  Caso 2: Se a chave k está num nó interno x o seguinte deve ser feito:a) Se o filho y que precede k no nó x possui pelo menos tchaves, encontre o predecessor k′ de k na sub-árvore com raizem y. Remova k′ do nó filho e substitua k por k′ no nó atualb) Simetricamente, se o filho z que sucede k no nó x possui pelomenos t chaves, encontre o sucessor k′ de k na sub-árvore comraiz em z. Remova k′ do nó filho e substitua k por k′ no nó atualSe a chave k está num nó interno x o seguinte deve ser feito:c) Caso ambos y e z possuem somente t-1 chaves, copie todos oselementos de z em y , libere a memória ocupada por z e removao apontador em x e remova k de x.24
  25. 25. 25
  26. 26. 26
  27. 27. 27
  28. 28. Faculdade de Ciências Humanas, Saúde, Exatase Jurídicas de TeresinaReferência:CORMEN, Thomas H.; LEISERSON, Charles E.;RIVEST, Ronald L.; STEIN, Clifford. Algoritmos: Teoria ePrática. 2 ed. Editora Campus, São Paulo. 2002.Discentes: Igor Monteiro kijigor@hotmail.comLuis Fellipe fellipecastro13@hotmail.comMarcelo Kelle marcelo_kcs@hotmail.comCopyright 2013.1

×