• Like
Árvore B
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Árvore B

  • 1,234 views
Published

 

Published in Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,234
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
24
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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. 1. Overview;2. Armazenamento Secundário;3. Definição da Árvore-B.Copyright 2013.1
  • 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.  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.  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.  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.  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
  • 9. 9
  • 10. 10
  • 11. 4. Busca por Elemento;5. Inserção de Elemento;6. Separação de Nós.Copyright 2013.1
  • 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
  • 14. 14
  • 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
  • 17. 17
  • 18. 7. Inserção com Split;8. Remoção de Chaves;9. Complexidade da remoção.Copyright 2013.1
  • 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. 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
  • 22. 22
  • 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.  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
  • 26. 26
  • 27. 27
  • 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