Você está na página 1de 5

rvores B: Histria, Aplicaes e Implementao

Leandro J. Mendes, Hiplito Douglas F. Moreira, Luiz F. Nunes

leandrojuvenciomendes@gmail.com, hipolitodouglas@gmail.com, luizfernandolfn@gmail.com

Resumo
Este artigo visa a explicao terica do algoritmo da rvore B, que

Abstract
djfinrvaivnen

Introduo

A rvore B (B-Tree) foi criada para melhorar o desempenho da busca em banco de dados muito grandes e de memrias secundarias como o disco rgido por exemplo, onde a busca feita de modo mecnico atrasando o processo. Elas tm a finalidade de trazer vrias chaves de uma vez para a memria principal, tornando assim, a busca final muito mais rpida com poucos acessos memria secundaria. 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.

Definies

Uma rvore B de ordem "m" (mximo de filhos para cada n) uma rvore que atende as seguintes propriedades: 1. Cada n tem no mximo "m" filhos 2. Cada n (exceto a raiz e as folhas) tem pelo menos "m/2" filhos 3. A raiz tem pelo menos dois filhos se a mesma no for uma folha 4. Todas as folhas aparecem no mesmo nvel e no carregam informao 5. Um n no-folha com "k" filhos deve ter k-1 chaves As rvores B so rvores balanceadas projetadas para trabalhar com dispositivos de armazenamento secundrio como discos magnticos. Elas visam otimizar as operaes de entrada e sada nos dispositivos. O tempo de acesso s informaes em um disco prejudicado principalmente pelo tempo de posicionamento do brao de leitura. Uma vez que o brao esteja posicionado no local correto, a leitura pode ser feita de forma bastante rpida. Desta forma, devemos minimizar o nmero de acessos ao disco. 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. Diferente das rvores binrias, cada n em uma rvore B pode ter muitos filhos, isto , o grau de um n pode ser muito grande.

Aplicao

So utilizadas na maioria dos casos, para otimizar o acesso ao armazenamento secundrio. Por exemplo, a forma de estrutura de um disco rgido em Arvore B, sendo assim, ao fim de uma busca entregue uma informao com vrias chaves para a memria RAM, onde essas chaves podero ser utilizadas de outras maneiras e no ser necessrio acessar o disco varias vezes. Os Bancos de dados MySQL e Oracle com grandes quantidades de informao armazenada, tambm costumam fazer o uso desta estrutura para subdividir o acesso as informaes em grupos, assim tornando os processos de busca e insero mais rpidos. 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.

Implementao
#ifndef ARVORE_B

#define ARVORE_B #include<stdlib.h> #include<stdio.h> const int t = 2; typedef struct noArvB{ int nrChaves; int chaves[3]; struct noArvB* filhos[4]; bool folha; }arvB; arvB* criaNoArvB(arvB* a); void split(arvB* raiz, arvB* filho, int i); void insereArvB(arvB** no, int chave); void nonfull(arvB* x, int k); arvB* buscaArvB(arvB* x, int k); void imprimeArvB(arvB* x); arvB* precedente(arvB* raiz, int chave); arvB* sucessor(arvB* raiz, int chave); int chavePredecessora(); void removeValorArvB(arvB* x, int chave); #endif

Referncias
https://www.cs.tcd.ie/Jeremy.Jones/vivio/trees/B-tree.htm Graa Pimentel e Maria Cristina (2003) Arvores B, Departamento de Computao e Estatstica So Carlos. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest Algoritmos, Traduo da Segunda Edio Americana, Editora Campus, 2 edio.

O trabalho ser composto trs partes: 1. Textual, em estilo de artigo. Usem o template da SBC.O artigo dever conter

1. Introduo: Origem, quem criou ... 2. Definies: definio de rvores B e outros termos relacionados 3. Aplicao: onde so aplicadas, quais sistemas de arquivos e banco de dados as utilizam 4. Implementao: demonstrar cada funo implementada. 2. Implementao, das seguintes funes 1. Insero 2. Busca 3. Remoo 4. Impresso 3. Apresentao em sala de aula