You are on page 1of 14

rvores B

Livro: Estruturas de dados e seus algoritmos (pg: 160 170) Autor: Jayme Luiz Szwarcfiter Seja d um nmero natural. Uma rvore B de ordem d uma rvore ordenada que vazia, ou que satisfaz as seguintes condies:

1) 2) 3) 4)

A raiz uma folha ou tem no mnimo 2 filhos; Cada n diferente da raiz e das folhas possui no mnimo (d + 1) filhos; Cada n tem no mximo (2d + 1) filhos; Todas as folhas esto no mesmo nvel.

Obs: Uma rvore 2-3 uma rvore B de ordem 1.

Um n de uma rvore B chamado PGINA e armazena m chaves.


a) Uma pgina no folha tem (m + 1) filhos: raiz - 1 m 2d outras - d m 2d b) Em cada pgina P as chaves esto ordenadas s1 s2 ... sm e contm (m + 1) ponteiros p0, p1, ..., pm para os filhos de P (nas folhas estes ponteiros so NULL).
p0 s1 p1 s2 p2

...

sm pm

para qualquer chave y da pgina apontada por p0, , y < s1 Para qualquer chave y da pgina apontada por pk, 1 k (m 1), sk < y < s(k + 1)
Para qualquer chave y da pgina apontada por pm, y > sm

rvores B armazenamento de grandes tabelas (ler pgina 162 Jayme) Limites quanto ao nmero de pginas e elementos Nmero mnimo de pginas: ocorre quando a rvore possui uma pgina-raiz seguida do nmero mnimo de pginas para cada nvel que se segue. Nmero mximo de pginas: todas as pginas apontam para (2d + 1) pginas (filhos). Cotas extremas para a altura: log 2d + 1(n + 1) h 1 + log d + 1 (n + 1 / 2)

Busca em rvores B : exemplo pag. 164

Insero em rvores B
Passo 1: executar o procedimento de Busca Passo 2: Se (chave j existe) ento Insero Invlida Passo 3: seno inserir a chave na folha adequada

Problema: A folha j possua 2d chaves, com a insero obtemos 2d + 1 chaves (IMPOSSVEL POR DEFINIO)

Soluo: Ciso de pgina

Seja P a pgina onde feita uma insero, resultando em (2d + 1) chaves armazenadas.

Disposio em P (apontada por pt)

p0, (s1,p1),(s2,p2),...,(sd,pd),(sd+1,pd+1),..., ...(s2d+1),p2d+1)


1. Em P permanecem d chaves 2. Criamos uma nova pgina Q apontada por pt1, a qual armazenar tambm d chaves pd+1,(sd+2,pd+2),...,(s2d+1,p2d+1) 3. Acrescentamos no n W, pai de P, a entrada (sd+1,pt1), na ordem adequada.

Situao Possvel: W tambm pode ultrapassar o limite de chaves. Soluo: Propagar a Ciso at a raiz.

Insero em rvores B
1. Aplicar o procedimento de Busca, verificando a validade da insero.

2. Se a insero vlida, incluir a chave na folha F adequada.


3. Verificar se a pgina F necessita de ciso. Em caso positivo, propagar a ciso bottom-up enquanto necessrio. Ver exemplo: pgina 166 de Szwarcfiter. Ver applet na pgina: http://slady.cz/java/bt/

Remoo em rvores B
Seja x a chave a ser removida. Temos 2 casos para considerar: 1. x se encontra em uma folha. Soluo: a entrada simplesmente retirada; 2. x no se encontra em uma folha Soluo: x substituda pelo sucessor (que tambm folha) (Logo, a anlise da remoo pode se restringir ao caso em que esta operao realizada em uma folha.)

Lembrando: Os limites quanto ao nmero de chaves na pgina so: raiz: 1 m 2d outras: d m 2d Problemas na remoo Quando a chave retirada, podemos ter (m < d). Existem dois tratamentos - Concatenao e - Redistribuio.

Operao de Concatenao
Pr-condio: Duas pginas podem ser concatenadas se so irms adjacentes e juntas possuem menos de 2d chaves.

Def.: Duas pginas P e Q so chamadas irms adjacentes se tm o mesmo pai W e so apontadas por 2 ponteiros adjacentes em W.

Resultado da Concatenao:

1. Agrupa a entrada das 2 pginas P e Q em uma apenas P; 2. Em W (pai) deixa de existir 1 entrada, exatamente aquela que existe entre os ponteiros adjacentes; 3. Esta chave passa a fazer parte da nova pgina concatenada P e seu ponteiro desaparece, visto que a pgina Q devolvida; 4. Como uma chave foi retirada em W, esta pgina poder ter menos do que d chaves e a concatenao propagada (para cima).

Acompanhe a operao.... Antes da concatenao Pgina W: ...(yj-1,pt),(yj,pt1),(yj+1,pj+1),... Pgina P: p0,(s1,p1),...,(sk,pk) Pgina Q: po,(s1,p1),...,(sm,pm) onde k + m < 2d

* Depois da concatenao Pgina W: ...(yj-1,pt),(yj+1,pj+1),... Pgina P: p0,(s1,p1),...,(sk,pk),(yj,po), ,(s1,p1),...,(sm,pm) ATENO: Concatenao propagvel (para cima), pois W tem menos chaves agora.

Operao de Redistribuio
Fato: P e Q possuem em conjunto 2d ou mais chaves.
Ao: 1. Concatenao de P e Q (P fica grande demais) 2. Efetua-se uma ciso (use a pgina Q)

ATENO: Redistribuio no propagvel, pois W (pai) mantm o mesmo nmero de chaves.

Algoritmo Remoo (x)

Passo 1: Aplicar o procedimento de Busca, verificando a existncia da chave x na rvore. Seja P a pgina onde se encontra a chave. Passo 2: Se P uma folha, retirar a entrada correspondente a chave x. Caso contrrio, buscar o sucessor. Seja z essa chave, e F a pgina onde z se encontra. Substitua a chave x por z. Fazer P = F.
Passo 3: Verificar se P contm d entradas. Caso contrrio, executar a operao de concatenao ou redistribuio.

LINK PARA APPLET: http://www.geocities.com/SiliconValley/Program/2864/File/btree.html

You might also like