Logo Passei Direto
Buscar

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
1
 
 
Árvore B+ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 35 Maria do Carmo F 
40 Ronildo Santos M 
05 10 15 20 25 30 35 40 45 50 55 60 65 70 
15 25 45 
 
65 
 
35 55 
Nó Raiz 
Nó Intermediário Nó Folha 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
2
Estrutura de uma Árvore B+ 
 
 
� Estrutura de um nó de uma Árvore B+ 
 
 
� Nó Folha 
o Um nó de uma árvore B+ pode conter até n-1 valores de chave de busca K1, K2, ... Kn-1 e n ponteiros. 
o Um nó folha deve conter, pelo menos, (n-1)/2 ponteiros. (n-1)/2 arredondado para cima, 
o As chaves, de cada nó, são mantidas em ordem crescente. Para i<j, Ki < Kj. 
o No nó folha o ponteiro Pi aponta para o um registro do arquivo com chave Pi. O ponteiro Pn, não aponta para registros do arquivo, 
mas é usado para encadear as chaves de busca em ordem crescente. 
� Nó Não-Folha 
o Os nós não-folha não apontam para registros do arquivo. Eles apontam para outros nós da árvore. 
o Devem manter n ponteiros deste que: n/2 >= Número de ponteiros <= n. n/2 deve ser arredondado para o primeiro inteiro maior. 
P1 K1 P2 K2 P3 K3 P4 K4 Pn-1 Kn-1 
 
Pn 
 
........ 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
3
o O ponteiro Pi aponta para a sub-árvore com chaves de busca menores que Ki e maiores que Ki-1. 
� Nó Raiz 
o O Nó raiz deve conter no mínimo 2 ponteiros, exceção feita para árvore com um único nó, ou com uma única chave de busca por 
nó. O número máximo de ponteiros é n; 
 
Consultas em Árvores B+. 
� Supor que queremos encontrar a chave de busca V. 
� Examinar um nó em busca da maior chave de busca menor que V, até alcançar um nó folha. 
� Se V coincidir com a chave Ki do nó folha, então o ponteiro Pi aponta para o registro desejado, do arquivo. Se não há no nó folha 
alcançado um Ki que coincida com V, então a chave não existe no arquivo. 
� Para K valores de chave de busca o caminho percorrido para encontra uma chave é <= logn/s K com n/2 arredondado para cima e o logn/2 
também. 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
4
Algoritmo de consulta em uma Árvore B+ 
Procedure Encontrar (V) 
 Faça C = Nó raiz 
 Enquanto C não é um nó folha 
Faça 
 Ki = menor valor da chave de busca > V, se houver 
 Se não existe um valor 
 Então 
Faça 
 m = numero de ponteiros no nó 
 C = nó apontado por Pm 
 
Fim Faça 
 Senão 
 C = nó apontado por Pi 
 Fim Se 
 Fim Faça 
 Fim enquanto 
 Se existe um valor de chave Ki em C tal que Ki = V 
 Então Pi nos leva ao registro desejado 
 Senão não existe registro com o valor de chave V 
 Fim Se 
 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
5
Algoritmo de Inserção em uma Árvore B+ 
• Encontrar o nó folha no qual se deve incluir a chave de busca. 
• Se a chave couber no nó, inserir, no nó, a chave de modo que as chaves do nó se mantenham ordenadas. 
• Se a chave de busca não couber no nó, alocar outro nó e preencher os dois nós do seguinte modo: 
o O nó antigo fica com as (n/2, arredondado para cima) primeiras chaves (as n-1 chaves existentes no nó mais a nova chave, 
mantidas ordenadas); 
o O segundo nó fica com as chaves restantes, também mantidas ordenadas. 
o Colocar no nó pai, do nó antigo, a menor chave do novo nó. Se o nó pai não estiver cheio colocar a chave, no nó, de modo que 
continuem ordenadas; se o nó estiver cheio dividi-lo, tal como a divisão do nó folha. Se o nó dividido for a raiz da árvore, a 
árvore aumenta de altura. 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
6
 
