SlideShare a Scribd company logo
1 of 15
UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT
CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES
LICENCIATURA PLENA EM COMPUTAÇÃO
ESTRUTURAS DE DADOS E TÉCNICAS DE PROGRAMAÇÃO - II
ÁRVORE B
COLIDER/2013
UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT
CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES.
LICENCIATURA PLENA EM COMPUTAÇÃO
ESTRUTURA DE DADOS E TÉCNICAS DE PROGRAMAÇÃO - II
ÁRVORE B
Trabalho acadêmico
apresentado como subsídios
para a avaliação da disciplina
de ESTRUTURA DE DADOS
E TÉCNICAS DE
PROGRAMAÇÃO – II do
curso de Licenciatura em
Computação, ministrado pelo
Professor Ivan Luiz Pedroso
Pires.
COLIDER/2013
Identificação: Douglas Silva da Rocha
Everson Wolf
Título: Árvore B
Público alvo: Acadêmicos do 5º Semestre ano 2013/1 do curso de Licenciatura em
Computação da Universidade Estadual de Mato Grosso/Unemat.
Departamento: Licenciatura em Computação
Cronograma:
Pesquisa: 5 horas.
Elaboração: 7 horas e 10 min.
Utilizou-se: 2 horas e 30 min.
Apresentação: 20 min.
INTRODUÇÃO
A árvore B ou B-Tree é um tipo de estrutura de dados hierárquica
muito conhecida e muito utilizada em sistemas de banco de dados e sistema de arquivos.
Ela foi definida pelo pesquisador Rudolf Bayer[1971].
A principal motivação para a criação dessa nova estrutura foi o
fato das memórias secundárias terem, até hoje, um alto custo de acesso aos
dados. Historicamente temos uma grande distância entre o tempo de leitura
das memórias secundárias para a memória principal, chegando em uma
diferença de 104
a 105
o relacionamento entre elas. A estrutura atual de árvore,
para toda busca, tem a necessidade de fazer uma nova leitura no disco a
cada mudança de nível. Pensando em minimizar o número de acessos à
memória secundária, Rudolf Bayer criou um novo conceito, quando aumentou o número
de valores e de filhos que um nó de sua árvore poderia armazenar. Essa nova
Organização foi batizada como nome de Árvore B.
JUSTIFICATIVA
A finalidade deste trabalho é mostrar o conceito e definições de uma técnica de
organização e manutenção de arquivos com o uso de árvores B, que para muitos ainda é
desconhecido, e para os que já conhecem e utilizam possam desenvolver aptidão e o
raciocínio com a interpretação correta deste método, contribuindo para a ampliação de
seus conhecimentos e no desenvolvimento do ensino-aprendizagem.
OBJETIVO GERAL
O objetivo é apresentar uma técnica de organização e manutenção de arquivos
com o uso de árvores B (Bayer e McCreight, 1972). Esse método aumenta o
desempenho de acesso aos dados armazenados.
OBJETIVOS ESPECÍFICOS
- Mostrar a definição de árvore B.
- Apresentar seu funcionamento.
- Exemplificar um algoritmo que mostra uma árvore B.
- Identificar seu propósito.
METODOLOGIA
Conteúdo elaborado e organizado através de pesquisas na internet e consulta em
livros. Com os dados desta pesquisa foram elaborados exemplos e suas funcionalidades
e criados alguns slides para apresentação do referido trabalho realizado em sala de aula,
utilizando-se de projetor multimídia (data show) e notebooks.
CONTEÚDO DESENVOLVIDO
Definição de árvore B
Na ciência da computação uma árvore B ou árvore B-Tree é uma estrutura de
dados projetada para funcionar especialmente em memória secundária como um disco
magnético ou outros dispositivos de armazenamento secundário. Dentre suas
propriedades ela permite a inserção, remoção e busca de chaves numa complexidade de
tempo logarítmica e, por esse motivo, é muito em pregada em aplicações que
necessitam manipular grandes quantidades de informação tais como um banco de dados
ou um sistema de arquivos.
Para definir uma árvore B devemos esclarecer os conceitos de ordem e página
folha de acordo com cada autor. Bayer e McCreight, Comer, dentre outros, definem a
ordem como sendo o número mínimo de chaves que uma página pode conter, ou seja,
com exceção da raiz todas devem conter esse número mínimo de chaves, mas essa
definição pode causar ambiguidades quando sequer armazenar um número máximo
ímpar de chaves. Por exemplo, se uma árvore B é de ordem 3, uma página estará cheia
quando tiver 6 ou 7 chaves? Ou ainda, se quiserem os armazenar no máximo 7 chaves
em cada página qual será a ordem da árvore, uma vez que, o mínimo de chaves é k e o
máximo 2k? Knuth propôs que a ordem de uma árvore B fosse o número máximo de
páginas filhas que toda página pode conter. Dessa forma, o número máximo de chaves
por página ficou estabelecido com o a ordem menos um. O termo página folha também
é inconsistente, pois é referenciado diferentemente por vários autores. Bayer e
McCreight referem - se a estas com o as páginas mais distantes da raiz, ou aquelas que
contém chaves no nível mais baixo da árvore. Já Knuth define o termo com o as
páginas que estão abaixo do último nível da árvore, ou seja, páginas que não contém
nenhuma chave. De acordo com a definição de Knuth de ordem e página folha de Bayer
e McCreight, uma árvore B de ordem d (número máximo de páginas filhas para uma
página pai) deve satisfazer as seguintes propriedades:
 Cada página contém no máximo d páginas filhas.
 Cada página, exceto a raiz e as folhas, tem pelo menos ⌈d/ 2⌉ páginas
