Árvore B UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 43

Documentos relacionados
Árvores Binárias de Busca

Busca. Pesquisa sequencial

Pesquisa em Memória Primária. Prof. Jonas Potros

Árvores Binárias Balanceadas

Árvores Binárias de Busca

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Árvore Binária de Busca

Árvores B + Prof Márcio Bueno. ed2tarde@marciobueno.com / ed2noite@marciobueno.com. Material da Prof a Ana Eliza Lopes Moura

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

Orientação a Objetos

Persistência de Dados

EAD Árvore árvore binária

Algoritmos e Estrutura de Dados III. Árvores

Unidade 5 Armazenamento e Indexação

Dadas a base e a altura de um triangulo, determinar sua área.

PROGRAMAÇÃO II 4. ÁRVORE

INF PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

Algoritmos de Busca em Tabelas

INF 1007 Programação II

Google Drive: Acesse e organize seus arquivos

Índices* Professora Rosane Minghim. * Baseado no material de Leandro C. Cintra e M. C. F. de Oliveira. Fonte: Folk & Zoelick, File Structures.

Estruturas de Dados I

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Manual de digitação de contas Portal AFPERGS

Sistema de Arquivos. Ambientes Operacionais. Prof. Simão Sirineo Toscani

MÓDULO 5 Movimentações

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

1.2) Na tela seguinte, o primeiro item a ser selecionado é o Unidade Acumuladora1.

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Engenharia de Software III

Linguagem C: Árvores Binarias

EXEMPLO DE COMO FAZER UMA MALA DIRETA

Algoritmos e Estruturas de Dados II. Trabalho Prático 2

Árvores AVL. Prof. Othon M. N. Batista Estrutura de Dados

Pesquisa em Memória Primária. Prof. Jonas Potros

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Multiplexador. Permitem que vários equipamentos compartilhem um único canal de comunicação

Figura 1 Busca Linear

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Android e Bancos de Dados

DAS5102 Fundamentos da Estrutura da Informação

Criando Quiz com BrOffice.impress

SISTEMA DE GERENCIAMENTO DE PROJETOS - REDMINE MANUAL DE USO

Iniciação à Informática

Este trabalho tem como objetivo praticar o uso de tipos abstratos de dados e estruturas do tipo Lista.

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

Lição 1 - Criação de campos calculados em consultas

ESTRUTURAS DE DADOS II

CENTRO UNIVERSITÁRIO CATÓLICA DE SANTA CATARINA PRÓ-REITORIA ACADÊMICA NÚCLEO DE EDUCAÇÃO EM AMBIENTES DIGITAIS NEAD

Manual Administrador - Mídia System

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Árvores Binárias. Observação: Material elaborado a partir do material do Professor Marcos Costa.

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

MICROSOFT OFFICE EXCEL 2007

Processo de Controle das Reposições da loja

Aritmética Binária e. Bernardo Nunes Gonçalves

Árvores. Algoritmos e Estruturas de Dados 2005/2006

AULA 1 Iniciando o uso do TerraView

EAD Árvore - representação usando listas ligadas

Trabalho 3: Agenda de Tarefas

Como consolidar dados nas planilhas utilizando o comando CONSOLIDAR do Excel

Árvores Balanceadas. Árvore binária completamente balanceada. Ocorre quando a árvore está cheia ou quase cheia com o nível n-1 completo

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Manual do Módulo SAC

Manual AGENDA DE BACKUP

Projeção ortográfica de modelos com elementos paralelos e oblíquos

Microsoft Access XP Módulo Um

Lógica de Programação

Manual do Ambiente Moodle para Professores

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

LINGUAGEM DE BANCO DE DADOS

Endereçamento IP 09/05/2014. Endereçamento IP CLASSE B CLASSE A CLASSE A CLASSE C

3. Arquitetura Básica do Computador

Manual AGENDA DE BACKUP

Índice: CMS 3 O que é Content Management System? Clientes 4 O que é o Cliente? 4 Configurando o i-menu/i-view para trabalhar. com o CMS.

Hashing. Rafael Nunes LABSCI-UFMG