Exercício 1 
Apresentar a estrutura da árvore B+ após a inclusão das seguintes chaves: 75,05,10,70,15,20, 65, 80,74,68,95,100 
. Mostrar a estrutura da árvore com duas chaves por nó e três ponteiros. 
 
Para efeito de clareza da estrutura da árvore vamos omitir os ponteiros para os arquivos e os ponteiros nulos. 
Os nós escurecidos significam que foram afetados pela inclusão da nova chave. Ou foram criados, ou alterados. 
 
 Passo 1: Inclusão da chave 75 
 
 
Passo 2: Inclusão da chave 05 
 Como o nó 1 não está cheio incluímos nele a nova chave, de modo a garantir a ordem das chaves 
75 
Nó 1 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
7
 
 
 Repare que as chaves devem ser mantidas ordenadas 
 
Passo 3: Inclusão da chave 10 
Agora precisamos dividir o nó. 
Então, alocamos um novo nó. Deixamos, no nó antigo, as n/2 (arredondado para cima) primeiras chaves (05, 10, 75), no nosso 
caso as chaves 05 e 10; no novo nó as chaves restantes, ou seja 75. 
 
 
 
Nó 1 
05 75 
05 10 75 
Nó 1 
Nó 2 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
8
 
Precisamos agora incluir a menor chave do novo nó (75) no pai do nó antigo; no nosso caso o nó das chaves 05 e 10. Como o nó não tem 
pai devemos criar um novo nó para acomodar a chave. 
 
 
 
 
05 10 75 
75 
Nó 1 
Nó 2 
Nó 3 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
9
Passo 4: Inclusão da chave 70 
A chave 70 deve ser incluída na sub-árvore _a esquerda do nó 3; ou seja no nó 1. 
Como o nó 1 está cheio devemos alocar outro nó e colocar a primeira metade (arredondado para cima) das chaves do nó 1 e as 
restantes no novo nó (nó 4); além de incluir a menor chave do novo nó (nó 4) no pai do nó 1, que é o nó 3, assim: 
 
 
 
 
Passo 5: Inclusão da chave 15 
05 10 75 
70 75 
Nó 1 
Nó 2 
Nó 3 
70 
Nó 4 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
10
 
A chave 15 deve ser incluída nó 1; 
Como o nó 1 está cheio devemos alocar outro nó e colocar a primeira metade (arredondado para cima) das chaves do nó 1 e as 
restantes no novo nó (nó 5); além de incluir a menor chave do novo nó (nó 5) no pai do nó 1, que é o nó 3. Como o nó 3 está 
cheio precisamos alocar um novo nó (nó 6) para acomodar a nova chave (15); como o nó 3 não tem ancestral precisamos alocar 
outro nó para acomodar a nova raiz da árvore; e a nossa árvore fica assim: 
 
 
 
 
 
 
 
 
05 10 75 
75 
Nó 1 
Nó 2 
Nó 3 
70 
Nó 4 
15 
Nó 5 
70 
Nó 7 
15 
Nó 6 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
11
Passo 6: Inclusão da chave 20 
A chave 20 deve ser incluída nó 5; 
Como o nó 5 não está cheio colocamos a chave no nó 5 de modo a garantir a ordem das chaves no nó. A nossa árvore fica assim: 
 
 
 
 
 
 
 
 
 
05 10 75 
75 
Nó 1 
Nó 2 
Nó 3 
70 
Nó 4 
15 20 
Nó 5 
70 
Nó 7 
15 
Nó 6 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
12
Passo 7: Inclusão da chave 65 
A chave 65 deve ser incluída nó 5; 
Como o nó 5 está cheio devemos alocar outro nó (nó 8). Deixamos, então, a primeira metade das chaves no nó 5 e colocamos as 
restantes no novo nó (nó 8). Em seguida devemos incluir a menor chave do novo nó (nó 8) no nó pai do nó 5. Como o nó 6 não 
está cheio incluímos nele a chave (no nosso caso a 65) 
 
 
 
 
 
 
 
 
 