filhas.
 A página raiz tem ao menos duas páginas filhas (ao menos que ela seja
uma folha).
 Toda página folha possui a mesma profundidade, na qual é equivalente à
altura da árvore.
 Um a página não folha com k páginas filha contem k- 1 chaves.
 Um a página folha contém pelo menos ⌈d/ 2⌉- 1 chaves e no máximo d- 1
chaves
Árvores de pesquisa
As árvores binárias de pesquisa são estruturas de dados muito eficientes quando
se deseja trabalhar com tabelas que caibam inteiramente na memória principal do
computador. Elas satisfazem condições e requisitos diversificados e conflitantes, tais
como acesso direto e sequencial, facilidade de inserção e retirada de registros e boa
utilização de memória.
Vamos considerar o problema de recuperar informação em grandes arquivos de
dados que estejam armazenados em memória secundária do tipo disco magnético. Uma
forma simplista de resolver esse problema utilizando árvores binárias de pesquisa é
armazenar os nós da árvore no disco, e as referências à esquerda e à direita de cada nó
se tornam endereços de disco, em vez de endereços de memória principal. Se a pesquisa
for realizada utilizando o algoritmo de pesquisa para memória principal visto
anteriormente, serão necessários da ordem da ordem de log2 n acessos a disco,
significando que um arquivo com n = 106
registros necessitará de aproximadamente log2
106
≈ 20 buscas no disco.
Para diminuir o número de acessos a disco, os nós da árvore podem ser
agrupados em páginas, conforme ilustra a figura 1. Nesse exemplo, o formato da árvore
muda de binário para quaternário, com quatro filhos por páginas, em que o número de
acessos a páginas cai para metade no pior caso. Para arquivos divididos em páginas de
127 registros, é possível recuperar qualquer registro do arquivo com três acessos a disco
no pior caso.
Abaixo temos a árvore binária dividida em páginas:
Figura 1
A forma de organizar os nós da árvore dentro de páginas é muito importante sob
o ponto de vista do número esperado de páginas lidas quando se realiza uma pesquisa na
árvore. A árvore da figura acima é ótima sob esse aspecto. Entretanto, a organização
ótima é difícil de ser obtida durante a construção da árvore, tornando-se um problema
de otimização muito complexo. Um algoritmo bem simples, o da alocação sequencial,
armazena os nós em posições consecutivas na página à medida que vão chegando, sem
considerar o formato físico da árvore. Esse algoritmo utiliza todo espaço disponível na
página, mas os nós dentro da página estão relacionados pela localidade da ordem de
entrada das chaves, e não pela localidade dentro da árvore, o que torna o tempo de
pesquisa muito pior do que o tempo da árvore ótima.
Um método de alocação de nós em páginas que leva em consideração a relação
de proximidade dos nós dentro da estrutura da árvore foi proposto por Muntz e Uzgalis
(1970). No método proposto, o novo nó a ser inserido é sempre colocado na mesma
página do nó pai. Se o nó estiver em uma página cheia, então uma nova página é criada
e o novo nó é colocado no início da nova. Knuth (1973) mostrou que o número esperado
de acessos a páginas em uma pesquisa na árvore é muito próximo do ótimo. Entretanto,
a ocupação média das páginas é extremamente baixa, da ordem de 10%, o que torna o
algoritmo inviável para aplicações práticas.
Uma solução brilhante para esse problema, simultaneamente com uma proposta
para manter equilibrado o crescimento da árvore e permitir inserções e retiradas à
vontade, essa solução é a árvore B.
Árvore B
O objetivo é apresentar uma técnica de organização e manutenção de arquivos
com o uso de árvores B (Bayer e McCreight, 1972). A origem do nome árvore B nunca
foi explicada pelos autores R. Bayer e E. McCreight, cujo trabalho foi desenvolvido no
Boeing Scientific Research Labs. Alguns autores sugerem que o “B” se refere a
“Boeing”, enquanto Comer (1979) acha apropriado pensar em “B-tress” como “Bayer-
trees”, por causa das contribuições de R. Bayer ao tema. Outras informações podem ser
encontradas em Comer (1979), Wirth (1976) e Knuth (1973).
Algoritmo da árvore B
Quando uma árvore de pesquisa possui mais de um registro por nó, ela deixa de
ser binária. Esses árvores são chamadas n-árias, pelo fato de possuírem mais de dois
descendentes por nó. Nesses casos, os nós são mais comumente chamadas de páginas.
A árvore B é n-ária. Em uma árvore B de ordem m, temos que:
1. Cada página contém no mínimo m registros (e m +1 descendentes) e
no máximo 2m registros (e 2m +1 descendentes), exceto a página
raiz, que pode conter entre 1 e 2m registros;
2. Todas as páginas folha aparecem no mesmo nível.
Uma árvore B de ordem m = 2 com três níveis pode ser vista na figura 2. Todas
as páginas contêm dois, três ou quatro registros, exceto a raiz, que pode conter um
registro apenas. Os registros aparecem em ordem crescente da esquerda para direita.
Esse esquema representa uma extensão natural da organização da árvore binária
de pesquisa. A figura 3 apresenta forma geral de uma página de uma árvore B de ordem
m.
Figura 2
Figura 3
Qual seu propósito?
O propósito de uma Árvore B é otimizar o acesso e a manipulação da
informação armazenada em discos; serve geralmente como estrutura de índice à outros
arquivos de registros no qual o índice pode se tornar muito grande para caber em
memória, em que neste contexto (atuando como índice) a árvore armazena uma chave e
a posição relativa em arquivo (ou byte offset) em que o registro se encontra no arquivo
de registros. Cabe lembrar que o emprego de Árvores B em detrimento de Árvore AVL
só faz sentido quando estamos lidando com um conjunto de informações tão grande que
não caiba inteiramente em memória principal; caso utilizássemos uma Árvore AVL para
tratar tal conjunto de informações a performance cairia muito devido ao número de
acessos à disco realizados pelo sistema operacional que, na melhor das hipóteses, estaria
utilizando sua memória virtual para gerenciar a falta de memória.
Inserção em uma árvore B
Para inserir um novo elemento em uma árvore B, basta localizar o nó folha X
onde o novo elemento deva ser inserido. Se o nó X estiver cheio, será necessário
realizar uma subdivisão de nós que consiste em passar o elemento mediano de X para
seu pai e subdividir X em dois novos nós com t - 1 elementos e depois inserir a nova
chave.
Figura 4
Se o pai de X também estiver cheio, repete- se recursivamente a subdivisão
acima para o pai de X. No pior caso terá que aumentar a altura da árvore B para poder
inserir o novo elemento.
Note que diferentemente das árvores binárias, as árvores B crescem para cima.
A figura abaixo ilustra a inclusão de novos elementos em uma árvore B com t =3.
Figura 5
Abaixo temos mais uma imagens que representa uma inserção em uma árvore B:
Observação: Cisão significa, transferir a chave central para o pai e dividir o nó
em dois.
Figura 6
Busca em uma árvore B
A busca em uma árvore B é uma função parecida com a de busca em uma árvore
de busca binária, exceto o fato de que se deve decidir entre vários caminhos. Como as
chaves estão ordenadas, basta realizar uma busca binária nos elementos de cada nó. Isso
levará tempo O (l g (t)). Se a chave não for encontrada no nó em questão, continua- se a
busca nos filhos deste nó, realizando- se novamente a busca binária. Caso o nó não
esteja contido na árvore a busca terminará ao encontrar um ponteiro igual a NULL, ou
de forma equivalente, verificando- se que o nó é uma folha. A busca completa pode ser
realizada em tempo O (l g (t) logt(n)).
Remoção em uma árvore B
A remoção de um elemento de uma árvore B pode ser dividida em dois casos:
1. O elemento que será removido está em uma folha.
2. O elemento que será removido está em um nó interno.
Se o elemento estiver sendo removido de um nó não folha, seu sucessor, que
deve estar em uma folha, será movido para a posição eliminada e o processo de
eliminação procede como se o elemento sucessor fosse removido do nó folha.
Quando um elemento for removido de uma folha X e o número de elementos
no nó folha diminui para menos que t - 1, deve- se reorganizar a árvore B. A solução
mais simples é analisarmos os irmãos da direita ou esquerda de X. Se um dos irmãos
(da direita ou esquerda) de X possui mais de t - 1 elementos, a chave k do pai que
separa os irmãos pode ser incluída no nó X e a última ou primeira chave do irmão
(última se o irmão for da esquerda e primeira se o irmão for da direita) pode ser inserida
no pai no lugar de k.
Figura 7
Se os dois irmãos de X contiverem exatamente t - 1 elementos (ocupação
mínima), nenhum elemento poderá ser em prestado. Neste caso, o nó X e um de seus
irmãos são concatenados em um único nó que também contém a chave separadora do
pai.
Figura 8
Se o pai também contiver apenas t - 1 elementos, deve- se considerar os
irmãos do pai com o no caso anterior e proceder recursivamente. No pior caso, quando
todos os ancestrais de um nó e seus irmãos contiverem exatamente t - 1 elementos,
uma chave será tomada da raiz e no caso da raiz possuir apenas um elemento a árvore
B sofrerá uma redução de altura.
CONCLUSÃO
Conclui-se que este trabalho foi de fundamental importância para o raciocínio
lógico onde foi apresentado uma forma de agilizar o trabalho de criações de aplicações
que ajudam o ser humano no dia a dia, utilizando as técnicas de árvore B, podendo ser
utilizado em um software, sites e até mesmo em banco de dados. Essa técnica foi criado
com o intuito de baratear o acesso aos dados armazenados, pois seu uso aumenta o
desempenho de processamento de pesquisa, inserção e remoção.
REFERÊNCIAS BIBLIOGRAFICAS
Disponível em:
www.cienciamao.usp.br/tudo/exibir.php?midia=exe&cod=_solveelec. Acesso em maio
de 2013.
Disponível em: equipe.nce.ufrj.br/adriano/c/apostila/arvore.htm. Aceso em maio
de 2013.
Disponível em: www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btree.htm. Acesso
em maio de 2013.
Disponível em: www.ft.unicamp.br/liag/siteEd/definicao/arvore-b.php. Acesso
em maio 2013.
ZIVIANI, N; “Projetos de Algoritmos com implementação em Java e C++”.
2007. São Paulo-SP. Thomson Learning.
Disponível em: www.gpec.ucdb.br/pistori/disciplinas/ed/aulas_II/bt.htm. Acesso
em Junho 2013.

