Você está na página 1de 15

INSTITUTO SUPERIOR DE TRANSPORTES E COMUNICAÇÕES

Licenciatura em Engenharia Informática e de Telecomunicações


Disciplina: Algoritmos e Estruturas de Dados
CURSO: ENGENHARIA INFORMÁTICA E DE TELECOMUNICAÇÕES
TURMA: I32

Trabalho Prático 2

Árvores B+

Discentes: Crispino Menomussanga

Dody Mambuque

Edmilson Manjate

Idácio Zibia

Wagner Devete

Docente:

Dr.: Inácio Ticongolo

Maio, 2019
Árvores B+, Crispino, Dody, Edmilson,Idácio e Wagner.
ÍNDICE
RESUMO...................................................................................................................................II
CAPÍTULO 1 INTRODUÇÃO..................................................................................................3
1.1 Introdução...........................................................................................................3
1.2 Justificação do Tema.................................................................................................3
1.5 Objectivos.................................................................................................................3
1.6 Resultados Esperados................................................................................................4
2. CAPÍTULO 2 FUNDAMENTACÃO TEÓRICA..................................................................5
2.1 Fundamentação Teórica............................................................................................5
2.1.1 Páginas internas.........................................................................................6

2.1.2. Páginas folha.............................................................................................6

2.2. Funcionamento.........................................................................................................7
2.2.1. Inserção.....................................................................................................7

2.2.1.1. Página folha incompleta.........................................................................7

2.2.1.2. Página folha completa............................................................................7

2.2.2. Remoção...............................................................................................................8
2.2.3. Pesquisa.....................................................................................................9

2.3. Vantagens...............................................................................................................10
2.4. Aplicação...............................................................................................................10
2.5. Estudo comparativo com outros tipos de árvores..................................................11
2.2.1. Caracteristicas das árvores B..................................................................11

CAPITULO 3 CONCLUSÕES E RECOMENDAÇÕES...........................................................1


Conclusão........................................................................................................................1
4. BIBLIOGRAFIA....................................................................................................................2

I
RESUMO
O presente trabalho, Árvores B+, que são estruturas de dados do tipo árvores, tem como
objetivo falar das árvores B+, seu funcionamento, vantagens, aplicações, assim como fazer
um estudo comparativo com os outros tipos de arvores. Por fim, será apresentado um applet,
com as principais funcionalidades deste tipo de árvores, como forma de solidificar o conteúdo
teórico do trabalho.

II
CAPÍTULO 1 INTRODUÇÃO

1.1 Introdução

Uma árvore B+ é uma estrutura de dados do tipo árvore derivada das árvores B, mas com
uma forma diferente de armazenamento, que é o uso de suas chaves. Estas estruturas de
dados são muito empregadas em base de dados e sistemas de arquivos como o 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..

Assim como as árvores B, as árvores B+ visam reduzir as operações de leitura e escrita em


memória secundária, uma vez que, essas operações são demoradas para um sistema
computacional e devem ser minimizadas sempre que possível.

1.2 Justificação do Tema

A finalidade deste trabalho é mostrar o conceito e definição das Árvores B+ para a


organização e manutenção de arquivos, que para muitos, este tipo de árvores, ainda são
desconhecidas, e para os que já conhecem e utilizam possam desenvolver aptidões e
raciocínio com a interpretação correcta da implementação deste tipo de árvores, contribuindo
assim para a ampliação de seus conhecimentos.

1.5 Objectivos

Objectivo Geral:
O presente trabalho tem a finalidade de apresentar a estrutura de dados Árvores B+,
na organização e manutenção de dados e arquivos

Objectivos Específicos:
 Dar a conhecer a definição de Árvore B+;
 Apresentar o seu funcionamento;
 Apresentar as suas Vantagens;
 Identificar sua aplicação;
 Fazer um estudo comparativo com as outras árvores.

3
1.6 Resultados Esperados

Espera-se obter do presente trabalho, conhecimentos sólidos do conteúdo do trabalho e