75 
75 
05 10 
Nó 1 
Nó 2 
Nó 3 
70 
Nó 4 
15 
Nó 5 
70 
Nó 7 
15 65 
Nó 6 
20 65 
Nó 8 
 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues
Canêdo 
13
Passo 8: Inclusão da chave 80 
A chave deve ser incluída na sub-árvore à direita da raiz; ou seja no nó 2. 
Como o nó 2 não está cheio incluímos a chave no nó. A árvore fica assim: 
 
 
 
 
 
 
 
 
 
 
75 80 
75 
05 10 
Nó 1 
Nó 2 
Nó 3 
70 
Nó 4 
15 
Nó 5 
70 
Nó 7 
15 65 
Nó 6 
20 65 
Nó 8 
 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
14
Passo 9: Inclusão da chave 74 
A chave 74 deve ser incluída no nó 4. 
Como o nó 4 não está cheio incluímos a chave no nó de modo a garantir a ordem das chaves. A árvore fica assim: 
 
 
 
 
 
 
 
 
 
75 
75 
05 10 
Nó 1 
Nó 2 
Nó 3 
70 74 
Nó 4 
15 
Nó 5 
70 
Nó 7 
15 65 
Nó 6 
20 65 
Nó 8 
 
80 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
15
Passo 10: Inclusão da chave 68 
A chave 68 deve ser incluída no nó 8. 
Como o nó 8 não está cheio incluímos a chave no nó de modo a garantir a ordem das chaves. A árvore fica assim: 
 
 
 
 
 
 
 
 
 
75 
75 
05 10 
Nó 1 
Nó 2 
Nó 3 
70 74 
Nó 4 
15 
Nó 5 
70 
Nó 7 
15 65 
Nó 6 
20 65 
Nó 8 
68 80 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
16
Passo 11: Inclusão da chave 95 
A chave 95 deve ser incluída no nó 2. 
Como o nó 2 está cheio devemos alocar outro bloco para acomodar a chave. Deixamos a primeira metade das chaves no nó 2 e a 
outra metade no novo nó (nó 9); devemos garantir a ordem das chaves nos dois nós. Em seguida devemos incluir a menor chave 
do novo nó (nó 9) no pai do nó 2. A árvore fica assim: 
 
 
 
 
 
 
 
 
 
75 
75 95 
05 10 
Nó 1 Nó 2 
Nó 3 
70 74 
Nó 4 
15 
Nó 5 
70 
Nó 7 
15 65 
Nó 6 
20 65 
Nó 8 
68 80 95 
Nó 9 
 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
17
Passo 12: Inclusão da chave 100 
A chave 100 deve ser incluída no nó 9. 
Como o nó 2 não está cheio, apenas, incluímos a chave no nó. A árvore fica assim: 
 
 
 
 
 
 
 
 
 
 
75 
75 
05 10 
Nó 1 Nó 2 
Nó 3 
70 74 
Nó 4 
15 
Nó 5 
70 
Nó 7 
15 65 
Nó 6 
20 65 
Nó 8 
68 80 95 
Nó 9 
100 
95 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
18
 
Exercício 2 
Apresentar a estrutura da árvore B+ após a inclusão das seguintes chaves: 75,05,10,70,15,20, 80,74,68,95,100 
. Mostrar a estrutura da árvore com três chaves por nó e quatro ponteiros. 
 Passo 1: Inclusão da chave 75 
 
 
 
Passo 2: Inclusão da chave 05 
 Como o nó 1 não está cheio incluímos nele a nova chave, de modo a garantir a ordem das chaves 
 
 
 
75 
Nó 1 
 
Nó 1 
05 75 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
19
 
Passo 3: Inclusão da chave 10 
 Como o nó 1 não está cheio incluímos nele a nova chave, de modo a garantir a ordem das chaves 
 
 
 
Nó 1 
05 10 75 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
20
 
Passo 4: Inclusão da chave 70 
Como o nó 1 está cheio devemos alocar um novo nó para acomodar as chaves. A primeira metade das chaves do nó fica no nó 
antigo e as a outra metade, incluindo a chave que se quer incluir fica no novo nó (nó 2). Nos dois nós as chaves devem ser 
mantidas ordenadas. Assim: 
 
 
 
