Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2016/2
Andressa Silva de Oliveira1 , Mayara Marques da Rosa2
Professor: Luis Fernando Orleans
1
Departamento de Ciencia da Computaca o
Universidade Federal Rural do Rio de Janeiro (UFRRJ)
R. Governador Roberto Silveira S/N - Nova Iguacu - Rio de Janeiro - RJ -Brasil
dessaschweitzer@gmail.com, mmrosatab@hotmail.com
Abstract. This report aims to detail all the stages of development of Academic
Activity of Data Structure 2, highlighting the methods and structural data used,
as well as the conclusions obtained from the experiments performed.
Resumo. Este relatorio tem como objetivo detalhar todas as etapas de desen-
volvimento da Atividade Academica de Estrutura de Dados 2, ressaltando os
metodos e estruturas de dados utilizadas, bem como as conclusoes obtidas a
partir dos experimentos realizados.
1. Introduca o
Tendo em vista o quao custoso pode ser o acesso a` memoria secundaria e o quanto este tipo
de problema se agrava quando se quer fazer consultas em arquivos de tamanho conside-
ravelmente grandes, ou seja, arquivos que possuem muitos registros em seu conteudo,as
estruturas de dados Arvore B e HashTable exercem um papel essencial para otimizar o
tempo de consulta de registros em arquivos, ja que a utilizaca o dessas estruturas possibi-
lita ter acesso direto a um registro.
2. Desenvolvimento
No que diz respeito a` s estruturas, foram avaliados a ordem e tamanho ideais da Arvore e
Hashtable, respectivamente, para que o tempo de consulta, inclusao e exclusao de regis-
tros fosse o mais breve possvel. Ja no arquivo binario, tambem utilizou-se uma estrategia
que possibilitasse a criaca o dos ndices de maneira mais a gil. Abaixo sao apresentadas as
caractersticas mencionadas de maneira detalhada.
2.2. Hashtable
Para o tratamento das colisoes na Hashtable foi utilizada a tecnica de encadeamento ex-
terior, que consiste em armazenar as chaves em colisao em uma lista encadeada, externa
a` tabela. Cada ndice da Hashtable armazena um ponteiro para o incio desta lista. A
funca o de dispersao utilizada e a da divisao ou modular. Esta funca o mapea ndices da
tabela de disperca o, estes ndices sao obtidos aplicando o seguinte calculo: k mod m, onde
k e uma chave, m e o tamanho da tabela de dispersao e mod e o resto da divisao. O m foi
definido como um numero primo para amenizar o problema que esta funca o de dispersao
possui. Na escolha do m foi levado em consideraca o que a Hashtable nao seja grande
demais a ponto de ter listas vazias mas que tambem nao seja tao pequena ficando com
listas extremamente cheias. Assim o tamanho da Hashtable foi definido como 10007 .
2.3. Arvore B
A ordem da Arvore B foi definida como 8, levando em consideraca o sua altura maxima
(hmax ), o numero total de registros (n) e sua complexidade de busca. O objetivo fora
alcancar o equilbrio entre o tamanho da pagina e a altura da a rvore para que a busca nao
tivesse uma complexidade exacerbada.
A altura h de uma Arvore B e definida como:
Neste trabalho, o numero de registros e dado por n = 874.038. Sendo assim, temos que:
7 = 1 + logd+1 437.019, 5
logd+1 437.019, 5 = 6
Supondo d = 8:
log9 437.019, 5 = 5, 9
Tem-se que a complexidade da busca nesta estrutura e :
O(2dh)
Porem, utiliza-se a busca binaria em cada pagina para procurar determinado registro.
Desta forma, a complexidade torna-se:
O(log2 (2d)h)
O(log2 (16) 7)
O(4 7)
O(28)
3. Experimentos e Resultados
Tanto para o arquivo de texto e o arquivo binario indexado pelas estruturas de dados
Arvore B e Hashtable foram feitas pesquisas pelos CPFs, chegando nos resultados
abaixo:
3.1. Conclusoes
Atraves dos experimentos realizados, pode ser concludo que:
Para arquivos de tamanho relativamente pequeno, a busca sequencial se torna mais
recomendada.
Para arquivos de tamanho grande, utilizar as estruturas de dados abordadas para
indexaca o possibilita grande melhoria no tempo de busca em relaca o a` busca se-
quencial.
Referencias
[1] Nivio Ziviani, Projeto de Algoritmos com Implementaco es em Java e C++, 2007.
[2] Jayme Luiz Szwarcfiter, Estrutura de dados e Seus algoritmos, 1994.
[3] Inhauma Ferraz, Programaca o com arquivos, 2003.