Unidade 5. Aba Anexos. Objetivos de Aprendizagem. Ao final desta Unidade, você deverá ser capaz de:

Sistemas Operacionais

Desenvolvendo Websites com PHP

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

OCOMON PRIMEIROS PASSOS

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

4 RECURSOS AUTOMATIZADOS DO EXCEL

Computadores XXI: Busca e execução Final

Introdução aos cálculos de datas

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Polimorfismo. Prof. Leonardo Barreto Campos 1

Algoritmos e Estruturas de Dados: Árvore Binária de Busca

Guia Site Empresarial

Manual de Utilização COPAMAIL. Zimbra Versão 8.0.2

MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon

APOSTILA DE EXCEL 2007

BC1424 Algoritmos e Estruturas de Dados I. Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco. jesus.mena@ufabc.edu.br

Transcrição:

AULA A 3 ESTRUTURA RA DE DADOS Árvore B Esperamos que, ao final desta aula, você seja capaz de: identificar as vantagens da árvore B em relação às árvores binária de busca e AVL; conhecer as funções de busca, inserção e remoção da árvore B. Para compreender as árvores B, é necessário conhecer os conceitos sobre árvores apresentados na aula um deste caderno. Isso é importante porque certos conceitos são mencionados com recorrência. Além disso, é importante também conhecer as árvores binárias de busca e AVL, apresentados nas aulas um e dois, respectivamente deste caderno. Esse conteúdo também é necessário, nesta aula, porque a árvore B é, basicamente, uma extensão das árvores binária de busca e AVL. Como estudamos nas aulas anteriores, as árvores binárias armazenam em um nó um único registro e possuem dois nós (esquerdo e direito) como filhos. Essa última característica indica ordem 2 em uma árvore binária. Além disso, vimos que a árvore binária de busca tem como característica armazenar, na subárvore esquerda de um nó, apenas elementos menores do que ele e, na direita, nenhum menor. Podemos ampliar o conceito de armazenamento ordenado da árvore binária de busca para maiores ordens, ou seja, uma árvore de busca com mais de dois filhos por nó. Outra característica que pode ser adiciona é poder armazenar mais de um elemento (registro). Esse conceito é importante porque amplia as possibilidades de armazenamento além manter uma árvore com profundidade menor do que uma árvore UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 43

binária de busca ou árvore AVL. Szwarcfiter e Markenzon (1994, p.160) expõem que, [...] utilizando o recurso de manter mais de uma chave em cada nó da estrutura, proporciona uma organização [...] tal que as operações mencionadas (busca, inserção e remoção) são executas rapidamente (grifo nosso). Árvores com as novas características citadas anteriormente são conhecidas como árvore multidirecional de busca e são descritas nesta aula. Além dela, analisaremos as árvores B. Veremos suas características e como devemos preceder às operações de busca, inserção e remoção. 3.1 Árvore multidirecional de busca Tenenbaum, Langsan e Augenstein (1995, p. 537) definem uma árvore multidirecional de busca de ordem n como [...] uma árvore geral na qual cada nó tem n ou menos subárvores e contém uma chave a menos que a quantidade de suas subárvores. Ou seja, se um nó tiver quatro subárvores, ele conterá três chaves. Na Figura 1, é apresentado um exemplo desse tipo de árvore. Na Figura 1a, é apresentada uma árvore de busca multidirecional de ordem 4. A Figura 1b apresenta outra árvore de busca multidirecional com folhas que não estão somente no último nível, assim como a árvore da Figura 1a. A Figura 1c ilustra outra árvore de busca multidirecional, de ordem 3 e com todas as folhas no último nível. As setas que não apontam para algum nó são subárvores vazias. Figura 1 Exemplos de árvore multidirecional de busca. 44 3º PERÍODO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

