You are on page 1of 45

rvores B

Prof. Flvio Humberto Cabral Nunes

Contedo
1.
2.
3.
4.
5.
6.

Introduo
Busca
Insero
Remoo
B*
B+
Captulo: 8 (APOSTILA).

Introduo
Em muitas aplicaes, a tabela considerada
muito grande

As chaves no podem ser mantidas todas na


memria principal

Assim, a tabela precisa ser mantida em


memria secundria

Alto custo de acesso

Introduo
Necessidade de uma estrutura que minimize
o tempo de acesso na tabela para

Buscas
Inseres
Remoes

rvores B
As rvores B permitem manter mais de uma
chave em cada n da estrutura
Proporciona uma organizao de ponteiros
de forma que as operaes so executadas
rapidamente
Sua construo assegura que todas as
folhas se encontram no mesmo nvel, no
importando a ordem de entrada dos dados

rvores B
Largamente utilizadas como forma de
armazenamento em memria secundria
Diversos sistemas comerciais de banco de
dados utilizam rvores B

Definio
Todo n x tem os seguintes campos

n[x]: nmero de chaves atualmente


armazenadas no n x
N[x] chaves de modo que chave1 chave2 ...
chaven[x]
folha[x]: booleano indicando se o n x folha
ou no

Definio
Cada n interno contm n[x] + 1 ponteiros
c1[x], c2[x], ..., cn[x]+1[x] para seus filhos
Ns folhas no tm filhos

Campos ci so indefinidos

As chaves chavei[x] separam os intervalos


de chaves armazenadas em cada sub-rvore

Se ki qualquer chave na sub-rvore


k1 chave1[x] k2 chave2[x] ... chaven[x][x]
kn[x]+1

Definio
Toda folha tem a mesma altura
O nmero de chaves em cada n limitado

Mnimo: m chaves
Mximo: 2m chaves
m 2, exceto para raz onde m pode ser 1

Representao de Uma Pgina


Nmero de chaves

n p1 k1 dados r1 p2 k2 dados r2 . . . p2m k2m dados r2m p2m+1

k1 dados

k2 dados

k2m dados

Representao Simplificada

k1
p1

k2
p2

.....
p3

k2m

p2m

P2m + 1

Exemplo
22 58

30 36

9 17

4 8

12 13

18

25 27

32

70

40

60 61

72

Busca
Buscar uma chave x em uma rvore B
Semelhante ao utilizado para rvore binria
de busca
O mesmo caminhamento realizado

Acrescenta-se testes relativos s chaves


existentes de cada pgina
Pesquisa sequencial ou binria dentro de uma
pgina

Busca - Exemplo
22 58

30 36

9 17

4 8

12 13

18

25 27

32

70

40

60 61

72

Insero
Adicionar uma nova chave x a uma rvore B
Primeiro feito uma busca

Se a chave j existir, ela no pode ser includa


novamente
Se no existir e houver espao suficiente na
folha, basta adicion-la garantindo que estejam
ordenadas

Insero
Caso a chave no exista e no exista
espao suficiente na folha

A folha dividida em duas folhas


A chave do meio promovida para a pgina pai
Se no houver espao na pgina pai, o processo
repetido para esse n

Insero Exemplo
rvore B de ordem 2 (m = 2)
Inserir registro 14
10

3489

16 20 25 29

Insero Exemplo
rvore B de ordem 2 (m = 2)
Inserir registro 14
10

3489

Pgina excedeu o limite.


Limite = 2m = 4

14 16 20 25 29

Insero Exemplo
rvore B de ordem 2 (m = 2)
Inserir registro 14
10

3489

14 16 20 25 29

Insero Exemplo
rvore B de ordem 2 (m = 2)
Inserir registro 14
10
20
3489

14 16

25 29

Insero Exemplo
rvore B de ordem 2 (m = 2)
Inserir registro 14
10 20

3489

14 16

25 29

Insero
No pior caso, o processo de diviso pode
propagar-se at a raiz da rvore.
Neste caso, a rvore aumenta sua altura de
um nvel
Uma rvore B somente aumenta sua altura
com a diviso da raiz

Remoo
Consiste em retirar uma chave da rvore
Quando a pgina que contm o registro a
ser retirado uma pgina folha, a operao
simples

Remoo
rvore B de ordem 2 (m = 2)
Remover chave 8
10 20

3489

14 16

25 29

Remoo
rvore B de ordem 2 (m = 2)
Remover chave 8
10 20

3489

14 16

25 29

Remoo
rvore B de ordem 2 (m = 2)
Remover chave 8
10 20

349

14 16

25 29

Remoo
No caso de no ser uma pgina folha, o
registro a ser retirado deve ser o primeiro
substitudo por um registro contendo uma
chave adjacente

Igual remoo em rvores binrias

Depois necessrio verificar se pelo menos


m registros passam a ocupar a pgina

Menos de m registros viola a propriedade da


rvore B

Remoo
A anlise da remoo pode ento se
restringir ao caso em que esta operao
realizada em uma folha
Quando a chave retirada, o nmero de
chaves da pgina pode resultar menor que
m (ordem da rvore)
Existem dois tratamentos:

Concatenao
Redistribuio

Concatenao
Duas pginas P e Q so chamadas de
irmos adjacentes se tm o mesmo pai W e
so apontadas por dois ponteiros adjacentes
em W e juntas possuem menos de 2m
chaves

Concatenao
Concatenao agrupa as entradas das duas
pginas em uma s
Para isso, no n pai W deixa de existir uma
entrada

Justamente a da chave que se encontra entre os


ponteiros para os irmos P e Q

Esta chave passa a fazer parte do novo n


concatenado e seu ponteiro desaparece

Concatenao
Como a soma do nmero de chaves de P e
Q menor do que 2m, o novo n tem, no
mximo, 2m chaves

Concatenao
Remover a chave 12
9 22

47

12 16

23 24 28 29

Concatenao
Remover a chave 12
9 22

47

16

23 24 28 29

Concatenao
Remover a chave 12
9 22

47

16

23 24 28 29

Concatenao
Remover a chave 12
22

4 7 9 16

23 24 28 29

Redistribuio
Se a pgina P e seu irmo adjacente Q
possuem em conjunto 2m ou mais chaves,
estas podem ser equilibradamente
distribudas

Concatena-se P e Q resultando em uma pgina P


grande demais
Faz se a ciso da pgina

Redistribuio
No propagvel
A pgina W, pai de P e Q, modificada, mas
seu nmero de chaves permanece o mesmo.

Redistribuio
Remover a chave 7
22

47

24 28 29

Redistribuio
Remover a chave 7
22

24 28 29

Redistribuio
Remover a chave 7

4 22 24 28 29

Limite excedido
2m = 4 < 5

Redistribuio
Remover a chave 7

4 22 24 28 29

Redistribuio
Remover a chave 7
24

4 22

28 29

Exemplo
Remover: 45, 30, 28, 50, 8, 10, 4, 20, 40, 55, 17, 33, 11, 36, 3 e 52.
m=2
30

10 20

3489

11 13 17

40 50

25 28

33 36

43 45 48

52 55

Exerccio 1
Crie uma rvore B de ordem 2 e insira as
chaves: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 25, 24, 23,
22, 21, 20, 19 , 18, 17, 16, 15, 14, 11, 12, 13,
14. Mostre os ajustes de balanceamento.

Exerccio 2
Dada a rvore B de ordem 2, execute as
seguinte operaes: a) remova C; b) remova B;
c) insira B e G; d) remova X; e) insira Q e U.
FPV

ACD

JK

RST

XZ

You might also like