Theory of Computing
-------------------
Title : Why Simple Hash Functions Work: Exploiting the Entropy in a Data Stream
Authors : Kai-Min Chung, Michael Mitzenmacher, and Salil Vadhan
Volume : 9
Number : 30
Pages : 897-945
URL : https://theoryofcomputing.org/articles/v009a030
Abstract
--------
Hashing is fundamental to many algorithms and data structures
widely used in practice. For the theoretical analysis of hashing,
there have been two main approaches. First, one can assume that the
hash function is truly random, mapping each data item independently
and uniformly to the range. This idealized model is unrealistic
because a truly random hash function requires an exponential number
of bits (in the length of a data item) to describe. Alternatively,
one can provide rigorous bounds on performance when explicit
families of hash functions are used, such as 2-universal or
$O(1)$-wise independent families. For such families, performance
guarantees are often noticeably weaker than for ideal hashing.
In practice, however, it is commonly observed that simple hash
functions, including 2-universal hash functions, perform as predicted
by the idealized analysis for truly random hash functions. In this
paper, we try to explain this phenomenon. We demonstrate that the
strong performance of universal hash functions in practice can arise
naturally from a combination of the randomness of the hash function
and the data. Specifically, following the large body of literature on
random sources and randomness extraction, we model the data as coming
from a "block source," whereby each new data item has some "entropy"
given the previous ones. As long as the R\'enyi entropy per data item
is sufficiently large, it turns out that the performance when choosing
a hash function from a 2-universal family is essentially the same as
for a truly random hash function. We describe results for several
sample applications, including linear probing, chained hashing,
balanced allocations, and Bloom filters.
Towards developing our results, we prove tight bounds for hashing
block sources, determining the entropy required per block for the
distribution of hashed values to be close to uniformly distributed.
The paper arose by merging the following two conference papers:
"Why Simple Hash Functions Work: Exploiting the Entropy in a Data Stream"
by M.M. and S.V. [Proc. 19th Ann. ACM-SIAM Symposium on Discrete Algorithms
(SODA), pages 746-755, 2008] (http://dl.acm.org/citation.cfm?id=1347164),
and "Tight Bounds for Hashing Block Sources" by K-M.C. [Proc. 11th
International Workshop, APPROX 2008, and 12th International Workshop,
RANDOM 2008 on Approximation, Randomization and Combinatorial
Optimization: Algorithms and Techniques, pages 357 - 370, 2008]
(http://dl2.acm.org/citation.cfm?id=1429822).