Fonte: Tenenbaum, Langsan e Augenstein (1995). Como exemplo do novo tipo de estrutura, árvores multidirecionais de busca, aparece a árvore B, que estudaremos na seqüência. 3.2 Árvores B A árvore B foi proposta por Rudolf Bayer. Não se sabe de onde vem o B do nome da árvore. Uma das hipóteses é que a letra B é a primeira letra do seu sobrenome Bayer. Em países de língua inglesa, as pessoas costumam ser conhecidas por seus sobrenomes. A letra B também é a primeira letra da palavra balanceamento (em inglês balancing). Essa árvore obedece ao conceito de árvore balanceada. Também é uma hipótese plausível. Outra possibilidade, na opinião dos autores deste caderno a menos provável, é que Rudolf Bayer trabalhava na Boeing Scientific Research Labs. Olha outro B aí! Com tanto B na vida dele, árvore B é um nome mais do que justo. Independente de onde realmente veio, a árvore B é uma árvore muito importante e das mais utilizadas para armazenamento de grande quantidade de dados. A árvore B é uma árvore balanceada em que o número de nós acessados em uma busca/inserção/remoção é muito pequeno se comparado às outras árvores estudadas. Outro ponto importante é que a árvore B garante que as folhas se encontrem todas em um mesmo nível, independente da ordem em que os dados serão inseridos. Em outras palavras, Preiss (2000) define uma árvore B de ordem n como uma árvore de busca com as seguintes propriedades: a raiz tem no mínimo duas e no máximo n subárvores; cada um dos nós internos (diferentes da raiz) tem entre n/2 e n subárvores e entre n/2 1 e n 1 elementos; todos os nós externos (folhas) estão no mesmo nível. UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 45

