Você está na página 1de 3

Tabela Hash

Vantagens
Alta eficincia na operao de busca
Tempo de busca praticamente independente do nmero de chaves
armazenadas na tabela
Implementao simples
Desvantagens
Alto custo para recuperar os elementos da tabela ordenados pela
chave. Nesse caso, preciso ordenar a tabela
Pior caso O(N), sendo N o tamanho da tabela: alto nmero de
colises
Criao da tabela:
Aloca espao para o array de ponteiros e os inicializa com NULL
Destruio da tabela:
Envolve percorrer todo o array e verificar se existe um elemento para
ser desalocado
Insero sem tratamento de coliso
Calcular a posio da chave no array
Alocar espao para os dados Armazenar os dados na posio calculada
Busca sem tratamento de coliso
Calcular a posio da chave no array
Verificar se h dados na posio calculada Retornar os dados
Coliso Num mundo ideal, uma funo de hashing ir sempre
fornecer posies diferentes para cada uma das chaves inseridas,
obtendo assim o hashing perfeito Infelizmente, independente
da funo de hashing utilizada, a funo de hashing vai
retornar a mesma posio para duas chaves diferentes A
esse fenmeno se d o nome de coliso A criao de uma
tabela hash consiste ento de duas coisas Uma funo
hashing Uma abordagem para o tratamento de colises
Tratamento de Colises Uma escolha adequada da funo de
hashing e do tamanho da tabela podem minimizar as colises
Por que temos colises? Temos mais chaves para armazenar
do que o tamanho que a tabela suporta Como no h espao

suficiente para todas as chaves na tabela, colises iro ocorrer


Com relao a funo de hashing, a escolha de uma funo que
produza um espalhamento uniforme das chaves pode reduzir o
nmero de colises Infelizmente, no se pode garantir que as
funes de hashing possuam um bom potencial de distribuio
(espalhamento) por que as colises tambm so uniformemente
distribudas. Colises so teoricamente inevitveis. Por isso,
devemos sempre ter uma abordagem para trat-las. Algumas
formas de tratar coliso: Endereamento aberto Encadeamento
separado

Insero com tratamento de coliso Calcular a posio da chave


no array Recalcular a posio enquanto houver coliso (limitar o
nmero de tentativas) Alocar espao para os dados Armazenar os dados
na posio calculada
Busca com tratamento de coliso Calcular a posio da chave no
array Verificar se h dados na posio calculada e se esses dados
combinam com a chave Recalcular a posio enquanto os dados forem
diferentes da chave Retornar os dados
Ordenao Externa Estratgia geral dos mtodos de ordenao externa:
1.Quebre o arquivo em blocos do tamanho da memria interna disponvel.
2.Ordene cada bloco na memria interna. 3.Intercale os blocos ordenados,
fazendo vrias passadas sobre o arquivo. A cada acesso so criados blocos
ordenados cada vez maiores, at que todo o arquivo esteja ordenado.

Mergesort Externo Mtodo mais comum da ordenao externa.


Utiliza a tcnica de intercalao: combina dois ou mais blocos ordenados
em um nico bloco, maior, ordenado.
Funcionamento:
RAM comporta n registros de dados
Carregar parte do arquivo na RAM
Ordenar os dados na RAM com um algoritmo
In-place: ex. Quicksort
Salvar os dados ordenados em um arquivo separado 9 Universidade
Federal do Esprito Santo - CCA-UFES Universidade Federal do Esprito Santo
CCA-UFES Mergesort Externo
Funcionamento (continuao)

: Repetir os anteriores at terminar o arquivo original


Ao final, temos k arquivos ordenados
Multi-way merging
Criar k+1 buffers de tamanho n/(k+1) (1 de sada, k de entrada)
Carregar parte dos arquivos ordenados nos buffers de entrada,
intercalar no buffer de sada
Buffers de entrada vazio: carregar mais dados
Buffers de sada cheio: salvar dados