More Related Content

What's hot

Introducao Base Dados Ii
Introducao Base Dados IiIntroducao Base Dados Ii
Introducao Base Dados Iiguest3118b2
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Leinylson Fontinele
 
Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Leinylson Fontinele
 
Conceitos essenciais de bases de dados
Conceitos essenciais de bases de dadosConceitos essenciais de bases de dados
Conceitos essenciais de bases de dadosPatrícia Morais
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Servidores Web
Servidores Web Servidores Web
Servidores Web bastosluis
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Leinylson Fontinele
 
Árvores Balanceadas AVL
Árvores Balanceadas AVLÁrvores Balanceadas AVL
Árvores Balanceadas AVLDaniel Maia
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 

What's hot (20)

Servidor apache
Servidor apacheServidor apache
Servidor apache
 
Introducao Base Dados Ii
Introducao Base Dados IiIntroducao Base Dados Ii
Introducao Base Dados Ii
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
 
06 - Servidor Apache
06 - Servidor Apache06 - Servidor Apache
06 - Servidor Apache
 
Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)Estrutura de Dados Apoio (Complexidade de Algoritmos)
Estrutura de Dados Apoio (Complexidade de Algoritmos)
 
Aula 08 - árvores
Aula 08 - árvoresAula 08 - árvores
Aula 08 - árvores
 