Na Figura 2, está expresso um exemplo de árvore B de ordem 4. Repare que essa árvore obedece à definição: a raiz possui duas subárvores (quantidade mínima); todas as folhas estão em um mesmo nível; e todos os nós internos (que não são folhas diferentes da raiz) possuem quatro subárvores, ou seja, entre n/2 e n. Figura 2 Exemplo de árvore B de ordem 4. Fonte: Pimentel e Oliveira (1996). Já sabemos que em uma árvore de ordem n (em que n é um número natural maior do que um), a árvore B pode ter n filhos. Além disso, é balanceada. Nesse caso, precisamos ter algoritmos que garantam essa característica à árvore. Um elemento inserido em uma árvore B é sempre colocado em uma folha. Assim como nas outras árvores e, de acordo com a necessidade, as redistribuições são feitas a fim de garantir que a árvore fique sempre balanceada. Na verdade, a árvore B generaliza as árvores binárias de busca, mais especificamente a árvore AVL. A seguir é apresentada a classe do nó da árvore B. private class NoArvoreB { private Comparable[] chaves; private NoArvoreB[] filhos; private NoArvoreB() { chaves = new Comparable[2*n]; filhos = new NoArvoreB[2*n+1]; } //construtor private NoArvoreB(NoArvoreB copia) { chaves = copia.chaves.clone(); filhos = copia.filhos.clone(); } 46 3º PERÍODO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

//define as chaves private void setchaves(comparable[] c) { chaves = c; } //define os filhos filhos = f; } private boolean isfolha() { return (filhos[0] == null); } } Saiba mais As árvores B são muito utilizadas como forma de armazenamento em memória secundária (como HDs e outros dispositivos de armazenamento secundário com acesso direto). As árvores B se destinam a armazenar grandes tabelas, por isso diversos sistemas comerciais de bancos de dados, por exemplo, as empregam (SZWARCFITER; MARKENZON, 1994). Veremos, na seqüência, como proceder às operações de busca, inserção e remoção na árvore B. 3.2.1 Busca A busca realizada em uma árvore B é semelhante à busca em uma árvore AVL e, conseqüentemente, a de uma árvore binária de busca. Como é possível armazenar mais de um elemento em um nó, é necessário adicionar testes a serem realizados em cada nó para indicar qual o próximo passo. UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 47

Na Figura 3, é ilustrado um exemplo de busca em árvore B. Considere a busca da chave 10. A primeira comparação a ser feita é com a raiz. Como o elemento 10 está à direita de 50, segue a busca para o nó que armazena os elementos 9 e 30. Nesse nó, são realizadas novas comparações a fim de determinarmos para qual filho a busca deverá seguir. Como o elemento é maior do que 9 e menor do que 30, a busca segue para o filho localizado entre 9 e 30. O caminho percorrido está destacado na Figura 3. Figura 3 Busca de um elemento em uma árvore B. Fonte: Szwarcfiter e Markenzon (1994). 3.2.2 Inserção Na inserção, devemos nos preocupar com a definição enquanto à ordem da árvore, porque um nó interno (diferente da raiz) deve possuir entre n/2 e n subárvores. Temos de garantir isso. O primeiro passo da inserção é buscarmos a folha na qual será inserido o novo elemento. Em seguida, como segundo passo, devemos verificar se a folha está ou não completa e, se não estiver completa, basta incluir o elemento em sua posição correta dentro do nó. Se o nó estiver cheio, devemos proceder ao segundo passo de forma diferente. Se o nó estiver cheio, ao invés de criar um novo nó com apenas esse novo elemento, devemos dividir o nó cheio. Assim, se algum nó ficar com ordem maior do que n, o nó deve ser dividido. Para isso, o valor central do nó que será dividido sobe para a posição do pai, repetindo recursivamente por toda árvore até a raiz (se necessário). E se a raiz estourar? Nesse caso, um novo nó raiz será criado e poderá ter somente um elemento se necessário. É importante acrescentar que, por proceder à inserção da forma descrita anteriormente, é que se garante que todas as folhas sempre estarão em um mesmo nível. 48 3º PERÍODO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

A seguir é apresentado um exemplo, passo a passo, de inserção em uma árvore B. A Figura 4 apresenta a árvore B inicial. Figura 4 Árvore B inicial. A partir da árvore B inicial, devemos proceder às inserções dos seguintes elementos, respectivamente: B, N, F. A Figura 5 ilustra o resultado da árvore após a inserção normal de B em um nó folha. Figura 5 Inserção do elemento B. Na seqüência, como já é de conhecimento, deve ser inserido o elemento N. Contudo o nó em que deve ser inserido N já está cheio. Assim devemos dividir o nó em dois e subir em um nível o elemento central. Lembre-se de que esse processo repete recursivamente até a raiz. A árvore resultante após a inserção de N é apresentada na Figura 6. Figura 6 Inserção do elemento N. O último passo do exemplo é a inserção do elemento F. Mais uma vez o nó em que deveria ser inserido o novo elemento, nesse caso F, já está cheio. Procedemos à divisão do nó em dois e subimos o elemento central. A Figura 7 apresenta o resultado final da árvore. UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 49

Figura 7 Inserção do elemento F. 3.2.3 Remoção Para a remoção de um elemento, também existem dois casos que merecem atenção: de o elemento a ser inserido estar ou não em uma folha. Além disso, há o problema de, ao remover, um nó não atingir a quantidade mínima de elementos que devem estar armazenados no nó, de acordo com a ordem a árvore. A seguir é apresentado o algoritmo de remoção. 1. Aplicar o procedimento de buscar, verificando a existência do elemento a ser removido na árvore. 2. Se o elemento a ser removido se encontrar em uma folha, o elemento é simplesmente retirado. 3. Se o elemento a ser removido não se encontrar em uma folha (se localizar em um nó interno), é substituído pelo elemento imediatamente maior ou imediatamente menor. Observe que o elemento imediatamente maior ou menor pertence, por definição, a uma folha. Com isso, reduzimos para o caso de remover o elemento da folha. 4. Se o nó continuar com o número mínimo de elementos, fim. 5. Se não, a folha obrigatoriamente tem uma chave a menos que o mínimo. Assim verifique os nós irmãos (imediatamente à esquerda e direita): 5.1 se um dos nós irmãos tiver mais do que o número mínimo de elementos, aplique redistribuição. Lembre-se de que um nó interno deve possuir um mínimo de n/2 1 elementos. A redistribuição consiste em concatenar o nó folha do elemento removido com o do irmão adjacente, o que resulta em um nó maior do que o aceito pela definição. Em seguida, efetue a divisão do nó em dois e suba em um nível o elemento central, igual à divisão da inserção; 5.2 se não, concatene o nó com um dos irmãos e o elemento separador do pai. 6. Se ocorrer concatenação, volte ao passo 4 com o nó pai, porque remover um elemento do pai pode acarretar de o pai não ter mais o número mínimo de elementos. A seguir é apresentado um exemplo, passo a passo, de remoção em uma árvore B. 50 3º PERÍODO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

A Figura 8 apresenta a árvore B inicial. Figura 8 Árvore B inicial. A partir da árvore B inicial, devemos proceder às remoções dos seguintes elementos respectivamente: J, L. Como passo 1 da remoção, é necessário buscar o elemento a ser removido da árvore. É identificado o nó que contém os elementos H e J. Como o elemento se encontra em uma folha, remova o elemento (passo 2). Já que o nó não continua com o número mínimo de elementos (passo 5), execute o passo 5.1 (redistribuição). Faça a redistribuição com o nó irmão da direita. Por ter sido feita uma redistribuição, a remoção é finalizada. O resultado é apresentado na Figura 9. Figura 9 Remoção do elemento J. Agora vamos remover o elemento L. Como passo 1 da remoção, é necessário buscar o elemento a ser removido da árvore. É identificado o nó que contém os elementos H e L. Como o elemento se encontra em uma folha, remova o elemento (passo 2). Uma vez que o nó não continua com o número mínimo de elementos (passo 5), execute o passo 5.2 (concatenação). A concatenação é feita com o pai e o irmão direito, o que resulta em um nó com os elementos H, M, P, T. Execute o passo 6 voltando ao passo 4 para o pai (nó com os elementos F, U). Como o nó pai continua obedecendo à definição acerca do número mínimo de elementos, a remoção é finalizada. O resultado é apresentado na Figura 10. Figura 10 Remoção do elemento L. UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 51

Chegamos ao fim desta aula, na qual apresentamos a árvore B e, com isso, encerramos o assunto árvores. É importante ter compreendido o conteúdo exposto aqui para que possamos avançar e discutir outros assuntos também importantes. Se algo não ficou claro, aproveite e revise. As atividades estão aí para isso também. Nesta aula, vimos os conceitos das árvores multidirecionais de busca. Como exemplo desse tipo de estrutura de dados, foi apresentada a árvore B. A árvore B é uma árvore balanceada em que o número de nós acessados em uma busca/ inserção/remoção é muito pequeno se comparado às outras árvores estudadas. Outro ponto importante é que a árvore B garante que as folhas se encontrem todas em um mesmo nível, independente da ordem em que os dados serão inseridos. Nesse sentido, a árvore B é, basicamente, uma extensão da árvore AVL e, conseqüentemente, da árvore binária de busca. Analisamos ainda as funções de busca, inserção e remoção da árvore B, com exemplos. 1. Após ter estudado sobre árvores B e verificado sua superioridade sobre as demais árvores, estudadas em aulas anteriores, analise as afirmativas. Em seguida, assinale a alternativa correta. I. De forma diferente das árvores binárias, cada nó de uma árvore B poderá ter mais de dois filhos. II. Um nó de árvore B tem um campo ou um método para indicar se é um nó folha ou não. Já a implementação padrão de um nó AVL não costuma ter esse campo ou método. III. As folhas da árvore B são dispostas mais flexivelmente que as da árvore binária: suas folhas poderão estar em níveis diferentes, desde zero até o valor da altura da árvore. IV. As árvores B são árvores balanceadas projetadas para trabalhar com dispositivos de armazenamento secundário. a) Todas as afirmativas estão corretas. b) Somente as afirmativas II e III estão corretas c) Somente as afirmativas I, II e IV estão corretas. d) Somente as afirmativas I, III e IV estão corretas. 2. Após ler as características da árvore B, unindo esse conhecimento com o já adquirido por meio do estudo das árvores binárias de busca e AVL, liste as principais vantagens da árvore B em relação às demais. 52 3º PERÍODO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS

