Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf ·...
Transcript of Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf ·...
![Page 1: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/1.jpg)
ICMC-‐USP -‐ Base de Dados 1
Árvore B, B* e B+
Murilo Gleyson Gazzola
Slides: Profa. Dra. CrisAna Dutra de Aguiar Ciferri
![Page 2: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/2.jpg)
ICMC-‐USP -‐ Base de Dados 2
Tópicos
-‐ Árvore de Pesquisa -‐ Árvore B -‐ Árvore B* -‐ Arvore B+
![Page 3: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/3.jpg)
ICMC-‐USP -‐ Base de Dados 3
Estrutura de Dados de Árvore
A
B C D
E F
J K
G H I
Legenda nó raiz
nó folha nó interno
![Page 4: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/4.jpg)
ICMC-‐USP -‐ Base de Dados 4
Estrutura de Dados de Árvore
A
B C D
E F
J K
G H I
Nível
0
1
2
3 subárvore para o nó B
Árvore desbalanceada
![Page 5: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/5.jpg)
ICMC-‐USP -‐ Base de Dados 5
Tópicos
-‐ Árvore de Pesquisa -‐ Árvore B -‐ Árvore B* -‐ Árvore B+
![Page 6: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/6.jpg)
ICMC-‐USP -‐ Base de Dados 6
ObjeAvos para balancear uma árvore de pesquisa
• GaranAr que os nós sejam distribuídos por igual, de modo que a profundidade da árvore seja minimizada para determinado conjunto de chaves
• Tornar a velocidade de pesquisa uniforme, de modo que o tempo médio para encontrar qualquer chave aleatória seja aproximadamente o mesmo
![Page 7: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/7.jpg)
ICMC-‐USP -‐ Base de Dados 7
Árvores de Pesquisa
• Uma árvore de pesquisa de ordem p é uma árvore que contém no máximo p-‐1 valores de pe squ i sa e p pon te i r o s na o rdem <P1,C1,P2,C2,...Pq-‐1,Cq-‐1,Pq>
![Page 8: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/8.jpg)
ICMC-‐USP -‐ Base de Dados 8
ObjeAvos para balancear uma árvore de pesquisa
• GaranAr que os nós sejam distribuídos por igual, de modo que a profundidade da árvore seja minimizada para determinado conjunto de chaves
![Page 9: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/9.jpg)
ICMC-‐USP -‐ Base de Dados 9
Estrutura Lógica de um Nó
chave 1
chave q
chave 3
chave 2
chave q-‐1
...
< chave 1 > chave 1 < chave 2
> chave 2 < chave 3
> chave q-‐1 < chave q
> chave q
![Page 10: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/10.jpg)
ICMC-‐USP -‐ Base de Dados 10
Tópicos
-‐ Árvore de Pesquisa + Árvore B
– CaracterísAcas – Inserção – Pesquisa – Remoção – Análise
-‐ Árvore B* -‐ Arvore B+
![Page 11: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/11.jpg)
ICMC-‐USP -‐ Base de Dados 11
Árvore-‐B
• São árvores de pesquisa balanceadas projetadas para funcionar bem em discos magnéAcos ou outros disposiAvos de armazenamento secundário (Cormen, T.)
• Muitos SGBD usam árvores B ou variações de árvores B para armazenar informações
![Page 12: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/12.jpg)
ICMC-‐USP -‐ Base de Dados 12
Árvore-‐B
• Método genérico para o armazenamento e a recuperação de dados – voltado para arquivos volumosos – proporciona rápido acesso aos dados – possui custo mínimo de overhead
• Referência – Bayer, R.; McCreight, E. Organiza:on and Maintenance of Large Ordered Indexes.
– Boing CorporaAon, 1972.
![Page 13: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/13.jpg)
ICMC-‐USP -‐ Base de Dados 13
Árvore-‐B
• Autores por Bayer e McCreight, 1972 • Trabalho foi desenvolvido na Boeing ScienAfic Researh Labs.
• São árvores de pesquisa balanceadas projetadas para funcionar bem em discos magnéAcos ou outros disposiAvos de armazenamento secundário (Cormen, T.) – voltado para arquivos volumosos – proporciona rápido acesso aos dados
![Page 14: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/14.jpg)
ICMC-‐USP -‐ Base de Dados 14
CaracterísAcas
• Índice – extremamente volumoso
• Buffer-‐pool pequeno – apenas uma parcela do índice pode ser carregada em memória principal
– operações baseadas em disco
• Desempenho – proporcional a logKI ou melhor
• I: tamanho do índice • K: tamanho da página de disco
![Page 15: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/15.jpg)
ICMC-‐USP -‐ Base de Dados 15
CaracterísAcas
• Normalmente um nó da árvore B é tão grande quanto uma página de disco inteira.
• Desempenho (Goodrich M.) – Um árvore B com n itens tem complexidade de E/S
• O(logBn) para operações de pesquisa/atualização e usa O (n/B) blocos.
– B é o tamanho de um bloco.
![Page 16: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/16.jpg)
ICMC-‐USP -‐ Base de Dados 16
CaracterísAcas
• Desempenho – O número de acessos ao disco exigidos para a maioria das operações em uma árvore B é proporcional a sua altura (Cormen, T.).
– Uma árvore B com n itens tem complexidade de E/S
• O(logBn) para operações de pesquisa/atualização e usa O (n/B) blocos.
– B é o tamanho de um bloco.
![Page 17: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/17.jpg)
ICMC-‐USP -‐ Base de Dados 17
CaracterísAcas
• Desempenho – O número de acessos ao disco exigidos para a maioria das operações em uma árvore B é proporcional a sua altura (Cormen, T.).
![Page 18: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/18.jpg)
ICMC-‐USP -‐ Base de Dados 18
CaracterísAcas
• Nó – seqüência ordenada de chaves – conjunto de ponteiros
• número de ponteiros = número de chaves + 1
• Ordem – número máximo de ponteiros que pode ser armazenado em um nó
– exemplo: árvore B de ordem 8
![Page 19: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/19.jpg)
ICMC-‐USP -‐ Base de Dados 19
CaracterísAcas
• Nó – seqüência ordenada de chaves – conjunto de ponteiros
• número de ponteiros = número de chaves + 1
• Ordem – número máximo de ponteiros que pode ser armazenado em um nó
– exemplo: árvore B de ordem 8 • máximo de 7 chaves e 8 ponteiros
![Page 20: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/20.jpg)
ICMC-‐USP -‐ Base de Dados 20
Nomenclatura
• Formalização da terminologia – especifica precisamente as propriedades que devem estar presentes para uma estrutura de dados ser qualificada como árvore-‐B
– direciona a implementação do algoritmo de remoção da árvore-‐B
• Problema – literatura não é uniforme no uso e definição dos termos
![Page 21: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/21.jpg)
ICMC-‐USP -‐ Base de Dados 21
CaracterísAcas
• CaracterísAcas – balanceada – boCom-‐up para a criação (em disco)
• nós folhas → nó raiz
![Page 22: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/22.jpg)
ICMC-‐USP -‐ Base de Dados 22
Ordem
• Bayer and McGreight (1972) Cormen (1979) – número mínimo de chaves que podem estar em uma página da árvore
• Knuth (1973) – número máximo de descendentes que uma página pode ter
• facilita a determinação de nó cheio
⇒ chaves = ordem – 1 (máximo) usado na disciplina
![Page 23: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/23.jpg)
ICMC-‐USP -‐ Base de Dados 23
Página ou Nó das Árvores B
• Quando uma árvore de pesquisa possui mais de uma chave por nó, ela deixa de ser binária e passa a ser chamadas n-‐árias.
• Os nós são mais comumentes chamados de páginas ao invés de nó. (Ziviani)
![Page 24: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/24.jpg)
ICMC-‐USP -‐ Base de Dados 24
Ordem
• Bayer and McGreight (1972) Cormen (1979) – número mínimo de chaves que podem estar em uma página da árvore
• Knuth (1973) – número máximo de descendentes que uma nó pode ter
• facilita a determinação de nó cheio usado na disciplina
![Page 25: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/25.jpg)
ICMC-‐USP -‐ Base de Dados 25
Ordem
• Bayer and McGreight (1972) Cormen (1979) – número mínimo de chaves que podem estar em uma página da árvore
• Knuth (1973) – número máximo de descendentes que uma nó pode ter
• facilita a determinação de nó cheio usado na disciplina
![Page 26: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/26.jpg)
ICMC-‐USP -‐ Base de Dados 26
Nó Folha
• Bayer and McGreight (1972) – nível mais baixo das chaves
• Knuth (1973) – um nível depois do nível mais baixo das chaves ⇒ folhas: registros de dados que podem ser apontados pelo nível mais baixo das chaves
usado na disciplina
![Page 27: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/27.jpg)
ICMC-‐USP -‐ Base de Dados 27
campo de referência (omiAdo)
chave de
busca
Estrutura Lógica de um Nó
chave 1
chave q
chave 3
chave 2
chave q-‐1
...
< chave 1 > chave 1 < chave 2
> chave 2 < chave 3
> chave q-‐1 < chave q
> chave q
campos de tamanho fixo
![Page 28: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/28.jpg)
ICMC-‐USP -‐ Base de Dados 28
registro completo
chave de
busca
Estrutura Lógica de um Nó
chave 1
chave q
chave 3
chave 2
chave q-‐1
...
< chave 1 > chave 1 < chave 2
> chave 2 < chave 3
> chave q-‐1 < chave q
> chave q
![Page 29: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/29.jpg)
ICMC-‐USP -‐ Base de Dados 29
Árvore-‐B de Ordem m
• Split – os descendentes são divididos o mais uniformemente possível entre as páginas velha e nova
• Cada página, exceto a raiz e os nós folhas – ⎡m/2⎤ descendentes (pelo menos) – ⎡m/2⎤ -‐ 1 chaves (no mínimo)
![Page 30: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/30.jpg)
ICMC-‐USP -‐ Base de Dados 30
Árvore-‐B de Ordem m
• Split – os descendentes são divididos o mais uniformemente possível entre as páginas velha e nova
• Cada página, exceto a raiz e os nós folhas – ⎡m/2⎤ descendentes (pelo menos) – ⎡m/2⎤ -‐ 1 chaves (no mínimo)
![Page 31: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/31.jpg)
ICMC-‐USP -‐ Base de Dados 31
Definição Formal
• Árvore-‐B com ordem m – cada página possui um máximo de m descendentes – cada página, exceto a raiz e as folhas, possui no mínimo ⎡m/2⎤ descendentes à taxa de ocupação
– a raiz possui pelo menos 2 descendentes, a menos que seja um nó folha
– todas as folhas aparecem no mesmo nível – uma página interna com k descendentes contém k-‐1 chaves
– uma folha possui no mínimo ⎡m/2⎤ -‐ 1 chaves e no máximo m -‐ 1 chaves à taxa de ocupação
![Page 32: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/32.jpg)
ICMC-‐USP -‐ Base de Dados 32
Exemplo
D H K
A B C E G I J L M * * * * * * * * * * * * * * * *
Ordem 4
![Page 33: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/33.jpg)
ICMC-‐USP -‐ Base de Dados 33
Tópicos
-‐ Árvore de Pesquisa + Árvore B
– CaracterísAcas – Inserção – Pesquisa – Remoção – Análise
-‐ Árvore B* -‐ Arvore B+
![Page 34: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/34.jpg)
ICMC-‐USP -‐ Base de Dados 34
Inserção de Dados (Chave)
• CaracterísAca – sempre realizada nos nós folhas
• Situações a serem analisadas – árvore vazia – overflow no nó raiz – inserção nos nós folhas
![Page 35: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/35.jpg)
ICMC-‐USP -‐ Base de Dados 35
Inserção: Situação Inicial
• Criação e preenchimento do nó – primeira chave: criação do nó raiz – demais chaves: inserção até a capacidade limite do nó
• Exemplo – nó com capacidade para 7 chaves – chaves: letras do alfabeto – situação inicial: árvore vazia
![Page 36: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/36.jpg)
ICMC-‐USP -‐ Base de Dados 36
• Chaves B C G E F D A – inseridas desordenadamente – manAdas ordenadas no nó
• Ponteiros (*) – nós folhas: -‐1 ou fim de lista (NIL) – nós internos: RRN do nó filho ou -‐1
• Nó raiz (= nó folha)
Inserção: Situação Inicial
F * G * * E * D * C * B * * A
![Page 37: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/37.jpg)
ICMC-‐USP -‐ Base de Dados 37
• Chaves B C G E F D A • Ponteiros (*)
– nós folhas: -‐1 ou fim de lista (NIL) – nós internos: RRN do nó filho ou -‐1
• Nó raiz (= nó folha)
Inserção: Situação Inicial Inseridas ordenadas ou desordenadas? Ocorre overflow?
![Page 38: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/38.jpg)
ICMC-‐USP -‐ Base de Dados 38
• Chaves B C G E F D A • Ponteiros (*)
– nós folhas: -‐1 ou fim de lista (NIL) – nós internos: RRN do nó filho ou -‐1
• Nó raiz (= nó folha)
Inserção: Situação Inicial
F * G * * E * D * C * B * * A
Inseridas ordenadas ou desordenadas?
![Page 39: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/39.jpg)
ICMC-‐USP -‐ Base de Dados 39
* * *
• Passo 1 – parAcionamento do nó (split) – nó original → nó original + novo nó
• split 1-‐to-‐2 – as chaves são distribuídas uniformemente nos dois nós
• chaves do nó original + nova chave
• Exemplo: inserção de J
Inserção: Overflow Nó Raiz
* * * D * C * B * * A * * * J G * F * * E
![Page 40: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/40.jpg)
ICMC-‐USP -‐ Base de Dados 40
• Passo 1 – parAcionamento do nó (split) – nó original → nó original + novo nó
• split 1-‐to-‐2 – as chaves são distribuídas uniformemente nos dois nós
• chaves do nó original + nova chave
Inserção: Overflow Nó Raiz
![Page 41: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/41.jpg)
ICMC-‐USP -‐ Base de Dados 41
• Passo 1 -‐ Inserção J
Inserção: Overflow Nó Raiz
Split
Insere J
![Page 42: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/42.jpg)
ICMC-‐USP -‐ Base de Dados 42
* * * * *
• Passo 2 – criação de uma nova raiz – a existência de um nível mais alto na árvore permite a escolha das folhas durante a pesquisa
• Exemplo
Inserção: Overflow Nó Raiz
* * * * * * * * * * *
* * * * * *
qual deve ser a chave separadora?
![Page 43: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/43.jpg)
ICMC-‐USP -‐ Base de Dados 43
• Passo 3 – promoção de chave (promo:on) – a primeira chave do novo nó resultante do parAcionamento é promovida para o nó raiz
• Exemplo
Inserção: Overflow Nó Raiz
* * * * * *
* * * * * * D * C * B * * A * * * J G * F * *
E
![Page 44: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/44.jpg)
ICMC-‐USP -‐ Base de Dados 44
Inserção: Nós Folhas
• Passo 1 – pesquisa – a árvore é percorrida até encontrar o nó folha no qual a nova chave será inserida
• Passo 2 – inserção em nó com espaço – ordenação da chave após a inserção – alteração dos valores dos campos de referência nó folha em
memória principal
![Page 45: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/45.jpg)
ICMC-‐USP -‐ Base de Dados 45
Inserção: Nós Folhas
• Passo 2 – inserção em nó cheio – parAcionamento
• criação de um novo nó (nó original → nó original + novo nó)
• distribuição uniforme das chaves nos dois nós
– promoção • escolha da primeira chave do novo nó como chave separadora no nó pai
• ajuste do nó pai para apontar para o novo nó • propagação de overflow
![Page 46: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/46.jpg)
ICMC-‐USP -‐ Base de Dados 46
Exemplo
• Insira as seguintes chaves em um índice árvore-‐B – C S D T A M P I B W N G U R K E H O L J Y Q Z F X V
• Ordem da árvore-‐B: 4 – em cada nó (página de disco)
• número de chaves: 3 • número de ponteiros: 4
![Page 47: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/47.jpg)
ICMC-‐USP -‐ Base de Dados 47
C S D T A M P I B W N G U R K ...
• Passo 1 – inserção de C, S, D – criação do nó raiz
• C • C S • C D S
C D S
-‐1 -‐1 -‐1 -‐1
0
Próximo
![Page 48: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/48.jpg)
ICMC-‐USP -‐ Base de Dados 48
C S D T A M P I B W N G U R K ...
• Passo 2 – inserção de T – nó raiz cheio
C D T 1
S
2
0
S T
Próximo
![Page 49: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/49.jpg)
ICMC-‐USP -‐ Base de Dados 49
C S D T A M P I B W N G U R K ...
• Passo 2 – inserção de T – nó raiz cheio
C D T 1
S
2
0
S T
• parAcionamento do nó • criação de uma nova raiz • promoção de S
Próximo
![Page 50: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/50.jpg)
ICMC-‐USP -‐ Base de Dados 50
C S D T A M P I B W N G U R K ...
• Passo 3 – inserção de A – nó folha com espaço
A C T
S 2
D 0 1
Próximo
![Page 51: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/51.jpg)
ICMC-‐USP -‐ Base de Dados 51
C S D T A M P I B W N G U R K ...
• Passo 4 – inserção de M – nó folha 0 cheio
A C
D
T M
S
1 0 3
2
• parAcionamento do nó • promoção de D
D M
S
Próximo
![Page 52: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/52.jpg)
ICMC-‐USP -‐ Base de Dados 52
C S D T A M P I B W N G U R K ...
• Passo 5 – inserção de P – nós folhas com espaço
A
D
T
S
C M P
0 3
2
1
Próximo
M
![Page 53: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/53.jpg)
ICMC-‐USP -‐ Base de Dados 53
C S D T A M P I B W N G U R K ...
• Passo 5 – inserção de I – nós folhas com espaço
A
D
T
S
C M P
0 3
2
1
T
Próximo
M M P
I
![Page 54: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/54.jpg)
ICMC-‐USP -‐ Base de Dados 54
C S D T A M P I B W N G U R K ...
• Passo 5 – inserção de B – nós folhas com espaço
A B
D
T I
S
C M P 0 3
2
1
A C M M P
T
Próximo
![Page 55: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/55.jpg)
ICMC-‐USP -‐ Base de Dados 55
C S D T A M P I B W N G U R K ...
• Passo 5 – inserção de I, B, W – nós folhas com espaço
A B
D
T I
S
C M P W 0 3
2
1
A C M M P
Próximo
![Page 56: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/56.jpg)
ICMC-‐USP -‐ Base de Dados 56
C S D T A M P I B W N G U R K ...
• Passo 6 – inserção de N – nó folha 3 cheio
A B
D
P I
N
C M
S
T 1
W 0 3
2
1
• parAcionamento do nó • promoção de N
D S
I M P N P
Próximo
![Page 57: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/57.jpg)
ICMC-‐USP -‐ Base de Dados 57
C S D T A M P I B W N G U R K ...
• Passo 7 – inserção de G, U, R – nós folhas com espaço
A B
D
P G
N
C I
S
T U M R W 0 3
2
1 1
I M P T W
Próximo
![Page 58: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/58.jpg)
ICMC-‐USP -‐ Base de Dados 58
C S D T A M P I B W N G U R K ...
• Passo 8 – inserção de K – nó folha 3 cheio
A B
D
M G
K
C I P R T 1
U W
S 6
N 7
0 3
2
1 4
• parAcionamento do nó 3 • promoção de K • parAcionamento do nó 2 • promoção de N
G I M K K M
D N S K N S
![Page 59: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/59.jpg)
ICMC-‐USP -‐ Base de Dados 59
... E H O L J Y Q Z F X V
• Finalizar a construção da árvore
![Page 60: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/60.jpg)
ICMC-‐USP -‐ Base de Dados 60
Exercícios
• Na árvore-‐B do exemplo anterior, insira a chave $, sendo que $ < A.
• Insira as seguintes chaves em um índice árvore-‐B – C S D T A M P I B W N G U R K E H O L J Y Q Z F X V Ø diferentemente do exemplo anterior, escolha o úlAmo elemento do primeiro nó para promoção durante o parAcionamento do nó.
![Page 61: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/61.jpg)
ICMC-‐USP -‐ Base de Dados 61
Algoritmo
• Estrutura de dados – para cada bloco de disco – diferentes formas de implementação
• contador de ocupação • chaves ⇒ caracteres • ponteiros ⇒ campos de referência para cada chave
![Page 62: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/62.jpg)
ICMC-‐USP -‐ Base de Dados 62
Declaração (Pascal) type BTPAGE = record KEYCOUNT: integer; // MAXKEYS: número máximo de chaves por bloco KEY: array [ 1..MAXKEYS] of char; // MAXCHILDREN: número máximo de ponteiros por bloco CHILD: array [ 1..MAXCHILDREN] of integer; end; var PAGE: BTPAGE;
• PAGE.KEYCOUNT – úAl para determinar se o bloco está cheio
![Page 63: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/63.jpg)
ICMC-‐USP -‐ Base de Dados 63
Declaração em C -‐ Estrutura #define ORDEM 5 typedef struct pagina { short n; int chave[ORDEM-‐1]; struct pagina* filho[ORDEM];
} tpag;
![Page 64: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/64.jpg)
ICMC-‐USP -‐ Base de Dados 64
Exemplo
A B
D
I E
H
C G
K
L 5
M 0 3
2
8
J
3 D H K 0 3 8 5
2 E G NIL NIL NIL NIL
contador de ocupação
chaves ponteiros para os nós filhos
bloco 2
bloco 3
![Page 65: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/65.jpg)
ICMC-‐USP -‐ Base de Dados 65
contador de
ocupação
vetor de chaves
Arquivo da Árvore B
• Conjunto de registros de tamanho fixo
• Cada registro – contém um bloco de disco
... registro de cabeçalho
0 1 2 3 4
vetor de
ponteiros RRN da raiz
![Page 66: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/66.jpg)
ICMC-‐USP -‐ Base de Dados 66
Tópicos
-‐ Árvore de Pesquisa + Árvore B
– CaracterísAcas – Inserção – Pesquisa – Remoção – Análise
-‐ Árvore B* -‐ Arvore B+
![Page 67: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/67.jpg)
ICMC-‐USP -‐ Base de Dados 67
Algoritmo: Pesquisa bool busca(arvoreB *raiz, int info) { arvoreB *no; int pos; //posição retornada pelo busca binária. no = raiz; while (no != NULL) { pos = busca_binaria(no, info); if (pos < no-‐>num_chaves && no-‐>chaves[pos] == info) return(true); else no = no-‐>filhos[pos]; } return(false); }
É muito semelhante, porém ao invés de tomar uma decisão binária em cada nó,
tomamos uma decisão de ramificação de várias
vias.
![Page 68: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/68.jpg)
ICMC-‐USP -‐ Base de Dados 68
Algoritmo: Pesquisa int busca_binaria(arvoreB *no, int info) { int meio, i, f; i = 0; f = no-‐>num_chaves-‐1; while (i <= f) { meio = (i + f)/2; if (no-‐>chaves[meio] == info) return(meio); //Encontrou. Retorna a posição em que a chave está. else if (no-‐>chave[meio] > info f = meio -‐ 1; else i = meio + 1; } return(i); //Não encontrou. Retorna a posição do ponteiro para o filho. }
![Page 69: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/69.jpg)
ICMC-‐USP -‐ Base de Dados 69
Algoritmo: Pesquisa if KEY was found then FOUND_RRN := RRN RRN corrente contém a chave
FOUND_POS := POS return FOUND chave de busca encontrada
else a chave de busca não foi encontrada, portanto procura a chave de busca no nó filho return (search(PAGE.CHILD[POS], KEY, FOUND_RRN,
FOUND_POS)) endif endif end FUNCTION
![Page 70: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/70.jpg)
ICMC-‐USP -‐ Base de Dados 70
Busca da Chave “K”
PAGE =
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
D N S
![Page 71: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/71.jpg)
ICMC-‐USP -‐ Base de Dados 71
Busca da Chave “K”
PAGE = não encontrado
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
G I M
![Page 72: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/72.jpg)
ICMC-‐USP -‐ Base de Dados 72
Busca da Chave “K”
PAGE.CHILD[2] = NIL → chave de busca não encontrada return NOT FOUND
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
![Page 73: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/73.jpg)
ICMC-‐USP -‐ Base de Dados 73
Busca da Chave “M”
PAGE =
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
D N S
![Page 74: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/74.jpg)
ICMC-‐USP -‐ Base de Dados 74
Busca da Chave M
Ponteiro 2-‐>3 POS = 2
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
![Page 75: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/75.jpg)
ICMC-‐USP -‐ Base de Dados 75
Algoritmo: Pesquisa FUNCTION: search (RRN, página a ser pesquisada KEY, chave sendo procurada FOUND_RRN, página que contém a chave FOUND_POS) posição da chave na página if RRN == NIL then return NOT FOUND chave de busca não encontrada else read page RRN into PAGE leia o bloco apontado por RRN na
variável PAGE look through PAGE for KEY, se�ng POS equal to the posiAon where KEY occurs or should occur
![Page 76: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/76.jpg)
ICMC-‐USP -‐ Base de Dados 76
Algoritmo: Pesquisa if KEY was found then FOUND_RRN := RRN RRN corrente contém a chave
FOUND_POS := POS return FOUND chave de busca encontrada
else a chave de busca não foi encontrada, portanto procura a chave de busca no nó filho return (search(PAGE.CHILD[POS], KEY, FOUND_RRN,
FOUND_POS)) endif endif end FUNCTION
![Page 77: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/77.jpg)
ICMC-‐USP -‐ Base de Dados 77
Busca da Chave K
• search (2, K, FOUND_RRN, FOUND_POS)
PAGE = não existe → POS = 1
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
D N S
![Page 78: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/78.jpg)
ICMC-‐USP -‐ Base de Dados 78
Busca da Chave K
• search (PAGE.CHILD[1], K, FOUND_RRN, FOUND_POS)
PAGE = não existe → POS = 2
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
G I M
![Page 79: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/79.jpg)
ICMC-‐USP -‐ Base de Dados 79
Busca da Chave K
• search (PAGE.CHILD[2], K, FOUND_RRN, FOUND_POS)
PAGE.CHILD[2] = NIL → chave de busca não encontrada return NOT FOUND
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
![Page 80: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/80.jpg)
ICMC-‐USP -‐ Base de Dados 80
Busca da Chave M
• search (2, M, FOUND_RRN, FOUND_POS)
PAGE = não existe → POS = 1
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
D N S
![Page 81: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/81.jpg)
ICMC-‐USP -‐ Base de Dados 81
Busca da Chave M
• search (PAGE.CHILD[1], M, FOUND_RRN, FOUND_POS)
chave de busca encontrada PAGE = POS = FOUND_POS = 2 FOUND_RRN = 3 return FOUND
A B
D
P G
N
C I
S
T 1
U 0 3
2
4
R M W
G I M
![Page 82: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/82.jpg)
ICMC-‐USP -‐ Base de Dados 82
Tópicos
-‐ Árvore de Pesquisa + Árvore B
– CaracterísAcas – Inserção – Pesquisa – Remoção – Análise
-‐ Árvore B* -‐ Arvore B+
![Page 83: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/83.jpg)
ICMC-‐USP -‐ Base de Dados 83
Remoção: Caso 1
• Remoção de uma chave em um nó folha, sem causar underflow – situação mais simples possível
• Solução
?
![Page 84: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/84.jpg)
ICMC-‐USP -‐ Base de Dados 84
Remoção: Caso 1
• Remoção de uma chave em um nó folha, sem causar underflow – situação mais simples possível
• Solução – eliminar a chave da página – rearranjar as chaves remanescentes dentro da página para fechar o espaço liberado
![Page 85: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/85.jpg)
ICMC-‐USP -‐ Base de Dados 85
Remoção: Caso 2
• Remoção de uma chave em um nó não folha • Solução
?
![Page 86: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/86.jpg)
ICMC-‐USP -‐ Base de Dados 86
Remoção: Caso 2
• Remoção de uma chave em um nó não folha • Solução
– sempre remover chaves somente nas folhas
• Passos – trocar a chave a ser removida com a sua chave sucessora imediata (que está em um nó folha)
– remover a chave diretamente do nó folha
![Page 87: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/87.jpg)
ICMC-‐USP -‐ Base de Dados 87
Remoção: Caso 2
![Page 88: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/88.jpg)
ICMC-‐USP -‐ Base de Dados 88
Remoção: Caso 3
• Remoção de uma chave em um nó, causando underflow
• Solução:
?
![Page 89: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/89.jpg)
ICMC-‐USP -‐ Base de Dados 89
Remoção: Caso 3
• Remoção de uma chave em um nó, causando underflow
• Solução: Redistribuição – procurar uma página irmã (i.e., que possui o mesmo pai) adjacente que contenha mais chaves do que o mínimo
– se encontrou • redistribuir as chaves entre as páginas • reacomodar a chave separadora, modificando o conteúdo do nó pai
Quando o nó possui menos que a metade
cheio.
![Page 90: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/90.jpg)
ICMC-‐USP -‐ Base de Dados 90
![Page 91: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/91.jpg)
ICMC-‐USP -‐ Base de Dados 91
Remoção: Caso 4
• Remoção de uma chave em um nó, causando underflow e a redistribuição não pode ser aplicada
• Solução: Concatenação – combinar para formar uma nova página
• o conteúdo do nó que sofreu underflow • o conteúdo de um nó irmão adjacente • a chave separadora no nó pai
– tratar o underflow no nó pai, caso necessário
![Page 92: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/92.jpg)
ICMC-‐USP -‐ Base de Dados 92
![Page 93: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/93.jpg)
ICMC-‐USP -‐ Base de Dados 93
Concatenação
• Processo inverso do split • CaracterísAcas
– reverte a promoção de uma chave – pode causar underflow no nó pai ⇒ concatenação pode ser propagada em direção ao nó raiz
ocorre a redução no número total de nós da árvore
![Page 94: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/94.jpg)
ICMC-‐USP -‐ Base de Dados 94
Remoção: Caso 5
• Underflow no nó pai causado pela remoção de uma chave em um nó filho
• Solução – uAlizar redistribuição ou concatenação, dependendo da quanAdade de chaves que a página irmã adjacente contém
![Page 95: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/95.jpg)
ICMC-‐USP -‐ Base de Dados 95
![Page 96: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/96.jpg)
ICMC-‐USP -‐ Base de Dados 96
Remoção: Caso 6
• Diminuição da altura da árvore • CaracterísAca
– o nó raiz possui uma única chave – a chave é absorvida pela concatenação de seus nós filhos
• Solução – eliminar a raiz anAga – tornar no nó resultante da concatenação dos nós filhos a nova raiz da árvore
![Page 97: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/97.jpg)
ICMC-‐USP -‐ Base de Dados 97
![Page 98: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/98.jpg)
ICMC-‐USP -‐ Base de Dados 98
Remoção em Árvore-‐B
1. se a chave a ser removida não esAver em um nó folha, troque-‐a com sua sucessora imediata, que está em um nó folha
2. remova a chave 3. após a remoção, se o nó saAsfaz o número
mínimo de chaves, nenhuma ação adicional é requerida
![Page 99: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/99.jpg)
ICMC-‐USP -‐ Base de Dados 99
Remoção em Árvore-‐B
4. após a remoção, caso ocorra underflow, verifique o número de chaves nos nós irmãos adjacentes à esquerda e à direita a. se algum nó irmão adjacente possui mais do que
o número mínimo de chaves, aplique a redistribuição
b. se nenhum nó irmão adjacente possui mais do que o número mínimo de chaves, aplique a concatenação
![Page 100: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/100.jpg)
ICMC-‐USP -‐ Base de Dados 100
Remoção em Árvore-‐B
5. se ocorreu concatenação, repita os passos 3 a 5 para o nó pai
6. se a úlAma chave da raiz for removida, a altura da árvore é diminuída
![Page 101: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/101.jpg)
ICMC-‐USP -‐ Base de Dados 101
Remoção: Diferentes Casos
![Page 102: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/102.jpg)
ICMC-‐USP -‐ Base de Dados 102
Redistribuição
• Representa uma idéia inovadora – diferente do split ou da concatenação
• Não se propaga para os nós superiores – apenas efeito local na árvore
• Baseada no conceito de nós irmãos adjacentes – dois nós logicamente adjacentes, mas com pais diferentes não são irmãos
![Page 103: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/103.jpg)
ICMC-‐USP -‐ Base de Dados 103
Redistribuição
• Não fixa a forma na qual as chaves devem ser redistribuídas – possibilidade 1: mover somente uma chave, mesmo que a distribuição das chaves entre as páginas não seja uniforme
– possibilidade 2: mover k chaves – possibilidade 3: distribuição uniforme das chaves entre os nós
mais comum
![Page 104: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/104.jpg)
ICMC-‐USP -‐ Base de Dados 104
Redistribuição durante Inserção
• Funcionalidade – permite melhorar a taxa de uAlização do espaço alocado para a árvore
• split – divide uma página com overflow (i.e., working page) em duas páginas semi-‐vazias (i.e., page e newpage)
• redistribuição – a chave que causou overflow (além de outras chaves) pode ser colocada em outra página
X
![Page 105: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/105.jpg)
ICMC-‐USP -‐ Base de Dados 105
Redistribuição durante Inserção
• Opção interessante – a roAna de redistribuição já está codificada para prover suporte à remoção
– a redistribuição evita, ou pelo menos adia, a criação de novas páginas
• tende a tornar a árvore-‐B mais eficiente em termos de uAlização do espaço em disco
• garante um melhor desempenho na busca, desde que um número menor de nós pode reduzir a altura da árvore, por exemplo
![Page 106: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/106.jpg)
ICMC-‐USP -‐ Base de Dados 106
Split x Redistribuição
• Somente split na inserção – no pior caso, a uAlização do espaço é de cerca de 50%
– em média, para árvores grandes, o índice de ocupação é de ~69%
• Com redistribuição na inserção – em média, para árvores grandes, o índice de ocupação é de ~86%
![Page 107: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/107.jpg)
ICMC-‐USP -‐ Base de Dados 107
Tópicos
-‐ Árvore de Pesquisa + Árvore B
– CaracterísAcas – Inserção – Pesquisa – Remoção – Análise
-‐ Árvore B* -‐ Arvore B+
![Page 108: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/108.jpg)
ICMC-‐USP -‐ Base de Dados 108
Complexidade
• Profundidade do caminho de busca – número máximo de acessos a disco
• Relacionamento – tamanho da página de disco
• ex: árvore-‐B de ordem 512 → 511 chaves/página
– número de chaves • ex: 1.000.000 de chaves
⇒ número de níveis que pode ser aAngido?
pior caso
![Page 109: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/109.jpg)
ICMC-‐USP -‐ Base de Dados 109
Complexidade
• Profundidade do caminho de busca – número máximo de acessos a disco
• Relacionamento – tamanho da página de disco
• ex: árvore-‐B de ordem 512 → 511 chaves/página
pior caso
![Page 110: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/110.jpg)
ICMC-‐USP -‐ Base de Dados 110
Observação 1
número de descendentes de um nível da árvore-‐B
número de chaves conAdas no nível em questão e
em todos os níveis acima
= + 1
$ A C E F G I J L M O P R T U V X Y Z
B D K Q S W
H N
d d d d d d d d d d d d d d d d d d d d d d d d d d d d
árvore-‐B com 27 chaves e 28 descendentes
![Page 111: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/111.jpg)
ICMC-‐USP -‐ Base de Dados 111
Observação 2
• Propriedades da árvore-‐B de ordem m – cálculo do número mínimo de descendentes de um nível
nível número mínimo de descendentes 1 2 2 2 x ⎡m/2⎤ 3 2 x ⎡m/2⎤ x ⎡m/2⎤ = 2 x ⎡m/2⎤ 2
4 2 x ⎡m/2⎤ x ⎡m/2⎤ x ⎡m/2⎤ = 2 x ⎡m/2⎤ 3 ... ... d 2 x ⎡m/2⎤ d-1
para qualquer
nível d, com exceção da raiz (nível 1)
![Page 112: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/112.jpg)
ICMC-‐USP -‐ Base de Dados 112
Complexidade
• Número de chaves (N) – N + 1 descendentes no nível das folhas
• Profundidade da árvore-‐B no nível das folhas – d
• Relacionamento – N + 1 descendentes e – número mínimo de descendentes da árvore-‐B com profundidade d
![Page 113: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/113.jpg)
ICMC-‐USP -‐ Base de Dados 113
Complexidade
N + 1 ≥ 2 x ⎡m/2⎤d-‐1
d ≤ 1 + log⎡m/2⎤ ( (N + 1)/2 )
• Exemplo – m = 512 – N = 1.000.000 – d ≤ 1 + log256 (500.000,50) ⇒ d ≤ 3,37 – acesso a disco adicional: arquivo de dados
a árvore possui não mais do que 3 níveis de altura
![Page 114: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/114.jpg)
ICMC-‐USP -‐ Base de Dados 114
Tópicos
-‐ Árvore de Pesquisa -‐ Árvore B + Árvore B* -‐ CaracterísAcas -‐ Diferenças
-‐ Arvore B+
![Page 115: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/115.jpg)
ICMC-‐USP -‐ Base de Dados 115
• Proposta por Knuth em 1973 – variação de árvore-‐B
• CaracterísAca – cada nó contém, no mínimo, 2/3 do número máximo de chaves
• Posterga o split – estende a noção de redistribuição durante a inserção para incluir novas regras para o parAcionamento de nós
Árvore-‐B*
![Page 116: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/116.jpg)
ICMC-‐USP -‐ Base de Dados 116
• Proposta por Knuth em 1973 – variação de árvore-‐B
• Mínimo de chave • Posterga o split
Árvore-‐B*
Efeito disso ?
![Page 117: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/117.jpg)
ICMC-‐USP -‐ Base de Dados 117
• Geração – processo de subdivisão
• CaracterísAcas – a subdivisão é adiada até que duas páginas irmãs estejam cheias
– na seqüência, a divisão do conteúdo das duas páginas em três páginas (two-‐to-‐three split) é realizada
Árvore-‐B*
![Page 118: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/118.jpg)
ICMC-‐USP -‐ Base de Dados 118
Tópicos
-‐ Árvore de Pesquisa -‐ Árvore B + Árvore B* -‐ CaracterísAcas -‐ Diferenças
-‐ Arvore B+
![Page 119: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/119.jpg)
ICMC-‐USP -‐ Base de Dados 119
Uso da Redistribuição
• Situações (árvore-‐B e árvore-‐B*) – diferem das árvores B em relação ao parAcionamento de suas páginas
• árvore-‐B – split 1-‐to-‐2
• árvore-‐B* – split 2-‐to-‐3 – pelo menos um nó irmão está cheio
![Page 120: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/120.jpg)
ICMC-‐USP -‐ Base de Dados 120
Split 2-‐to-‐3
![Page 121: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/121.jpg)
ICMC-‐USP -‐ Base de Dados 121
Definição Formal
• Propriedades de uma Árvore-‐B* – cada página possui um máximo de m descendentes – cada página, exceto a raiz e as folhas, possui no mínimo (2m-‐1)/3 descendentes à taxa de ocupação
– a raiz possui pelo menos 2 descendentes, a menos que seja um nó folha
– todas as folhas aparecem no mesmo nível – uma página interna com k descendentes contém k-‐1 chaves
– uma folha possui no mínimo ⎣(2m-‐1)/3⎦ chaves e no máximo m -‐ 1 chaves à taxa de ocupação
![Page 122: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/122.jpg)
ICMC-‐USP -‐ Base de Dados 122
Observações
• Mudança na taxa de ocupação – afeta as roAnas de remoção e redistribuição
• ParAcionamento da raiz – problema
• raiz não possui nó irmão
– soluções • dividir a raiz usando a divisão convencional (1-‐to-‐2 split); ou
• permiAr que a raiz seja maior
![Page 123: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/123.jpg)
ICMC-‐USP -‐ Base de Dados 123
Tópicos
-‐ Árvore de Pesquisa -‐ Árvore B -‐ Árvore B* + Árvore B+ -‐ Inserção -‐ Remoção
![Page 124: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/124.jpg)
ICMC-‐USP -‐ Base de Dados 124
Sequence Sets
• Problema – manter os registros ordenados fisicamente pela chave (sequence set)
• Solução – organizar registros em blocos
um bloco consiste na unidade básica de entrada e saída e deve ter seu tamanho determinado pelo tamanho do buffer-‐
pool
![Page 125: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/125.jpg)
ICMC-‐USP -‐ Base de Dados 125
![Page 126: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/126.jpg)
ICMC-‐USP -‐ Base de Dados 126
Sequence Sets
• Problema – manter os registros ordenados fisicamente pela chave (sequence set)
• Solução – organizar registros em blocos
![Page 127: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/127.jpg)
ICMC-‐USP -‐ Base de Dados 127
Uso de Blocos
• CaracterísAcas – o conteúdo de cada bloco está ordenado, e pode ser recuperado em um acesso
– cada bloco mantém um ‘ponteiro’ para o bloco antecessor e um ‘ponteiro’ para o bloco sucessor
– blocos logicamente adjacentes não estão (necessariamente) fisicamente adjacentes
• Garante acesso sequencial ao arquivo
![Page 128: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/128.jpg)
ICMC-‐USP -‐ Base de Dados 128
Problema 1
• Inserção de registros pode provocar overflow em um bloco
• Solução – dividir o bloco, em um processo análogo ao realizado em árvores-‐B
– passos • divide os registros entre os dois blocos • rearranja os ponteiros
não existe promoção !
![Page 129: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/129.jpg)
ICMC-‐USP -‐ Base de Dados 129
Problema 2
• Remoção de registros pode provocar underflow em um bloco
• Solução – concatenar o bloco com o seu antecessor ou sucessor na seqüência lógica
– redistribuir os registros, movendo-‐os entre blocos logicamente adjacentes
![Page 130: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/130.jpg)
ICMC-‐USP -‐ Base de Dados 130
Exemplo: Inserção de CARTER
ADAMS ... BAIRD ... BIXBY ... BOONE ...
BYNUM ... CART ... COLE ... DAVES ...
DENVER ... ELLIS ...
ADAMS ... BAIRD ... BIXBY ... BOONE ...
BYNUM ... CART ... CARTER ...
DENVER ... ELLIS ...
COLE ... DAVIS ...
bloco 1 bloco 2 bloco 3 bloco 1 bloco 2 bloco 3 bloco 4
![Page 131: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/131.jpg)
ICMC-‐USP -‐ Base de Dados 131
Exemplo: Remoção de DAVIS ADAMS ... BAIRD ... BIXBY ... BOONE ...
BYNUM ... CART ... CARTER ...
DENVER ... ELLIS ...
COLE ... DAVIS ...
ADAMS ... BAIRD ... BIXBY ... BOONE ...
BYNUM ... CART ... CARTER ...
COLE ... DENVER ... ELLIS
bloco 1 bloco 2 bloco 3
bloco 4 bloco 1 bloco 2 bloco 3 bloco 4
disponível para uso
![Page 132: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/132.jpg)
ICMC-‐USP -‐ Base de Dados 132
Indexação
• CaracterísAca – os registros podem ser acessados em ordem, sequencialmente, pela chave
• Problema – localizar eficientemente um bloco com um registro parAcular, dado a chave do registro
• Uma solução (contexto da disciplina) – árvore-‐B+ (pré-‐fixada)
![Page 133: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/133.jpg)
ICMC-‐USP -‐ Base de Dados 133
Árvore-‐B+ Pré-‐Fixada
• Estrutura híbrida – chaves
• organizadas como árvore-‐B (i.e., index set)
– nós folhas • consistem em blocos de sequence set
• Pré-‐fixada simples – armazena na árvore as cadeias separadoras mínimas entre cada par de blocos
![Page 134: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/134.jpg)
ICMC-‐USP -‐ Base de Dados 134
• CaracterísAcas – são manAdos no índice, ao invés das chaves de busca
– possuem tamanho variável
• Exemplo
Separadores
BO CAM E F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON EMBRY-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FOLKS-‐GADIS
![Page 135: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/135.jpg)
ICMC-‐USP -‐ Base de Dados 135
Separadores
• Desafio – escolher o menor separador para uAlizar no índice
• Tabela de decisão
chave de busca x separador decisão
chave < separador procure à esquerda chave = separador procure à direita chave > separador procure à direita
![Page 136: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/136.jpg)
ICMC-‐USP -‐ Base de Dados 136
Árvore-‐B+ Pré-‐Fixada
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON EMBRY-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FOLKS-‐GADIS
árvore-‐B de ordem 3
![Page 137: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/137.jpg)
ICMC-‐USP -‐ Base de Dados 137
Manutenção
• Cenários – inserção – remoção – overflow – underflow
• Efeitos colaterais – sequence set – árvore-‐B+
![Page 138: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/138.jpg)
ICMC-‐USP -‐ Base de Dados 138
Tópicos
-‐ Árvore de Pesquisa -‐ Árvore B -‐ Árvore B* + Árvore B+ -‐ Inserção -‐ Remoção
![Page 139: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/139.jpg)
ICMC-‐USP -‐ Base de Dados 139
Remoção de EMBRY
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON EMBRY-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FOLKS-‐GADIS
sem redistribuição ou concatenação
![Page 140: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/140.jpg)
ICMC-‐USP -‐ Base de Dados 140
Remoção de EMBRY
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON ERVIN-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FOLKS-‐GADIS
sem redistribuição ou concatenação
• Efeito no sequence set – limitado a alterações no bloco 4
![Page 141: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/141.jpg)
ICMC-‐USP -‐ Base de Dados 141
Remoção de EMBRY
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON ERVIN-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FOLKS-‐GADIS
sem redistribuição ou concatenação
• Efeito na árvore-‐B+ – nenhum: E é uma boa chave separadora
![Page 142: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/142.jpg)
ICMC-‐USP -‐ Base de Dados 142
Remoção de FOLKS
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON ERVIN-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FOLKS-‐GADIS
sem redistribuição ou concatenação
![Page 143: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/143.jpg)
ICMC-‐USP -‐ Base de Dados 143
Remoção de FOLKS
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON ERVIN-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FROST-‐GADIS
sem redistribuição ou concatenação
• Efeito no sequence set – limitado a alterações no bloco 6
![Page 144: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/144.jpg)
ICMC-‐USP -‐ Base de Dados 144
Remoção de FOLKS
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON ERVIN-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FROST-‐GADIS
sem redistribuição ou concatenação
• Efeito na árvore-‐B+ – nenhum: custos elevados
![Page 145: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/145.jpg)
ICMC-‐USP -‐ Base de Dados 145
Inserção de EATON
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON ERVIN-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FROST-‐GADIS
espaço disponível no bloco
![Page 146: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/146.jpg)
ICMC-‐USP -‐ Base de Dados 146
Inserção de EATON
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON EATON-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FROST-‐GADIS
espaço disponível no bloco
• Efeito no sequence set – limitado a alterações no bloco 4
![Page 147: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/147.jpg)
ICMC-‐USP -‐ Base de Dados 147
Inserção de EATON
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON EATON-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FROST-‐GADIS
espaço disponível no bloco
• Efeito na árvore-‐B+ – nenhum: E é uma boa chave separadora
![Page 148: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/148.jpg)
ICMC-‐USP -‐ Base de Dados 148
Inserção de AVERY
E
BO CAM F FOLKS
ADAMS-‐BERNE BOLEN-‐CAGE CAMP-‐DUTTON EATON-‐EVANS FABER-‐FOLK
1 2 3 4 5 6
FROST-‐GADIS
split no sequence set 1
![Page 149: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/149.jpg)
ICMC-‐USP -‐ Base de Dados 149
BO E
Inserção de AVERY
AY F FOLKS
ADAMS-‐ AVERY
AYERS-‐ BERNE
BOLEN-‐ CAGE
1 7 2 3 4 5 6
split no sequence set 1
• Efeito no sequence set – dados do bloco 1 + AVERY distribuídos entre os blocos 1 e 7
CAM
EATON-‐EVANS FABER-‐FOLK FROST-‐GADIS CAMP-‐DUTTON
![Page 150: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/150.jpg)
ICMC-‐USP -‐ Base de Dados 150
Inserção de AVERY
• Efeito na árvore-‐B+ – separador adicional AY
BO E
AY F FOLKS
ADAMS-‐ AVERY
AYERS-‐ BERNE
BOLEN-‐ CAGE
1 7 2 3 4 5 6
split no sequence set 1
CAM
EATON-‐EVANS FABER-‐FOLK FROST-‐GADIS CAMP-‐DUTTON
![Page 151: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/151.jpg)
ICMC-‐USP -‐ Base de Dados 151
Remoção de CAEL
BO E
AY F FOLKS
ADAMS-‐ AVERY
AYERS-‐ BERNE
BOLEN-‐ CAGE
1 7 2 3 4 5 6
CAM
EATON-‐EVANS FABER-‐FOLK FROST-‐GADIS CAMP-‐DUTTON
underflow no sequence set 2
![Page 152: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/152.jpg)
ICMC-‐USP -‐ Base de Dados 152
Remoção de CAEL
1 7 2 4 5 6
EATON-‐EVANS FABER-‐FOLK FROST-‐GADIS BOLEN-‐DUTTON
underflow no sequence set 2
• Efeito no sequence set – concatenação dos blocos 2 e 3
ADAMS-‐AVERY AYERS-‐BERNE
E
AY BO F FOLKS
![Page 153: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/153.jpg)
ICMC-‐USP -‐ Base de Dados 153
Remoção de CAEL
1 7 2 4 5 6
EATON-‐EVANS FABER-‐FOLK FROST-‐GADIS BOLEN-‐DUTTON
underflow no sequence set 2
• Efeito na árvore-‐B+ – remoção de CAMP e concatenação de nós
ADAMS-‐AVERY AYERS-‐BERNE
E
AY BO F FOLKS
![Page 154: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/154.jpg)
ICMC-‐USP -‐ Base de Dados 154
Inserção e Remoção
• Primeiro passo: Sequence Set – inserir ou remover o dado – tratar, caso necessário
• split • contatenação • redistribuição
alterações são sempre realizadas a parAr do arquivo de
dados
![Page 155: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/155.jpg)
ICMC-‐USP -‐ Base de Dados 155
Inserção e Remoção
• Segundo passo: Árvore-‐B+ – se split no sequence set inserir um novo separador no índice – se concatenação no sequence set remover um separador do índice – se distribuição no sequence set alterar o valor do separador no índice
![Page 156: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/156.jpg)
ICMC-‐USP -‐ Base de Dados 156
Exercícios
1) Considere-‐se uma árvore B + em que n = 4, (o número máximo de chaves num nó). Suponhamos que a árvore B + inicialmente consiste de um único nó, que é ao mesmo tempo a raiz e a única folha, que tem o número 1. Qual é o número mínimo de chaves que podem aparecer em um nó de folha não raiz?
![Page 157: Árvore B, B*e( B+ - USPwiki.icmc.usp.br/images/8/8e/SCC578920131-B.pdf · ICMC$USP($(Base(de(Dados( 3 Estruturade(Dados(de(Árvore(A B C D E F J K G H I Legenda nó raiz nó folha](https://reader030.fdocuments.net/reader030/viewer/2022040505/5e393b645b159c2acb197814/html5/thumbnails/157.jpg)
ICMC-‐USP -‐ Base de Dados 157
Exercícios
2) Construa uma Árvore-‐B com t=2, para as letras inseridas nesta ordem: F, S, Q, K, C, L, H, T, V, W, R, N, P, A, B, X, Y, D, Z, E 3) Considere o conjunto de chaves 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13. Faça a inserção numa Árvore-‐B+ de modo que a árvore resultante tenha três níveis.