Precisamos agora incluir a menor chave do novo nó (70) no pai do nó antigo; no nosso caso o nó 1. Como o nó não tem pai 
devemos criar um novo nó para acomodar a chave. 
 
 
 
 
Nó 1 Nó 2 
05 10 70 75 
Nó 1 Nó 2 
05 10 70 75 
70 Nó 3 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
21
 
Passo 5: Inclusão da chave 15 
 A chave 15 deve ser inserida no nó 1. 
Como o nó 1 não está cheio incluímos a incluímos nele a chave. 
 
 
 
 
 
 
 
 
 
Nó 1 Nó 2 
05 10 70 75 15 
70 Nó 3 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
22
Passo 6: Inclusão da chave 20 
 A chave 20 deve ser inserida no nó 1. 
Como o nó 1 está cheio temos de alocar um bloco novo (nó 4) para acomodar as chaves. A primeira metade fica no nó 1 e a outra 
metade incluindo a chave nova fica no nó novo. Incluímos, também a menor chave do novo nó (nó 4) no nó pai do nó1. Assim: 
 
 
 
 
 
 
 
 
Nó 1 Nó 2 
05 10 70 75 
15 70 Nó 3 
Nó 4 
15 20 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
23
Passo 7: Inclusão da chave 80 
 A chave 80 deve ser inserida no nó 2. 
Como o nó 2 não está cheio, incluimos a chave nele, simplesmente. Assim: 
 
 
 
 
 
 
 
 
 
Nó 1 Nó 2 
05 10 70 75 80 
15 70 Nó 3 
Nó 4 
15 20 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
24
Passo 8: Inclusão da chave 74 
 A chave 74 deve ser inserida no nó 2. 
Como o nó 2 está cheio precisamos alocar um novo nó (nó 5) para acomodar as chaves. A primeira metade das chaves fica nó 2 e 
a segunda metade incluindo a chave nova fica no nó 5. Depois transferimos para o pai do nó 4 a menor chave do novo nó (nó5). A 
árvore fica assim: 
 
 
 
 
 
 
 
 
Nó 1 Nó 2 
05 10 70 74 
15 70 75 Nó 3 
Nó 4 
15 20 
Nó 5 
75 80 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
25
Passo 9: Inclusão da chave 68 
 A chave 68 deve ser inserida no nó 4. 
Como o nó 4 não está cheio incluímos a chave nele de modo que as chaves do nó fiquem ordenadas. 
 
 
 
 
 
 
 
 
 
Nó 1 Nó 2 
05 10 70 74 
15 70 75 Nó 3 
Nó 4 
15 20 68 
Nó 5 
75 80 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
26
Passo 10: Inclusão da chave 95 
 A chave 95 deve ser inserida no nó 5. 
Como o nó 2 não está cheio incluímos a chave nele de modo que as chaves do nó fiquem ordenadas. 
 
 
 
 
 
 
 
 
 
Nó 1 Nó 2 
05 10 70 74 
15 70 75 Nó 3 
Nó 4 
15 20 68 
Nó 5 
75 80 95 
Universidade Castólica de Goiás 
Banco de Dados 
Pro.: Ivon Rodrigues Canêdo 
27
Passo 11: Inclusão da chave 100 
 A chave 100 deve ser inserida no nó 2. 
Como o nó 2 está cheio devemos alocar um novo nó. A primeira metade das chaves do nó 2 incluindo a nova chave fica no nó 2 e 
a outra metade fica no nó 6. Em seguida incluímos a menor chave do novo nó (nó 6) no pai do nó2. Como o pai do nó 2 (nó 3) está 
cheio devemos dividi-lo, também. 
 
 
 
 
 
 
 
 
 
Nó 1 Nó 2 
05 10 70 74 
15 70 
Nó 3 
Nó 4 
15 20 68 
Nó 5 
75 80 
Nó 6 
95 100 
95 
Nó 3 
75 
Nó 7

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Mais conteúdos dessa disciplina