3. Sobre as funções de inserção, busca e remoção de nós em uma árvore B, analise os itens a seguir. I. Para se inserir um novo nó em uma árvore B, será necessária a localização do nó folha em que o novo elemento deve ser inserido. Se o nó estiver cheio, será necessário dividi-lo em dois, passar o elemento mediano para o pai. II. Embora seja semelhante à busca realizada em uma árvore binária de busca, essa função em uma árvore B se difere pelo fato de que se deve decidir entre vários caminhos. III. A remoção de um nó de uma árvore B pode ser dividida em três casos: o nó a ser removido está em um nó interno, o nó a ser removido está em uma folha e o nó a ser removido está desconectado da árvore. IV. Em uma árvore B, no caso da remoção de um nó que não é folha, o nó sucessor (que se localiza em uma folha) será movido para a posição a ser removida, e o processo de remoção ocorre como se o nó sucessor fosse removido do nó folha. Assinale a alternativa correta. a) Todas as afirmativas estão corretas. b) Somente as afirmativas II e III estão corretas c) Somente as afirmativas I, II e IV estão corretas. d) Somente as afirmativas I, III e IV estão corretas. 4. Escreva um programa em Java, que possibilite a inserção e a exibição dos elementos de uma árvore B. Use a classe Comparable para definir o tipo de dado armazenado (armazene valores inteiros). Teste o algoritmo com várias entradas de sua preferência. Na atividade um, a resposta correta é a letra (c). A alternativa (III) está errada, pois, em uma árvore B, todas as folhas estão em um mesmo nível. As demais alternativas estão de acordo com os assuntos explanados nesta aula e nas aulas anteriores. Na atividade dois, você deve ter comparado características da árvore B com características da árvore binária de busca e da AVL. A partir dessa comparação, deve ter listado as vantagens da árvore B sobre a AVL e binária de busca. Mencionou que a árvore B permanece sempre balanceada (já as árvores binárias e AVL requerem aplicação de algoritmos de balanceamento), pois os nós são inseridos sempre no último nível. Também citou a vantagem da velocidade de pesquisa que a árvore B proporciona, superior a da pesquisa da árvore UNITINS ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 3º PERÍODO 53

