2005-09-27 18:11:25 +03:00
\section { Introdu\c { c} \~ ao}
\label { sec:introduction}
2005-09-30 23:14:51 +03:00
Fun\c { c} \~ oes hash s\~ ao amplamente utilizadas em v\' arias \' areas da
Ci\^ encia da Computa\c { c} \~ ao.
Uma \textit { fun\c { c} \~ ao hash} $ h: U \to M $ mapeia chaves de um universo $ U $ , $ |U| = u $ ,
para um dado intervalo de inteiros $ M = [ 0 ,m - 1 ] = \{ 0 , 1 , \dots ,m - 1 \} $ .
Seja~$ S \subseteq U $ um subconjunto de $ n $ chaves do universo $ U $ .
Dado uma chave~$ k \in S $ , uma fun\c { c} \~ ao hash $ h $ computa um inteiro em
$ M $ para armazenamento ou recupera\c { c} \~ ao de $ k $ em uma \textit { tabela hash} .
Neste artigo consideramos que as chaves s\~ ao strings de bits de comprimento
m\' aximo $ L $ . Portanto $ u = 2 ^ L $ .
M\' etodos de hashing para { \em conjuntos n\~ ao est\' aticos} de chaves podem ser usados para
construir estruturas de dados para armazenar $ S $ e suportar consultas do tipo
``$ k \in S $ ?'' em tempo esperado $ O ( 1 ) $ .
No entanto, eles envolvem um certo desperd\' { \i } cio de espa\c { c} o e tempo devido
a localiza\c { c} \~ oes inutilizadas na tabela e tempo para resolver colis\~ oes quando duas
chaves s\~ ao mapeadas para a mesma localiza\c { c} \~ ao na tabela.
2005-10-03 00:28:13 +03:00
Para { \em conjuntos est\' aticos} de chaves \' e poss\' { \i } vel computar uma fun\c { c} \~ ao
para encontrar qualquer chave na tabela em uma \' unica tentativa; tais fun\c { c} \~ oes
s\~ ao chamadas de \textit { perfeitas} .
Dado um conjunto de chaves $ S $ , dizemos que uma fun\c { c} \~ ao hash $ h:U \to M $ \' e uma
\textit { fun\c { c} \~ ao hash perfeita} (FHP) para $ S $ se $ h $ \' e injetora para $ S $ ,
isto \' e, n\~ ao h\' a { \em colis\~ oes} entre as chaves em $ S $ : se $ x $
e $ y $ est\~ ao em $ S $ e $ x \neq y $ , ent\~ ao $ h ( x ) \neq h ( y ) $ .
A Figura~\ref { fig:minimalperfecthash-ph-mph} (a) ilustra uma fun\c { c} \~ ao hash perfeita.
Se $ m = n $ , isto \' e, a tabela \' e do mesmo tamanho de $ S $ ,
ent\~ ao $ h $ \' e uma \textit { fun\c { c} \~ ao hash perfeita m\' { \i } nima} (FHPM).
A Figura~\ref { fig:minimalperfecthash-ph-mph} (b) ilustra uma
fun\c { c} \~ ao hash perfeita m\' { \i } nima.
FHPMs podem evitar totalmente o problema de desperd\' { \i } cio de espa\c { c} o e tempo.
2005-09-30 23:14:51 +03:00
2005-09-27 18:11:25 +03:00
% For two-column wide figures use
2005-09-29 00:37:19 +03:00
\begin { figure}
2005-09-27 18:11:25 +03:00
% Use the relevant command to insert your figure file.
% For example, with the graphicx package use
\centering
2005-09-29 00:37:19 +03:00
\includegraphics [width=0.45\textwidth, height=0.3\textheight] { figs/minimalperfecthash-ph-mph.ps}
2005-09-27 18:11:25 +03:00
% figure caption is below the figure
\caption { (a) Perfect hash function\quad (b) Minimal perfect hash function}
\label { fig:minimalperfecthash-ph-mph}
2005-09-29 00:37:19 +03:00
\end { figure}
2005-10-03 00:28:13 +03:00
A aplicabilidade pr\' atica das FHPMs e consequentemente dos algoritmos utilizados para ger\' a-las est\' a diretamente relacionada com as seguintes m\' etricas:
2005-09-29 00:37:19 +03:00
\begin { enumerate}
2005-10-03 00:28:13 +03:00
\item Quantidade de tempo gasto para encontrar uma FHPM $ h $ .
2005-09-29 00:37:19 +03:00
\item Quantidade de mem\' oria exigida para encontrar $ h $ .
2005-10-03 00:28:13 +03:00
\item Quantidade de tempo necess\' ario para avaliar ou computar $ h $ para uma dada chave.
\item Quantidade de mem\' oria exigida para armazenar a descri\c { c} \~ ao da fun\c { c} \~ ao $ h $ .
\item Escalabilidade dos algoritmos com o crescimento de $ S $ .
2005-09-29 00:37:19 +03:00
\end { enumerate}
2005-09-27 18:11:25 +03:00
2005-10-03 00:28:13 +03:00
Neste artigo apresentamos ...