Dicionários: B-Trees


     Estruturas de Dados
           2003/04

Aula teórica de 2003.11.12 (T9)

    ©2003 Salvador Ab...
Motivação

●   Grandes quantidades de informação
    –   Requer armazenamento externo (disco)
    –   Acesso a disco lento...
Exemplo

●   Registo Civil
    –   Bilhetes de Identidade
    –   Cerca de 10.000.000 registos diferentes
    –   Cada reg...
Exemplo: árvore binária

●   Supondo AVL (ou outra binária
    equilibrada)
    –   Profundidade: log2(107) ~ 27
    –   P...
Exemplo
●
    Grau suficientemente alto:
    –   Limite superior sobre o número de acessos a disco:
        objectivo valo...
B-Tree: Esquema


      k1        k2   k3   ki




<k1   k1<k<k2                  k>ki




                               ...
O que são: B-Trees
●   Definição (“Propriedade BT”):
    –   B-Tree de ordem M
         ●   Nós interiores:
              ...
Exemplos simples
●
    Ex: B-tree de ordem 3, tb designada por árvore
    2-3
    –   3: grau máximo dos nós
    –   2: nú...
B-Tree: Exemplo


                  10


    2, 5                        15


0    3     7, 8        12, 13        17, 18
...
B-Tree: Pesquisa
●   Simples, semelhante a pesquisa binária
    –   em cada nó interior
         ●   Se X=K[i], encontramo...
B-Tree: Inserção
●   Inicialmente igual à pesquisa, obtemos a
    folha onde seria para inserir
    –   Forçosamente numa ...
B-Tree: Re-equilibrar (insersão)
●   Dá-se mais um irmão à folha onde se iria
    inserir:
         ●   Transita-se uma ch...
B-Tree: Re-equilibrar (insersão)
●
    Chegando à raíz, e esta estando cheia…
    –   Cria-se uma nova raíz.
         ●   ...
B-Tree: Exemplo (1)
●
    Inserção dos inteiros
           0, 5, 10, 15, 2, 7, 12, 17, 3, 8, 13, 18




       0          ...
B-Tree: Exemplo (2)
            5, 10                             5, 10


0, 2         7         12, 15          0, 2    7...
B-Tree: Exemplo (3)


                   10


     2, 5                        15


0     3     7, 8        12, 13        ...
B-Tree: remoção
• Semelhante à inserção
• Se número de elementos da folha resultante
  >1, não precisa fazer mais nada.
• ...
B-Tree: análise
• Profundidade máx. duma B-Tree de ordem M
  – ceil(logfloor(M/2) N)