binária, bem como economia em acessos a disco, caso ela já esteja carregada em memória. Na atividade três, a resposta correta é a letra (c). A afirmativa (III) erra ao acrescentar uma terceira situação de remoção ( o nó a ser removido está desconectado da árvore, caso inexistente). As demais alternativas estão de acordo com os assuntos explanados em aula e estudados em materiais referenciados. Finalmente, na atividade quatro, você deve ter desenvolvido um aplicativo em Java que, no mínimo, insira e liste elementos em uma árvore B. Testou o programa a partir da inserção de vários valores inteiros escolhidos de sua preferência. Na impressão, deve ter sido possível visualizar no console de saída os inteiros armazenados na árvore, a partir de comandos de saída, a exemplo de System.out.println(no.toString()). Se você respondeu corretamente a essas questões, atingiu os dois objetivos propostos para esta aula: identificar as vantagens da árvore B em relação às árvores binárias de busca e AVL e conhecer as funções de busca, inserção e remoção da árvore B. PIMENTEL, Maria da G. C.; OLIVEIRA, Maria C. F. B-Trees & Cia. 1996. Disponível em: <http://www.icmc.usp.br/manuals/sce183/ex8_5.gif>. Acesso em: 27 ago. 2008. PREISS, Bruno R. Estrutura de dados e algoritmos. São Paulo: Campus, 2000. SUN, Javadoc. Interface comparable. Disponível em: <http://java.sun.com/ j2se/1.4.2/docs/api/java/lang/comparable.html>. Acesso em: 29 ago. 2008. SZWARCFITER, Jayme Luiz; MARKENZON, Lílian. Estruturas de dados e seus algoritmos. Rio de Janeiro: LTC, 1994. TENENBAUM, Aaron M.; LANGSAN, Yedidyah; AUGENSTEIN, Moshe J. Estrutura de dados usando C. São Paulo: Makron Books, 1995. Após encerrarmos as árvores, passearemos pelos arquivos em Java, Veremos como se criam arquivos de texto de acesso binário, aleatório e seqüencial e como se classifica sua estrutura interna de acesso. Anotações 54 3º PERÍODO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS UNITINS