do tema em causa, assim como implementar, na prática, este tipo de estrutura de dados .

4
2. CAPÍTULO 2 FUNDAMENTACÃO TEÓRICA

2.1 Fundamentação Teórica

Com árvore B+ foi possível organizar um arquivo de maneira que o processamento


sequencial (característica até então pouco eficiente para árvores B) e aleatório de chaves
fossem eficientes.

A ideia inicial desta variação da árvore B é manter todas as chaves de busca em seus nós
folha de maneira que o acesso sequencial ordenado das chaves de busca seja um processo
mais eficiente do que em árvores B. Obviamente tal acesso sequencial também é possível nas
Árvores B mas, para isso, seria necessário algum algoritmo semelhante ao percurso em
ordem realizado numa árvore binária.

Para manter o acesso sequencial, cada nó folha contém apontadores para seus predecessores
ou sucessores na sequência de chaves e como nas árvores B, as chaves estão ordenadas tanto
em suas páginas internas quanto em páginas folha. Dessa forma, quando realizamos uma
busca por uma chave k e para encontrarmos a chave k+1, ou seja sua sucessora na ordem,
basta verificar a chave ao lado de k caso k+1 esteja na mesma página de k ou carregar a
próxima página contida na lista de páginas para verificar qual chave sucede k. Tal
procedimento em árvores B, seria mais dispendioso, pois, deveríamos buscar por k+1
iniciando pela raiz da árvore caso k+1 não estivesse na mesma página de k. Em comparação
com as árvores B, este tipo de acesso sequencial às chaves é um dos principais benefícios
proporcionados pelas árvores B+.

Além desta característica, também devemos analisar suas semelhanças com as árvores B. A
organização das páginas internas ou no inglês index set é semelhante a de uma árvore B, este,
por sua vez, armazena cópias de chaves para referênciar as buscas, mas não contém as chaves
em si. Já no sequence set estão as páginas folha que contém as chaves inseridas na árvore e
funciona como uma lista encadeada permitindo o acesso sequencial ordenado às chaves
independente do index set.

Para definir uma árvore B+ devemos levar em consideração alguns aspectos relativos ao
disco de memória secundária utilizado e a quantidade de memória primária disponível.
Assim, para escolher o tamanho de uma página de sequence set e, portanto, quantas chaves

5
esta pode armazenar é uma tarefa dependente do disco utilizado: suponhamos que cada
página folha armazene d chaves.

O index set, como dito anteriormente, apenas carrega cópias de chaves para referênciar a
busca e sua construção é semelhante ao de uma árvore B. Suponhamos que estes nós internos
possam apontar para n nós filhos, ou seja, uma árvore B com no máximo n-1 chaves por
página.

Com tais suposições, diferentemente das árvores B, os números d e n-1 não são
necessariamente iguais, mas, manter o tamanho físico em arquivo dessas páginas iguais
facilita a implementação da estrutura e geralmente o melhor a se fazer é manter o tamanho
físico em arquivo de ambas as páginas iguais.

2.1.1 Páginas internas

As páginas internas apresentam apenas referências para a localização das chaves de busca
contidas nas páginas folha. Estas páginas incluem a página raiz da árvore e todos os nodos
internos (exceto as páginas folha). Ou seja, as páginas internas funcionam como um índice
que apenas apontam para a localização exata de uma chave e sua construção é semelhante ao
de uma árvore B com número mínimo de chaves igual a ⌈n/2⌉-1 e máximo de n-1 por página.

2.1.2. Páginas folha

Nas páginas folha estão abrigadas todas as chaves inseridas e durante o processo de inserção
e remoção de chaves estas podem sofrer overflows (lotação) ou underflows (défice)
considerando que estas violem o número máximo igual a d ou mínimo igual a ⌊d/2⌋ permitido
de chaves.

Fig.1. Exemplo de Árvore B+

6
2.2. Funcionamento

