Estrutura de Dados 2
Grupo:
Andrei Figueiredo, Andressa Oliveira, Bianca Albuquerque, Bruno Ferreira, Fellipe Pimentel,
Fernanda Oliveira, Flvio Wildner, Mayara Marques, Reinaldo Moraes.
ndice
1. Introduo
2. Histrico (quem e quando criou)
3. Estrutura da rvore sendo apresentada
4. Diferenas em relao rvore B
5. Algoritmo de busca
6. Algoritmo de insero
7. Algoritmo de excluso
8. Dicas de implementao
9. Quando utilizar
10. Referncias
Introduo
O presente trabalho sobre o estudo da rvore B+. Este projeto visa introduzir o
assunto, contextualizando a parte de sua histria, as diferenas em relao
rvore B e mostrando sua estrutura bsica, assim alcanando o objetivo de inferir o
conhecimento sobre a rvore B+.
A rvore B+ uma estrutura de dados derivada das rvores B, mas com uma forma
diferente de armazenamento de suas chaves, assim modificando tambm os
algoritmos de insero, busca e remoo de chaves. Essa estrutura muito
empregada em banco de dados e sistemas de arquivos pois visam reduzir as
operaes de leitura e escrita em memria secundria, uma vez que, essas
operaes so demoradas para um sistema computacional.
Atravs dessa estrutura foi possvel organizar um arquivo de modo que o
processamento sequencial e aleatrio de chaves fossem eficientes.
A maneira de obter essa organizao atravs da rvore B+ mantendo todas as
chaves de busca em seus ns folha de maneira que o acesso sequencial ordenado
das chaves de busca seja um processo mais eficiente.
O trabalho est organizado de forma que ser possvel adquirir o conhecimento
sobre essa estrutura com o propsito de utiliz-la da melhor forma possvel. Desta
maneira prosseguindo no projeto mostrando os algoritmos de busca, insero e
excluso da rvore B+, finalizando-o informando algumas dicas de implementao,
e em quais casos necessria sua utilizao e como faz-la.
Histria
A histria sobre o surgimento da rvore B+ no muito clara, pois no h um
consenso grande sobre quem realmente a criou e onde ela surgiu.
Em algumas pesquisas encontra-se fontes que afirmam que a rvore B+
aparentemente foi proposta por Donald Ervin Knuth e grande parte da
documentao sobre essa estrutura encontrada em forma de artigos ao invs de
livros.
Porm outras fontes que fazem referncia rvore B+, fazem essa referncia
atravs de uma vinculao com a rvore B. Onde dizem que a rvore B foi descrita
pela primeira vez no jornal Organizao e Manuteno de ndices Ordenados
grandes. Acta Informatica 1: 173-189 (1972) por Rudolf Bayer e Edward M.
McCreight, contudo a introduo do conceito da rvore B+ no feita de maneira
incisiva neste documento, em vez disso, a noo de manter todos os dados em ns
folha, que a estrutura conhecida hoje como rvore B+, levantada como uma
variante da rvore B, mas no especificada como uma estrutura independente.
Uma pesquisa inicial de rvores B, abrangendo tambm rvores B+ de Douglas
Comer: "The Ubiquitous B-Tree", ACM Computing Surveys. No qual ele observa que
a rvore B+ foi utilizada em um software de acesso a dados da IBM, afirmando esta
suposio baseado em um artigo que a IBM publicou em 1973.
A rvore B+ surgiu devido ao fato de existir uma certa deficincia na rvore B, no
que diz respeito ao alto custo de acesso ao disco para percorrer esta estrutura
sequencialmente quando os dados esto distribudos em pginas (blocos)
diferentes da memria.
Na rvore B+ todas as chaves so mantidas em ns folhas, e algumas chaves so
repetidas em ns no-folha para definir os caminhos para a localizao dos
registros individuais, j que na rvore B+ os dados s so encontrados nos ns
folhas.
As folhas so ligadas atravs de uma lista duplamente encadeada, de modo a
oferecer um caminho sequencial para percorrer as chaves na rvore.
Podemos citar algumas vantagens dessa estrutura de dados, como o aumento da
eficincia da localizao do prximo registro na rvore, que cai de O(log2N) em
rvore B para O(1) em rvore B+, outro benefcio que no necessrio manter
nenhum ponteiro de registro em ns no-folha e alm disso nesta estrutura
qualquer caminho da raiz para qualquer umas das folhas possui comprimento igual.
Pginas internas
As pginas internas apresentam apenas referncias para a localizao das chaves
de busca contidas nas pginas folha. Estas pginas incluem a pgina raiz da rvore
e todos os nodos internos (exceto as pginas folha). Ou seja, as pginas internas
funcionam como um ndice que apenas apontam para a localizao exata de uma
chave e sua construo semelhante ao de uma rvore B com nmero mnimo de
chaves igual a n/2-1 e mximo de n-1 por pgina.
Pginas folha
Nas pginas folha esto abrigadas todas as chaves inseridas e durante o processo
de insero e remoo de chaves estas podem sofrer overflows ou underflows
conforme estas violem o nmero mximo igual a d ou mnimo igual a d/2
permitido de chaves.
Algoritmo de Busca
Semelhante ao realizado na rvore B, o algoritmo de busca em uma rvore B+,
percorre a rvore da raiz at uma pgina folha. A pesquisa no para se a chave
procurada for encontrada em uma pgina ndice, pois todos os registros esto
guardados apenas em pginas folhas. Caso a chave encontrada pertena uma
pgina ndice, a busca segue pelo apontador direita at que uma pgina folha
seja encontrada.
De maneira recursiva, uma chave C comparada com a primeira chave da raiz. Caso
ela seja menor, chamada recursivamente a mesma funo para o n do filho mais
esquerda. Caso contrrio, compara com as chaves seguintes at encontrar uma
que seja maior ou, caso no encontre, buscar o filho mais direita recursivamente
at encontrar a chave em uma folha, encontrar uma chave maior ou ser maior que
as demais chaves folha(caso a chave no seja encontrada).
Dessa forma quando buscamos uma chave k, percorremos a rvore de cima para
baixo carregando as pginas internas e selecionando a pgina apontada pelo
ponteiro correspondente ao intervalo no qual pertence k. Caso uma cpia de k
esteja numa pgina interna, devemos carregar a pgina direita de k. Ao encontrar
uma pgina folha, o algoritmo deve buscar k nesta e responder se ela se encontra
ou no.
Fonte: http://homepages.dcc.ufmg.br/~rainerpc/cursos/pa/aulas/10arvoresb+.pdf
Algoritmo de Insero
A insero em uma rvore B+ feita somente em suas folhas, anlogo ao que
acontece na rvore B. Deve-se respeitar o nmero mnimo (m/2) e mximo(m) de
filhos em cada pgina. Caso o nmero de elementos da pgina seja igual a m,
operao de ciso deve ser feita.
Para se inserir um elemento em uma arvore B+ de ordem m, os seguintes passos
devem ser realizados:
Localizar a folha em que o elemento deve ser inserido.
Localizar a posio de insero dentro da folha.
Inserir o elemento.
Se aps inserir o elemento a folha estiver completa, realiza-se a ciso.
Inserindo o elemento 1
Inserindo o elemento 2
Inserindo o elemento 3
Inserindo o elemento 4
Inserindo elemento 5
Feito
a
ciso,
a
capacidade
da
pgina raiz tambm extrapolada. O processo de ciso deve ser efetuado,
resultando configurao abaixo.
Inserindo o elemento 6
Inserindo o elemento 7
Remoo
Um elemento s pode ser removido de uma pgina folha, entretanto algumas
verificaes so necessrias na hora da excluso. Seja m a ordem de uma rvore B+.
O nmero de filhos que cada pgina pode ter no mnimo (m/2) filhos e no
mximo m filhos. Isso significa que a quantidade mnima e mxima de elementos
em cada pgina (m/2)-1 e m-1 respectivamente.
Caso 1
Seja n a quantidade de elementos de uma pgina folha. Aps a retirada do
elemento desta pgina: n > (m/2)-1. Este o caso mais simples, nenhuma
modificao estrutural da rvore precisar ser feita. Vejamos um exemplo de
rvore que possui m = 5 como ilustrado na f igura 1.
Caso 2
Aps a retirada do elemento da pgina folha: n < (m/2)-1. Neste caso, h 2
possibilidades de modificao para manter a organizao da rvore. So elas: a
redistribuio e concatenao.
Redistribuio
Sejam pginas irms p1 e p2, retira-se um elemento de p1 tal que n1 < (m/2)-1; n2 >
(m-1)/2.
Concatenao
A concatenao realizada quando no h possibilidade de redistribuio entre
pginas adjacentes irms e no irms. A concatenao propagvel e, quando
atinge a raiz, a rvore diminui sua altura. Sejam p1 e p2 pginas irms adjacentes.
Ao remover um elemento de p1, n1 < (m/2)-1.
-
Dicas de Implementao
1. Utilize sempre as melhores tcnicas de balanceamento para manter todas as
folhas no mesmo nvel.
2. Tenha certeza que cada n possui pelo menos da metade das chaves.
3. A Altura da sua rvore, sempre estar por volta de log (n)/log (k/2), onde N
o nmero de valores da rvore e K o nmero mximo de chaves para cada
bloco.
4. Um Algoritmo de busca da raiz at suas folhas funciona de forma mais
eficiente do que um algoritmo especfico para suas folhas.
5. Todo caminho da raiz at uma folha X, deve ter o mesmo tamanho, citado no
tpico 3.
Referncias
https://prezi.com/s0oi7_7da1o6/arvores-b/
http://othonbatista.com/arquivos/unifacs/estrutura-dados-2/aulas/aula-arvore-b+.pdf
http://othonbatista.com/arquivos/unifacs/estrutura-dados-2/aulas/aula-arvore-b+.pdf
http://homepages.dcc.ufmg.br/~rainerpc/cursos/pa/aulas/10arvoresb+.pdf
http://www.inf.ufrgs.br/~irmmenezes/lib/exe/fetch.php?media=user:trabalho_final_cpd.pdf
http://www.univasf.edu.br/~marcelo.linder/arquivos_aed2/aulas/aula6.pdf
http://www.univasf.edu.br/~marcelo.linder/arquivos_aed2/aulas/aula7.pdf
https://www.youtube.com/watch?v=CYKRMz8yzVU - B+ Tree Basics 1
http://www.ufjf.br/jairo_souza/files/2009/12/5-Indexa%C3%A7%C3%A3o-Arvore_B.pdf
https://en.wikipedia.org/wiki/B%2B_tree#History
https://pt.wikipedia.org/wiki/%C3%81rvore_B%2B
https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html