Conceitos essenciais de bases de dados
Conceitos essenciais de bases de dadosConceitos essenciais de bases de dados
Conceitos essenciais de bases de dados
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Servidores Web
Servidores Web Servidores Web
Servidores Web
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
Arboles
ArbolesArboles
Arboles
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Aula gerenciamento de arquivos e pastas
Aula   gerenciamento de arquivos e pastasAula   gerenciamento de arquivos e pastas
Aula gerenciamento de arquivos e pastas
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
 
Árvores Balanceadas AVL
Árvores Balanceadas AVLÁrvores Balanceadas AVL
Árvores Balanceadas AVL
 
BINARY SEARCH TREE
BINARY SEARCH TREEBINARY SEARCH TREE
BINARY SEARCH TREE
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 

Viewers also liked

Sistema de arquivos
Sistema de arquivosSistema de arquivos
Sistema de arquivosVirgínia
 
Aula 07 disco rígido e mídias de armazenamento
Aula 07   disco rígido e mídias de armazenamentoAula 07   disco rígido e mídias de armazenamento
Aula 07 disco rígido e mídias de armazenamentoLeewan Meneses
 
Armazenamento de dados Sistema de Informacao
Armazenamento de dados   Sistema de InformacaoArmazenamento de dados   Sistema de Informacao
Armazenamento de dados Sistema de InformacaoJefferson Martins
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Faculdade Mater Christi
 
Dispositivo de armazenamento de dados
Dispositivo de armazenamento de dadosDispositivo de armazenamento de dados
Dispositivo de armazenamento de dadosFilipe Simão Kembo
 
A evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamentoA evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamentoNuno Pereira
 
Dispositivos de armazenamento
Dispositivos de armazenamentoDispositivos de armazenamento
Dispositivos de armazenamentofelipefaleiro
 
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃOTECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃORenan Souza Daniel
 
MC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de ArmazenamentoMC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de ArmazenamentoFelipe J. R. Vieira
 
EDII14 [2012.1] Árvores B e B+
EDII14 [2012.1]   Árvores B e B+EDII14 [2012.1]   Árvores B e B+
EDII14 [2012.1] Árvores B e B+KianeLedok
 
Dispositivos de armazenamento
Dispositivos de armazenamentoDispositivos de armazenamento
Dispositivos de armazenamentoVinicius Buffolo
 
Aula 4 (tecnologias de armazenamento)
Aula 4 (tecnologias de armazenamento)Aula 4 (tecnologias de armazenamento)
Aula 4 (tecnologias de armazenamento)Evandro Júnior
 
Dispositivos e Periféricos de Armazenamento: Pen Drives e Cartões de Memória
Dispositivos e Periféricos de Armazenamento: Pen Drives e Cartões de MemóriaDispositivos e Periféricos de Armazenamento: Pen Drives e Cartões de Memória
Dispositivos e Periféricos de Armazenamento: Pen Drives e Cartões de MemóriaSara Coelho
 
