Você está na página 1de 5

rvore B

Exemplo de rvore B

Em computao, rvore B ou B-Tree uma estrutura de dados pertencente ao grupo das rvores, e muito utilizada em banco de dados e em sistemas de arquivos. Para inserir ou remover variveis de um n, a quantidade de descendentes no n no poder ultrapassar sua ordem e nem ser menor que sua ordem dividida por dois (fator de preenchimento). rvores B no precisam ser rebalanceadas como so freqentemente as rvores de busca binria com rvore AVL. rvores B tm vantagens substanciais em relao a outros tipos de implementaes quanto ao tempo de acesso e pesquisa aos ns. O criador das rvores B, Rudolf Bayer, no definiu claramente de onde veio o B das rvores B. Ao que parece, o B vem de balanceamento onde todos os ns folhas da rvore esto em um mesmo nvel. Tambm possvel que o B tenha vindo de seu sobrenome Bayer, ou ainda do nome da empresa onde trabalhava, a Boeing Scientific Research Labs.

Definio
Uma rvore B de ordem "m" uma rvore que atende as seguintes propriedades: 1. Cada n tem no mximo "m" filhos 2. Cada n (exceto a raz e as folhas) tem pelo menos "m/2" filhos 3. A raiz tem pelo menos dois filhos se ela mesma no for uma folha 4. Todas as folhas aparecem no mesmo nvel e carregam informao 5. Um n no-folha com "k" filhos deve ter k-1 chaves

Estrutura do n
Ns em rvores B, tambm denominado pginas, geralmente so representados por um conjunto de elementos apontando para seus filhos, estes que por sua vez tambm podem ser conhecidos como folhas. Alguns autores consideram a ordem de uma rvore B como sendo a quantidade de registros que a pgina pode suportar. Outros consideram a ordem como a quantidade de campos apontadores. Todo n da rvore tem um nmero mnimo de elementos, que dado pela metade do valor da ordem do n, truncando o nmero caso a rvore seja de ordem mpar, exceto para a raiz da rvore, que pode ter o mnimo de um registro. Por exemplo, os ns de uma rvore de ordem 5, devem ter, no mnimo 5 / 2 = 2,5 registros, ou seja, dois registros. A quantidade de filhos que um n pode ter sempre a quantidade de registros do n mais 1

(V+1). Por exemplo, se um n tem 4 registros, este n ter obrigatoriamente 5 apontamentos para os ns filhos. Exemplo de estrutura em C: #define M 5 //ordem da arvore struct No{ int n; char chave[M-1]; struct No *pProx[M]; };

Algoritmos
Insero

Iteraes da insero de valores em uma rvore B.

1. Primeiro pesquise a chave, para ter a certeza de que esta no existe na rvore. 2. Depois, busque a posio onde esta ser inserida. Teste para ver se o n est cheio. 3. Se n estiver vazio, insira o valor dentro dele, seno execute uma subdiviso do n da seguinte forma: 1. Verifique se o n-pai est vazio, se sim execute 1. Passe o elemento do meio do n para seu pai. 2. Divida o n em dois ns iguais.