A árvore B+ tem três funcionalidades básicas, nomeadamente: inserção, pesquisa e remoção.

2.2.1. Inserção

Durante a inserção de chaves numa árvore B+ as páginas folha podem sofrer overflow caso


já estejam cheias. Assim, após buscar a página folha que uma chave deve ser inserida,
devemos analisar dois casos:
2.2.1.1. Página folha incompleta

Apenas inserimos a chave de maneira a manter a ordenação das chaves. Como mostra a
figura abaixo.

Figura 2: Antes e depois da inserção da chave 3 na árvore B+.

2.2.1.2. Página folha completa

A página folha em questão deve sofrer uma operação de split. Tal operação cria uma nova
página em arquivo dividindo as chaves entre a nova página e a anterior. Assim devemos
escolher uma chave intermediária da sequência formada por todas as chaves da página folha
inclusive a chave a ser inserida e distribuir essas chaves de maneira que a nova página
contenha a chave intermediária e as chaves maiores do que ela e a página anterior contenha as
chaves menores do que a chave intermediária. Após isso a chave intermediária deve ser
inserida no index set semelhante ao processo de inserção em árvores B.

7
Figura 3: Antes e depois da inserção da chave 25 na árvore B+. Aqui a chave intermediária
do processo de split é a chave 22.

2.2.2. Remoção

A operação de remoção de chaves em árvores B+ pode parecer algo complicado, mas as


mesmas técnicas empregadas em árvores B também aplicam-se aqui. A redistribuição de
chaves e concatenação de páginas são operações mais simples de compreender nessa
estrutura contanto que saibamos qual é a chave separadora de duas páginas adjacentes.
Assumindo que essa chave separadora entre duas páginas adjacentes é a menor chave da
página à direita, o index set deve conter uma cópia dessa chave supondo que nenhuma
operação de remoção foi realizada sobre a árvore.
Por exemplo, na figura 3 a chave separadora do index set das páginas folha que contém as
chaves 20 e 30 é o valor 30 que está na raíz do index set. Para as páginas folha que contém as
chaves 50 e 60, a chave separadora no index set é o valor 60 e assim por diante para as
demais páginas folha.
Portanto, conhecido a chave que separa duas páginas adjacentes, sabemos que após uma
operação de remoção pode-se ocorrer underflow em suas páginas folha e se isso ocorrer
devemos aplicar a redistribuição de chaves entre o sequence set ou concatenar o conteúdo de
páginas adjacentes.
Para cada método deste temos uma alternativa para reconstruir o index set de maneira a
mante-lo organizado adequadamente, lembrando que quando uma chave é removida e
o underflow não é constatado na página, não precisamos fazer nada como na figura 4.

8
Figura 4: Antes e depois da remoção da chave 10.

A seguir são demonstrados dois exemplos de redistribuição de chaves nas figuras 5 e 6.


Quando ocorrido o underflow na página e a possibilidade de redistribuir as chaves entre
páginas irmãs é constatada, devemos alterar o valor da chave separadora dessas páginas
adjacentes para o menor valor da página à direita resultante. Isso somente é possível porque a
página em que foi removida a chave tem uma página irmã com um número maior de chaves
do que o mínimo permitido.

Figura 5: Antes e depois da remoção da chave Figura 6:Antes e depois da remoção chave 30
chave 2.

2.2.3. Pesquisa

A operação de pesquisa sobre uma árvore B+ pode ser realizada de duas maneiras: iniciando
a busca (linear ou binária) pelo apontador para o sequence set ou pelo apontador para a raíz
da árvore. O método mais eficiente é pelo apontador para a raíz na qual é semelhante ao
realizado numa árvore B. Dessa forma quando buscamos uma chave k, percorremos a árvore
de cima para baixo carregando as páginas internas e selecionando a página apontada pelo
ponteiro correspondente ao intervalo no qual pertence k e caso uma cópia de k esteja numa
página interna devemos carregar a página à direita de k. Encontrado uma página folha o
algoritmo deve buscar k nesta e responder se ela se encontra ou não. De salientar que a
operação de pesquisa sempre leva a uma página folha.