Apostila 8 sistema de arquivos
Apostila 8   sistema de arquivosApostila 8   sistema de arquivos
Apostila 8 sistema de arquivosPaulo Fonseca
 

Viewers also liked (20)

Hash e Btree
Hash e BtreeHash e Btree
Hash e Btree
 
Sistema de arquivos
Sistema de arquivosSistema de arquivos
Sistema de arquivos
 
Sd01 (si) sistemas de arquivos
Sd01 (si)   sistemas de arquivosSd01 (si)   sistemas de arquivos
Sd01 (si) sistemas de arquivos
 
Aula 07 disco rígido e mídias de armazenamento
Aula 07   disco rígido e mídias de armazenamentoAula 07   disco rígido e mídias de armazenamento
Aula 07 disco rígido e mídias de armazenamento
 
Arvores
ArvoresArvores
Arvores
 
Armazenamento de dados Sistema de Informacao
Armazenamento de dados   Sistema de InformacaoArmazenamento de dados   Sistema de Informacao
Armazenamento de dados Sistema de Informacao
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)
 
Dispositivo de armazenamento de dados
Dispositivo de armazenamento de dadosDispositivo de armazenamento de dados
Dispositivo de armazenamento de dados
 
A evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamentoA evolução dos dispositivos de armazenamento
A evolução dos dispositivos de armazenamento
 
Dispositivos de armazenamento
Dispositivos de armazenamentoDispositivos de armazenamento
Dispositivos de armazenamento
 
Meios de armazenamento
Meios de armazenamentoMeios de armazenamento
Meios de armazenamento
 
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃOTECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
TECNOLOGIAS DE ARMAZENAMENTO DE INFORMAÇÃO
 
MC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de ArmazenamentoMC - Aula 05 - Memória e Dispositivos de Armazenamento
MC - Aula 05 - Memória e Dispositivos de Armazenamento
 
EDII14 [2012.1] Árvores B e B+
EDII14 [2012.1]   Árvores B e B+EDII14 [2012.1]   Árvores B e B+
EDII14 [2012.1] Árvores B e B+
 
Dispositivos de Armazenamento
Dispositivos de ArmazenamentoDispositivos de Armazenamento
Dispositivos de Armazenamento
 
Dispositivos de armazenamento
Dispositivos de armazenamentoDispositivos de armazenamento
Dispositivos de armazenamento
 
Aula 4 (tecnologias de armazenamento)
Aula 4 (tecnologias de armazenamento)Aula 4 (tecnologias de armazenamento)
Aula 4 (tecnologias de armazenamento)
 
Dispositivos e Periféricos de Armazenamento: Pen Drives e Cartões de Memória
Dispositivos e Periféricos de Armazenamento: Pen Drives e Cartões de MemóriaDispositivos e Periféricos de Armazenamento: Pen Drives e Cartões de Memória
Dispositivos e Periféricos de Armazenamento: Pen Drives e Cartões de Memória
 
Apostila 8 sistema de arquivos
Apostila 8   sistema de arquivosApostila 8   sistema de arquivos
Apostila 8 sistema de arquivos
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 

Similar to Árvore B estruturas de dados e técnicas de programação

Similar to Árvore B estruturas de dados e técnicas de programação (12)

Modelos Quantitativos de Recuperação da Informação
Modelos Quantitativos de Recuperação da InformaçãoModelos Quantitativos de Recuperação da Informação
Modelos Quantitativos de Recuperação da Informação
 
Exercício 02 alunos
Exercício 02 alunosExercício 02 alunos
Exercício 02 alunos
 
Sgf
SgfSgf
Sgf
 
Sistemas Operacionais parte 3
Sistemas Operacionais parte 3Sistemas Operacionais parte 3
Sistemas Operacionais parte 3
 
Memória virtual
Memória virtualMemória virtual
Memória virtual
 
Indeces
IndecesIndeces
Indeces
 
ID3 Algorithm
ID3 AlgorithmID3 Algorithm
ID3 Algorithm
 
Artigo de banco de dados
Artigo  de banco de dadosArtigo  de banco de dados
Artigo de banco de dados
 
Compressão de Índices
Compressão de ÍndicesCompressão de Índices
Compressão de Índices
 
Aula 01 introdução e conceitos
Aula 01   introdução e conceitosAula 01   introdução e conceitos
Aula 01 introdução e conceitos
 
Access-1-Introducao.ppt
Access-1-Introducao.pptAccess-1-Introducao.ppt
Access-1-Introducao.ppt
 
Introdução BD
Introdução BDIntrodução BD
Introdução BD
 

