Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Árvores B – Partes I e II
Motivação & Construção Bottom-Up
Leandro C. Cintra
Maria Cristina F. de Oliveira
A Invenção da B-Tree
Bayer and McGreight, 1972, publicaram o
artigo: "Organization and Maintenance
of Large Ordered Indexes"
1
Problema
Acesso a disco é muito custoso (lento)
Se um arquivo de índice é grande e não cabe
em memória RAM, pode exigir muitos acessos
Por exemplo, via busca binária:
1.000 itens podem requerer log2(1000) ≅ 10 acessos
Número muito alto para relativamente poucos itens
Ainda pior, exige manter o arquivo de índice ordenado...
Solução ?
3
Arquivos Paginados
2
Arquivos Paginados
Página:
Um conjunto de itens fisicamente contíguos passíveis
de serem recuperados em um único acesso
p. ex. ocupando um setor ou cluster
3
Árvores Binárias Paginadas
Na ABB da figura anterior:
qq. dos 63 itens é recuperado em, no máximo, 2 acessos !
Com um nível adicional:
ter-se-ão 64 novas páginas
o que representa 64 x 7 = 448 itens adicionais
qq. dos 511 itens é recuperado em, no máximo, 3 acessos !
Com outro nível adicional:
qualquer dos 4095 itens pode ser recuperado em no máx. 4 acessos !
busca binária de 4095 itens pode demandar até 12 acessos
4
Árvores Binárias Paginadas
Exemplo anterior:
k = 511: log511+1(134.217.728) = 3 acessos
5
Árvores Binárias Paginadas
Exemplo: 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
11
Problema:
Chaves pequenas no topo, como C e D, podem acabar
desbalanceando a árvore de forma definitiva
A árvore do exemplo não está tão ruim, mas o que aconteceria se as
chaves fossem fornecidas em ordem alfabética?
12
6
Árvores Binárias Paginadas
Problema:
É necessário manter o balanceamento após inserções e remoções
com a restrição dos itens estarem agrupados em páginas...
Questões :
como garantir que as páginas formem uma árvore balanceada ?
p. ex., como impedir o agrupamento de chaves como C, D e S no exemplo anterior ?
13
Solução: Árvores B !
14
7
Árvores B
Características
paginadas
balanceadas
bottom-up para a criação
nós folhas → nó raiz
Inovação
não é necessário construir a árvore a partir
da raiz, como é feito para ABBs e AVLs
15
Construção Bottom-Up
Conseqüências
não mais se aloca chaves inadequadas na raiz
chaves na raiz da árvore “emergem” naturalmente
8
Características
Nó = Página em Disco:
Contém uma seqüência de itens ordenados por
chave
item = (chave, endereço)
endereço = localização do registro no arquivo principal
itens de tamanho fixo → páginas com no. fixo de itens
17
Estrutura Lógica de um Nó
chave
de endereço
busca
< chave 1 > chave 1 > chave 2 > chave q-1 > chave q
< chave 2 < chave 3 < chave q
18
9
Características
Ordem:
No. máx. de ponteiros que podem ser armazenados em um nó
Exemplo: árvore B de ordem 8
máximo de 7 chaves e 8 ponteiros
* A * B *C *D *E * F *G *
Observações
no. máx. de ponteiros = no. máx. de descendentes de um nó
nós folhas não possuem filhos, e seus ponteiros são nulos
19
* A * B * C * * E * G * * * I * J * * * L * M * *
20
10
Exemplo de Árvore B (ordem 4)
D H K
* A * B * C * * E * G * * * I * J * * * L * M * *
Ponteiros:
Em nós folha: sempre nulos (*)
Em nós internos: localização do nó descendente ou nulo (*) se este não existe
21
Inserção de Itens
Característica:
sempre realizada nos nós folha
Situações a Serem Analisadas:
árvore vazia (situação inicial)
inserção nos nós folhas
sem overflow
com overflow
com overflow no nó raiz
22
11
Inserção: Situação Inicial
Criação e Preenchimento do 1º Nó:
1ª chave (árvore vazia): criação do nó raiz
demais chaves: inserção até capacidade do nó
raiz como nó folha
Exemplo:
nó com capacidade para 7 chaves
chaves: letras do alfabeto
23
* A * B *C *D *E * F *G *
24
12
Inserção: Overflow Na Raiz
Passo 1 – Particionamento do Nó (Split)
nó original → nó original + novo nó
split “1-to-2” ou “two-way”
Exemplo: Inserção de J
* A * B *C *D * * * * * E * F *G * J * * * *
25
* * * * * *
* * * * * * * * * * * * * * * *
26
13
Inserção: Overflow Na Raiz
Passo 3 – Promoção de Chave
primeira chave do novo nó resultante do
split é promovida para o nó raiz
Exemplo:
E * * * * * *
* A * B *C *D * * * * * F *G * J * * * * *
27
28
14
Inserção: Nós Folhas
Inserção em Nó com Espaço (Exemplo):
Inserção da chave H
Antes e Depois: E * * * * * *
* A * B *C * D * * * * * F *G * J * * * * *
E * * * * * *
* A * B *C * D * * * * * F *G * H * J * * * * 29
15
Exemplo
Insira as seguintes chaves em um árvore B:
CSDTAMPIBWNGURKEHOLJYQZFXV
Ordem da árvore B: 4
em cada nó (página)
número de chaves: 3
número de ponteiros: 4
31
C S D T A M ...
1 – Inserção de C, S, D
criação do nó raiz
C
C S
C D S
0
C D S
-1 -1 -1 -1
32
16
C S D T A M ...
2 – Inserção de T
nó raiz cheio
• split do nó
• criação de uma nova raiz
2 • promoção de S
S
0 1
C D T
S T
33
C S D T A M ...
3 – Inserção de A
nó folha com espaço
2
S
0 1
A C D T
34
17
C S D T A M ...
4 – Inserção de M
nó folha 0 cheio
• split do nó
• promoção de D
2 S
D S
0 3 1
A C M T
D M
35
... P I B W N G U R K ...
5 – Inserção de P, I, B, W
nós folhas com espaço
2
D S
0 3 1
A B C I M P T W
A C M T
M P
36
18
... P I B W N G U R K ...
6 – Inserção de N
nó folha 3 cheio
• split do nó
• promoção de N
2 D S
D N S
0 3 4 1
A B C I M P T W
I M P N P
37
... G U R K ...
7 – Inserção de G, U, R
nós folhas com espaço
2
D N S
0 3 4 1
A B C G I M P R T U W
I M P T W
38
19
... G U R K ... • split do nó 3
• promoção de K
• split do nó 2
8 – Inserção de K • criação de uma nova raiz
7 • promoção de N
nó folha 3 cheio
N
2 D N S 6 N S
D K S
0 3 5 4 1
A B C G I M P R T U W
G I M K M
39
... E H O L J Y Q Z F X V
Exercício:
Finalizar a construção da árvore...
40
20
Exercícios
41
Exercícios
42
21
Bibliografia
M. J. Folk and B. Zoellick, File Structures: A
Conceptual Toolkit, Addison Wesley, 1987.
43
44
22