• Pesquisa
  – Em cada nó, fazemos O(...
B-Tree: usos
• Uso principal: Bases de dados
  – Árvore mantida em disco, não em memória
  – Número de acessos a nós = núm...
Próximos SlideShares
Carregando em…5
×

Dicionários: B-Trees

847 visualizações

Publicada em

Publicada em: Tecnologia, Negócios
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
847
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Dicionários: B-Trees

  1. 1. Dicionários: B-Trees Estruturas de Dados 2003/04 Aula teórica de 2003.11.12 (T9) ©2003 Salvador Abreu tu r a s d s tru e E Da 2003/04 9- 1 9-1 ados B-Trees os
  2. 2. Motivação ● Grandes quantidades de informação – Requer armazenamento externo (disco) – Acesso a disco lento (várias ordens de grandeza pior que memória) – Procurar organização que minimize acessos a disco talvez desprezando quantidade de processamento? ● Organização em árvore – Árvore de grau K – N elementos: acessos = O(logK N) tu r a s d s tru e E Da 2003/04 9- 2 9-2 ados B-Trees os
  3. 3. Exemplo ● Registo Civil – Bilhetes de Identidade – Cerca de 10.000.000 registos diferentes – Cada registo: ● Nomes (próprio, pai, mãe): 128 bytes cada ● Datas, locais, etc.: 128 bytes ● => Total 1K byte por registo ● Servidor – 1 IPC @ 2GHz, 1000 APS – 100 utilizadores simultâneos tu r a s d s tru e ● ~ 1IPC @ 20MHz, 10APS E Da 2003/04 9- 3 9-3 ados B-Trees os
  4. 4. Exemplo: árvore binária ● Supondo AVL (ou outra binária equilibrada) – Profundidade: log2(107) ~ 27 – Pesquisa feita em média em 27 acesso, a 10 APS = 2.7s ● Se variarmos o grau (N) da árvore – N=5: P=log5(107) ~ 11; GD = 60% – N=10: P=log10(107) ~ 7; GD = 75% – N=128: P=log128(107) ~ 4; GD = 85% s tru tu r a s d e E Da 2003/04 9- 4 9-4 ados B-Trees os
  5. 5. Exemplo ● Grau suficientemente alto: – Limite superior sobre o número de acessos a disco: objectivo valor pequeno (3-5 acessos.) ● Resta saber como fazer... – Ideia geral: árvore N-ária. – Cada nó contém K=O(N) chaves. – Busca envolve fazer uma pesquisa (p/ex binária) sobre cada nó. – Caso não esteja, desce-se para um filho particular. tu r a s d s tru e E Da 2003/04 9- 5 9-5 ados B-Trees os
  6. 6. B-Tree: Esquema k1 k2 k3 ki <k1 k1<k<k2 k>ki tu r a s d s tru e E Da 2003/04 9- 6 9-6 ados B-Trees os
  7. 7. O que são: B-Trees ● Definição (“Propriedade BT”): – B-Tree de ordem M ● Nós interiores: – Entre ceil(M/2) e M filhos – Se tiver N<=M filhos, terá exactamente N-1 chaves ● Folhas: todas à mesma profundidade – Por construção – Têm entre 1 e M-1 chaves ● Raíz: folha ou tem no máximo M filhos – Nós interiores: ● Referências aos filhos (F[i], i=1..M) ● Chaves contidas (K[i], i=1..M-1) – Folhas tu r a s d ● Chaves contidas (K[i], i=1..M-1) s tru e E Da 2003/04 9- 7 9-7 ados B-Trees os
  8. 8. Exemplos simples ● Ex: B-tree de ordem 3, tb designada por árvore 2-3 – 3: grau máximo dos nós – 2: número máximo de chaves nos nós ● B-Tree de ordem 3 (i.e. árvore 2-3) tu r a s d s tru e E Da 2003/04 9- 8 9-8 ados B-Trees os
  9. 9. B-Tree: Exemplo 10 2, 5 15 0 3 7, 8 12, 13 17, 18 tu r a s d s tru e E Da 2003/04 9- 9 9-9 ados B-Trees os
  10. 10. B-Tree: Pesquisa ● Simples, semelhante a pesquisa binária – em cada nó interior ● Se X=K[i], encontramos ● Se K[i-1]<X<K[i], procurar no filho F[i] – nas folhas ● Só resulta se encontrarmos tu r a s d s tru e E Da 2003/04 9- 10 9-10 ados B-Trees os
  11. 11. B-Tree: Inserção ● Inicialmente igual à pesquisa, obtemos a folha onde seria para inserir – Forçosamente numa folha ● Caso não haja violação da propriedade BT (i.e. há menos que M valores na folha): – Inserimos e pronto. – Possivelmente há que ajustar os valores de mj nos no caminho até à folha ● Caso não caiba: temos de repor a quot;legalidadequot;... s tru tu r a s d e E Da 2003/04 9- 11 9-11 ados B-Trees os
  12. 12. B-Tree: Re-equilibrar (insersão) ● Dá-se mais um irmão à folha onde se iria inserir: ● Transita-se uma chave Km (mediana) da antiga folha (aumentada com a chave a inserir) para o pai ● Divide-se os valores (<Km, >Km) entre as novas folhas ● Caso não seja possível (pai já tem M filhos) – Dividir o pai em dois: ● cada um com a metade dos filhos (que ficam na mesma) ● Transitando uma chave (mediana) do antigo pai para o avô ● Caso não seja possível, repetir operação ao nível do avô, etc... até à raíz uturas d r st e E Da 2003/04 9- 12 9-12 ados B-Trees os
  13. 13. B-Tree: Re-equilibrar (insersão) ● Chegando à raíz, e esta estando cheia… – Cria-se uma nova raíz. ● Com a mediana (Km) da antiga – Parte-se a antiga raíz em dois ● Dividindo os valores da raíz anterior (<Km, >Km) ● Mantém-se os filhos e fica-se com uma árvore mais profunda tu r a s d s tru e E Da 2003/04 9- 13 9-13 ados B-Trees os
  14. 14. B-Tree: Exemplo (1) ● Inserção dos inteiros 0, 5, 10, 15, 2, 7, 12, 17, 3, 8, 13, 18 0 0,5 0,5,10 5 5 0 10 0 10, 15 5 5 5, 10 0, 2 10, 15 0, 2 7, 10, 15 0, 2 7 tru 15 de tu r a s s E Da 2003/04 9- 14 9-14 ados B-Trees os
  15. 15. B-Tree: Exemplo (2) 5, 10 5, 10 0, 2 7 12, 15 0, 2 7 12, 15, 17 5, 10, 15 0, 2 7 12 17 10 5 15 tu r a s d s tru e E Da 2003/04 9- 15 9-15 ados 0, 2 7 12 17 B-Trees os
  16. 16. B-Tree: Exemplo (3) 10 2, 5 15 0 3 7, 8 12, 13 17, 18 tu r a s d s tru e E Da 2003/04 9- 16 9-16 ados B-Trees os
  17. 17. B-Tree: remoção • Semelhante à inserção • Se número de elementos da folha resultante >1, não precisa fazer mais nada. • Se número de elementos da folha = 1 – Combinar elemento restante com um irmão – Se passou a ser filho único, repetir operação ao nível superior – Se se chegar à raíz, toma-se como nova raíz o seu filho único tu r a s d s tru e E Da 2003/04 9- 17 9-17 ados B-Trees os
  18. 18. B-Tree: análise • Profundidade máx. duma B-Tree de ordem M – ceil(logfloor(M/2) N) • Pesquisa – Em cada nó, fazemos O(log M) trabalho para determinar por onde vamos (c/ pesquisa binária) – pior caso: O(log N) • Inserção e remoção – Como pesquisa, mas podemos ter de fazer O(M) para repor as condições – pior caso: O(M logM N) = O((M/log M) log N) tu r a s d s tru e E Da 2003/04 9- 18 9-18 ados B-Trees os
  19. 19. B-Tree: usos • Uso principal: Bases de dados – Árvore mantida em disco, não em memória – Número de acessos a nós = número de acessos a disco • Operação sempre muito lenta • Convem que sejam poucos (e grandes) • O(logM N) – Na prática, usam-se valores de M que: • sejam “grandes” • permitam que um nó inteiro caiba num bloco de disco (p/ex uma página de VM, tipicamente 8K) • em geral serão valores entre 32 e 256 tu r a s d s tru e E Da 2003/04 9- 19 9-19 ados B-Trees os

×