9
Fig.7. Pesquisar por 60.

2.3. Vantagens

Sendo uma variação das árvores B, as árvores B+ tem as seguintes vantagens:


 Mantém a eficiência da busca e da inserção da árvore B;
 Aumenta a eficiência da localização do próximo registro na árvore de O(log2N) para
O(1);
 Não é necessário manter nenhum ponteiro de registro em nós não-folha.

2.4. Aplicação

As árvores B+ são geralmente usadas em base de dados e sistemas de arquivos como


o 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.

Árvores B+ são muito importantes por sua eficiência, e muito utilizadas na prática,
nomeadamente:

 Sistemas de arquivo NTFS, ReiserFS, NSS, XFS, e JFS utilizam este tipo de árvore
para indexação;
 Sistemas de Gerência de Base de Dados como IBM DB2, Informix, Microsoft SQL
Server, Oracle 8, Sybase ASE, PostgreSQL, Firebird, MySQL e SQLite suportam este
tipo de árvore para indexar tabelas;
 Outros sistemas de gerência de dados como o CouchDB, Tokyo Cabinet e Tokyo
Tyrant suportam este tipo de árvore para acesso a dados.

Assim como as árvores B, as árvores B+ visam reduzir as operações de leitura e escrita em


memória secundária, uma vez que, essas operações são demoradas para um sistema
computacional e devem ser minimizadas sempre que possível.

10
2.5. Estudo comparativo com outros tipos de árvores

Como foi dito anteriormente, as árvores B+, são uma variação das árvores B. Sendo assim
compete-nos fazer um estudo comparativo entre estas duas variantes juntamente com as
árvores B*, basendo-nos na comparação das suas características.

2.2.1. Caracteristicas das árvores B

 Índice – extremamente volumosoç

11
CAPITULO 3 CONCLUSÕES E RECOMENDAÇÕES

Conclusão

Em jeito de conclusão o grupo concluiu que a árvore B+ é semelhante à árvore B, exceto por
duas características muito importantes: armazena dados somente nas folhas – os nós internos
servem apenas de ponteiros e as folhas são encadeadas. Isso permite o armazenamento dos
dados em um arquivo, e do índice em outro arquivo separado.

Nas operações básicas da árvore B+ constatou-se que:

- Para a busca é concluída quando se a tem certeza de que o registro foi encontrado quando se
chega em uma folha.

- Para inserção, quando for necessário particionar um nó durante uma inserção, o mesmo
raciocínio é utilizado, a diferença é que para a página pai sobe somente a chave. O registro
fica na folha, juntamente com a sua chave. Mas ATENÇÃO: isso vale apenas se o nó que está
sendo particionado for uma folha. Se não for folha, o procedimento é o mesmo utilizado na
árvore B.

- Para a remoção apenas no nó folha e as chaves excluídas continuam nos nós intermediários.

1
4. BIBLIOGRAFIA
Gazzola, M. G. (s.d.). Em D. C. Ciferri, Arvore B, B* e B+.
Szwarcfiter, J., & Markezon, L. (s.d.). Estruturas de Dados e seus Algoritmos (3a ed.). LTC.
https://pt.wikipedia.org/wiki/Usu%C3%A1rio:Aexpedito/B%2Btree;

http://www.ic.unicamp.br/~afalcao/mc202/aula19-ArvoreB+.pdf;

http://www2.ic.uff.br/~vanessa/material/ed/12-ArvoreBMais.pdf;

https://marciobueno.com/arquivos/ensino/ed2/ED2_04_Arvore_B+.pdf;

http://www2.ic.uff.br/~vanessa/material/ed2/09-ArquivosIndexados.pdf;

http://www2.ic.uff.br/~vanessa/material/ed2/09-ArquivosIndexados.pdf;

Você também pode gostar