Árvore B estruturas de dados e técnicas de programação

  • 1. UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES LICENCIATURA PLENA EM COMPUTAÇÃO ESTRUTURAS DE DADOS E TÉCNICAS DE PROGRAMAÇÃO - II ÁRVORE B COLIDER/2013
  • 2. UNIVERSIDADE DO ESTADO DE MATO GROSSO/UNEMAT CAMPUS UNIVERSITÁRIO DO VALE DO TELES PIRES. LICENCIATURA PLENA EM COMPUTAÇÃO ESTRUTURA DE DADOS E TÉCNICAS DE PROGRAMAÇÃO - II ÁRVORE B Trabalho acadêmico apresentado como subsídios para a avaliação da disciplina de ESTRUTURA DE DADOS E TÉCNICAS DE PROGRAMAÇÃO – II do curso de Licenciatura em Computação, ministrado pelo Professor Ivan Luiz Pedroso Pires. COLIDER/2013
  • 3. Identificação: Douglas Silva da Rocha Everson Wolf Título: Árvore B Público alvo: Acadêmicos do 5º Semestre ano 2013/1 do curso de Licenciatura em Computação da Universidade Estadual de Mato Grosso/Unemat. Departamento: Licenciatura em Computação Cronograma: Pesquisa: 5 horas. Elaboração: 7 horas e 10 min. Utilizou-se: 2 horas e 30 min. Apresentação: 20 min. INTRODUÇÃO A árvore B ou B-Tree é um tipo de estrutura de dados hierárquica muito conhecida e muito utilizada em sistemas de banco de dados e sistema de arquivos. Ela foi definida pelo pesquisador Rudolf Bayer[1971]. A principal motivação para a criação dessa nova estrutura foi o fato das memórias secundárias terem, até hoje, um alto custo de acesso aos dados. Historicamente temos uma grande distância entre o tempo de leitura das memórias secundárias para a memória principal, chegando em uma diferença de 104 a 105 o relacionamento entre elas. A estrutura atual de árvore, para toda busca, tem a necessidade de fazer uma nova leitura no disco a cada mudança de nível. Pensando em minimizar o número de acessos à memória secundária, Rudolf Bayer criou um novo conceito, quando aumentou o número
  • 4. de valores e de filhos que um nó de sua árvore poderia armazenar. Essa nova Organização foi batizada como nome de Árvore B. JUSTIFICATIVA A finalidade deste trabalho é mostrar o conceito e definições de uma técnica de organização e manutenção de arquivos com o uso de árvores B, que para muitos ainda é desconhecido, e para os que já conhecem e utilizam possam desenvolver aptidão e o raciocínio com a interpretação correta deste método, contribuindo para a ampliação de seus conhecimentos e no desenvolvimento do ensino-aprendizagem. OBJETIVO GERAL O objetivo é apresentar uma técnica de organização e manutenção de arquivos com o uso de árvores B (Bayer e McCreight, 1972). Esse método aumenta o desempenho de acesso aos dados armazenados. OBJETIVOS ESPECÍFICOS - Mostrar a definição de árvore B. - Apresentar seu funcionamento. - Exemplificar um algoritmo que mostra uma árvore B. - Identificar seu propósito. METODOLOGIA Conteúdo elaborado e organizado através de pesquisas na internet e consulta em livros. Com os dados desta pesquisa foram elaborados exemplos e suas funcionalidades e criados alguns slides para apresentação do referido trabalho realizado em sala de aula, utilizando-se de projetor multimídia (data show) e notebooks.
  • 5. CONTEÚDO DESENVOLVIDO Definição de árvore B Na ciência da computação uma árvore B ou árvore B-Tree é uma estrutura de dados projetada para funcionar especialmente em memória secundária como um disco magnético ou outros dispositivos de armazenamento secundário. Dentre suas propriedades ela permite a inserção, remoção e busca de chaves numa complexidade de tempo logarítmica e, por esse motivo, é muito em pregada em aplicações que necessitam manipular grandes quantidades de informação tais como um banco de dados ou um sistema de arquivos. Para definir uma árvore B devemos esclarecer os conceitos de ordem e página folha de acordo com cada autor. Bayer e McCreight, Comer, dentre outros, definem a ordem como sendo o número mínimo de chaves que uma página pode conter, ou seja, com exceção da raiz todas devem conter esse número mínimo de chaves, mas essa definição pode causar ambiguidades quando sequer armazenar um número máximo ímpar de chaves. Por exemplo, se uma árvore B é de ordem 3, uma página estará cheia quando tiver 6 ou 7 chaves? Ou ainda, se quiserem os armazenar no máximo 7 chaves em cada página qual será a ordem da árvore, uma vez que, o mínimo de chaves é k e o máximo 2k? Knuth propôs que a ordem de uma árvore B fosse o número máximo de páginas filhas que toda página pode conter. Dessa forma, o número máximo de chaves por página ficou estabelecido com o a ordem menos um. O termo página folha também é inconsistente, pois é referenciado diferentemente por vários autores. Bayer e McCreight referem - se a estas com o as páginas mais distantes da raiz, ou aquelas que contém chaves no nível mais baixo da árvore. Já Knuth define o termo com o as páginas que estão abaixo do último nível da árvore, ou seja, páginas que não contém nenhuma chave. De acordo com a definição de Knuth de ordem e página folha de Bayer e McCreight, uma árvore B de ordem d (número máximo de páginas filhas para uma página pai) deve satisfazer as seguintes propriedades:  Cada página contém no máximo d páginas filhas.  Cada página, exceto a raiz e as folhas, tem pelo menos ⌈d/ 2⌉ páginas filhas.
  • 6.  A página raiz tem ao menos duas páginas filhas (ao menos que ela seja uma folha).  Toda página folha possui a mesma profundidade, na qual é equivalente à altura da árvore.  Um a página não folha com k páginas filha contem k- 1 chaves.  Um a página folha contém pelo menos ⌈d/ 2⌉- 1 chaves e no máximo d- 1 chaves Árvores de pesquisa As árvores binárias de pesquisa são estruturas de dados muito eficientes quando se deseja trabalhar com tabelas que caibam inteiramente na memória principal do computador. Elas satisfazem condições e requisitos diversificados e conflitantes, tais como acesso direto e sequencial, facilidade de inserção e retirada de registros e boa utilização de memória. Vamos considerar o problema de recuperar informação em grandes arquivos de dados que estejam armazenados em memória secundária do tipo disco magnético. Uma forma simplista de resolver esse problema utilizando árvores binárias de pesquisa é armazenar os nós da árvore no disco, e as referências à esquerda e à direita de cada nó se tornam endereços de disco, em vez de endereços de memória principal. Se a pesquisa for realizada utilizando o algoritmo de pesquisa para memória principal visto anteriormente, serão necessários da ordem da ordem de log2 n acessos a disco, significando que um arquivo com n = 106 registros necessitará de aproximadamente log2 106 ≈ 20 buscas no disco. Para diminuir o número de acessos a disco, os nós da árvore podem ser agrupados em páginas, conforme ilustra a figura 1. Nesse exemplo, o formato da árvore muda de binário para quaternário, com quatro filhos por páginas, em que o número de acessos a páginas cai para metade no pior caso. Para arquivos divididos em páginas de 127 registros, é possível recuperar qualquer registro do arquivo com três acessos a disco no pior caso. Abaixo temos a árvore binária dividida em páginas:
  • 7. Figura 1 A forma de organizar os nós da árvore dentro de páginas é muito importante sob o ponto de vista do número esperado de páginas lidas quando se realiza uma pesquisa na árvore. A árvore da figura acima é ótima sob esse aspecto. Entretanto, a organização ótima é difícil de ser obtida durante a construção da árvore, tornando-se um problema de otimização muito complexo. Um algoritmo bem simples, o da alocação sequencial, armazena os nós em posições consecutivas na página à medida que vão chegando, sem considerar o formato físico da árvore. Esse algoritmo utiliza todo espaço disponível na página, mas os nós dentro da página estão relacionados pela localidade da ordem de entrada das chaves, e não pela localidade dentro da árvore, o que torna o tempo de pesquisa muito pior do que o tempo da árvore ótima. Um método de alocação de nós em páginas que leva em consideração a relação de proximidade dos nós dentro da estrutura da árvore foi proposto por Muntz e Uzgalis (1970). No método proposto, o novo nó a ser inserido é sempre colocado na mesma página do nó pai. Se o nó estiver em uma página cheia, então uma nova página é criada e o novo nó é colocado no início da nova. Knuth (1973) mostrou que o número esperado de acessos a páginas em uma pesquisa na árvore é muito próximo do ótimo. Entretanto, a ocupação média das páginas é extremamente baixa, da ordem de 10%, o que torna o algoritmo inviável para aplicações práticas. Uma solução brilhante para esse problema, simultaneamente com uma proposta para manter equilibrado o crescimento da árvore e permitir inserções e retiradas à vontade, essa solução é a árvore B.
  • 8. Árvore B O objetivo é apresentar uma técnica de organização e manutenção de arquivos com o uso de árvores B (Bayer e McCreight, 1972). A origem do nome árvore B nunca foi explicada pelos autores R. Bayer e E. McCreight, cujo trabalho foi desenvolvido no Boeing Scientific Research Labs. Alguns autores sugerem que o “B” se refere a “Boeing”, enquanto Comer (1979) acha apropriado pensar em “B-tress” como “Bayer- trees”, por causa das contribuições de R. Bayer ao tema. Outras informações podem ser encontradas em Comer (1979), Wirth (1976) e Knuth (1973). Algoritmo da árvore B Quando uma árvore de pesquisa possui mais de um registro por nó, ela deixa de ser binária. Esses árvores são chamadas n-árias, pelo fato de possuírem mais de dois descendentes por nó. Nesses casos, os nós são mais comumente chamadas de páginas. A árvore B é n-ária. Em uma árvore B de ordem m, temos que: 1. Cada página contém no mínimo m registros (e m +1 descendentes) e no máximo 2m registros (e 2m +1 descendentes), exceto a página raiz, que pode conter entre 1 e 2m registros; 2. Todas as páginas folha aparecem no mesmo nível. Uma árvore B de ordem m = 2 com três níveis pode ser vista na figura 2. Todas as páginas contêm dois, três ou quatro registros, exceto a raiz, que pode conter um registro apenas. Os registros aparecem em ordem crescente da esquerda para direita. Esse esquema representa uma extensão natural da organização da árvore binária de pesquisa. A figura 3 apresenta forma geral de uma página de uma árvore B de ordem m.
  • 9. Figura 2 Figura 3 Qual seu propósito? O propósito de uma Árvore B é otimizar o acesso e a manipulação da informação armazenada em discos; serve geralmente como estrutura de índice à outros arquivos de registros no qual o índice pode se tornar muito grande para caber em memória, em que neste contexto (atuando como índice) a árvore armazena uma chave e a posição relativa em arquivo (ou byte offset) em que o registro se encontra no arquivo de registros. Cabe lembrar que o emprego de Árvores B em detrimento de Árvore AVL só faz sentido quando estamos lidando com um conjunto de informações tão grande que não caiba inteiramente em memória principal; caso utilizássemos uma Árvore AVL para tratar tal conjunto de informações a performance cairia muito devido ao número de acessos à disco realizados pelo sistema operacional que, na melhor das hipóteses, estaria utilizando sua memória virtual para gerenciar a falta de memória. Inserção em uma árvore B Para inserir um novo elemento em uma árvore B, basta localizar o nó folha X onde o novo elemento deva ser inserido. Se o nó X estiver cheio, será necessário realizar uma subdivisão de nós que consiste em passar o elemento mediano de X para
  • 10. seu pai e subdividir X em dois novos nós com t - 1 elementos e depois inserir a nova chave. Figura 4 Se o pai de X também estiver cheio, repete- se recursivamente a subdivisão acima para o pai de X. No pior caso terá que aumentar a altura da árvore B para poder inserir o novo elemento. Note que diferentemente das árvores binárias, as árvores B crescem para cima. A figura abaixo ilustra a inclusão de novos elementos em uma árvore B com t =3.
  • 11. Figura 5 Abaixo temos mais uma imagens que representa uma inserção em uma árvore B: Observação: Cisão significa, transferir a chave central para o pai e dividir o nó em dois.
  • 12. Figura 6 Busca em uma árvore B A busca em uma árvore B é uma função parecida com a de busca em uma árvore de busca binária, exceto o fato de que se deve decidir entre vários caminhos. Como as chaves estão ordenadas, basta realizar uma busca binária nos elementos de cada nó. Isso levará tempo O (l g (t)). Se a chave não for encontrada no nó em questão, continua- se a busca nos filhos deste nó, realizando- se novamente a busca binária. Caso o nó não esteja contido na árvore a busca terminará ao encontrar um ponteiro igual a NULL, ou de forma equivalente, verificando- se que o nó é uma folha. A busca completa pode ser realizada em tempo O (l g (t) logt(n)). Remoção em uma árvore B A remoção de um elemento de uma árvore B pode ser dividida em dois casos:
  • 13. 1. O elemento que será removido está em uma folha. 2. O elemento que será removido está em um nó interno. Se o elemento estiver sendo removido de um nó não folha, seu sucessor, que deve estar em uma folha, será movido para a posição eliminada e o processo de eliminação procede como se o elemento sucessor fosse removido do nó folha. Quando um elemento for removido de uma folha X e o número de elementos no nó folha diminui para menos que t - 1, deve- se reorganizar a árvore B. A solução mais simples é analisarmos os irmãos da direita ou esquerda de X. Se um dos irmãos (da direita ou esquerda) de X possui mais de t - 1 elementos, a chave k do pai que separa os irmãos pode ser incluída no nó X e a última ou primeira chave do irmão (última se o irmão for da esquerda e primeira se o irmão for da direita) pode ser inserida no pai no lugar de k. Figura 7 Se os dois irmãos de X contiverem exatamente t - 1 elementos (ocupação mínima), nenhum elemento poderá ser em prestado. Neste caso, o nó X e um de seus irmãos são concatenados em um único nó que também contém a chave separadora do pai.
  • 14. Figura 8 Se o pai também contiver apenas t - 1 elementos, deve- se considerar os irmãos do pai com o no caso anterior e proceder recursivamente. No pior caso, quando todos os ancestrais de um nó e seus irmãos contiverem exatamente t - 1 elementos, uma chave será tomada da raiz e no caso da raiz possuir apenas um elemento a árvore B sofrerá uma redução de altura. CONCLUSÃO Conclui-se que este trabalho foi de fundamental importância para o raciocínio lógico onde foi apresentado uma forma de agilizar o trabalho de criações de aplicações que ajudam o ser humano no dia a dia, utilizando as técnicas de árvore B, podendo ser utilizado em um software, sites e até mesmo em banco de dados. Essa técnica foi criado com o intuito de baratear o acesso aos dados armazenados, pois seu uso aumenta o desempenho de processamento de pesquisa, inserção e remoção. REFERÊNCIAS BIBLIOGRAFICAS Disponível em: www.cienciamao.usp.br/tudo/exibir.php?midia=exe&cod=_solveelec. Acesso em maio de 2013. Disponível em: equipe.nce.ufrj.br/adriano/c/apostila/arvore.htm. Aceso em maio de 2013.
  • 15. Disponível em: www.lcad.icmc.usp.br/~nonato/ED/B_arvore/btree.htm. Acesso em maio de 2013. Disponível em: www.ft.unicamp.br/liag/siteEd/definicao/arvore-b.php. Acesso em maio 2013. ZIVIANI, N; “Projetos de Algoritmos com implementação em Java e C++”. 2007. São Paulo-SP. Thomson Learning. Disponível em: www.gpec.ucdb.br/pistori/disciplinas/ed/aulas_II/bt.htm. Acesso em Junho 2013.