Sei sulla pagina 1di 3

Relatorio da Atividade Academica de Estrutura de Dados 2

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.1. Arquivo binario


Nesta etapa de desenvolvimento da atividade academica teve-se a necessidade de con-
verter o arquivo texto clientes.txt para seu modo binario. O arquivo clientes.txt possui o
seguinto formato de registro :

Figura 1. Formato registro1

No arquivo binario foi colocado um inteiro de 4 bytes que representa o tamanho


de uma string antes de cada string de tamanho variavel existente no registro, alem
disso foi adicionado antes do campo CPF - que possui comprimento fixo - um inteiro
de 4 bytes que diz o tamanho em bytes de um registro e um booleano de 1 byte que
diz a situaca o de um registro que pode ser ativado ou desativado. Desta forma tem-
se o seguinte formato para arquivo binario gerado a partir do arquivo de texto clientes.txt :

Figura 2. Formato registro2

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:

log2d+1 (n + 1) h 1 + logd+1 ((n + 1)/2)

Neste trabalho, o numero de registros e dado por n = 874.038. Sendo assim, temos que:

hmax = 1 + logd+1 437.019, 5

Para que a altura nao ultrapasse o tamanho 7:

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)

Como hmax = 7 e, para tanto, a ordem escolhida e d = 8:

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:

Figura 3. Busca no arquivo

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.

Potrebbero piacerti anche