2. Se o n pai estiver cheio, repita as duas linhas acima recursivamente.(Caso todos os nspai estiverem cheios, inclusive a raiz, deve ser criada uma nova raiz aumentando assim a altura da rvore. 3. Somente aps satisfazer todas divises necessrias, insira nova chave.

Excluso
1. Primeiro pesquise a chave para ter a certeza de que esta existe na rvore. 2. Se existir, verifique se est em folha, e faa a excluso. 3. Se existir e no estiver em folha, substitua esta chave pela menor chave do filho a direita. 1. Se o nmero de chave no n, for maior do que (Ordem/2 - 1), ento termine a rotina. 2. Seno redistribua as chaves entre os ns vizinhos.

Busca
1. Indique a chave que ser procurada. 2. Pesquise desde a raiz at encontr-la, e ento retorne o n e a posio desta.

3. Se a chave no for encontrada, continue o lao at encontrar um nil das folhas .

Vantagens
1. Melhor desempenho por ter um nmero menor de ns do que uma rvore binria, por exemplo. Menos ns, significa menos altura que resulta em menos acessos ao disco. 2. Por garantir poucos ponteiros entre os ns, h uma economia de espao. 3. Maior rapidez em buscas pela utilizao de chaves primrias. 4. Sua estrutura dinmica, ajustando automaticamente o balanceamento da rvore, a cada incluso/excluso. 5. Permite um tempo de acesso de dados menor, em uma busca aleatria, por causa de suas ramificaes.

Desvantagens
1. N no folha com n chaves, visitado n vezes, portanto o processo de busca s vezes pode se tornar lento. 2. As rvores B+ sempre mantm uma cpia de todos os dados nas folhas, o que em caso de necessidade de imprimir toda ela, por exemplo, permite uma rpida busca linear, fazendo com que a rvore B, em comparao, tenha menor performance.

Comparaes com outras Estruturas de Dados


Insero: Mais veloz se comparado tabelas de hash, por sua capacidade de se ajustar e balancear a cada insero, isto significa menores colises, e consequentemente menos laos para encontrar uma

posio livre. No caso de precisar expandir, a duplicao feita somente na folha, e nos ns correspondentes se necessrio, o que garante menor espao vazio alocado e menos ocupao em disco, ao contrrio do hash que duplica a tabela por inteiro. Excluso: No caso de uma excluso, Arvores B so capazes de evitar grandes fragmentaes, pois se ajustam e balanceiam tambm nesse momento. J em tabelas de hash, quando h excluso de uma chave, o espao alocado para esta fica vazio, porm ainda alocado. Maior fragmentao significa menor desempenho. Busca: rvores B so to boas e velozes quanto tabelas de hash numa busca por igualdade, porm so muito superiores em velocidade e desempenho em buscas do tipo range. A superioridade da rvore B, se basea na chave primria, onde a busca comea pela raiz e direcionada aos ns e filhos de acordo com a chave procurada, isto torna mais objetivo e direto o resultado final. Porm, se comparado a rvore B+, sua performance pode cair um pouco em uma busca linear. rvores do tipo B+, sempre tm uma cpia de todos os ns nas folhas, sendo assim, necessrio apenas percorre-las para se ter uma viso completa de todas as chaves da estrutura.

rvore B+
.

Um exemplo simples de uma rvore B+ a ligar as chaves 1-7 aos valores de dados d1-d7. De notar a lista ligada (a vermelho) a permitir uma actualizao ordenada rpida.

Em cincia da computao, uma rvore B+ um tipo de rvore. Representa a ordenao de dados de uma maneira que permita uma insero e remoo eficiente de elementos. um ndice dinmico de multi-nveis com ligaes mximas e mnimas no nmero de chaves em cada nodo. Os sistemas de ficheiros NTFS para o Microsoft Windows, o sistema de ficheiros ReiserFS para Unix,o XFS para IRIX e Linux, e o JFS2 para AIX, OS/2 e Linux, usam este tipo de rvore. Uma rvore B+ uma variao da rvore B. Numa rvore-B+, contrastando com uma rvore-B, todos os dados so gravados nas folhas. Os nodos internos contm apenas chaves e apontadores da rvore. Todas

as folhas esto no mesmo nvel mais baixo. Os nodos das folhas tambm esto ligados entre si como uma lista de ligaes para efectuar consultas facilmente. O nmero mximo de apontadores num registo chamado de ordem da rvore B+. O nmero mnimo de chaves por registo metade do nmero mximo de chaves. Por exemplo, se a ordem de uma rvore B+ for n+1, cada nodo (excepto o da raiz) ter de ter entre (n+1)/2 e n chaves. Se n for um nmero primo, o nmero mnimo de chaves pode ser quer (n+1)/2 ou (n-1)/2, mas ter de ser o mesmo em toda a rvore. O nmero de chaves que poder ser indexado ao usar a rvore B+ uma funo da ordem da rvore e da sua altura. Para uma rvore B+ de ordem n com uma altura h: O nmero mximo de nodos nh O nmero mnimo de chaves 2(n / 2)h 1.

A rvore B+ foi descrita pela primeira vez em "Rudolf Bayer, Edward M. McCreight: Organization and Maintenance of Large Ordered Indices. Acta Informatica 1: 173-189 (1972)". Uma extenso de uma rvore B+ chamada de rvore B# que usa a estrutura da rvore B+ e adiciona mais restries.

Você também pode gostar