Storing a Sparse Table with 0(1) Worst Case Access Time
Journal of the ACM (JACM)
An optimal algorithm for generating minimal perfect hash functions
Information Processing Letters
Dynamic Perfect Hashing: Upper and Lower Bounds
SIAM Journal on Computing
A reliable randomized algorithm for the closest-pair problem
Journal of Algorithms
Even strongly universal hashing is pretty fast
SODA '00 Proceedings of the eleventh annual ACM-SIAM symposium on Discrete algorithms
Comparing integer data structures for 32- and 64-bit keys
Journal of Experimental Algorithmics (JEA)
Hi-index | 0.01 |
We describe experimental results on an implementation of a dynamic dictionary. The basis of our implementation is “dynamic perfect hashing” as described by Dietzfelbinger et al. (SIAM J. Computing 23, 1994, pp. 738--761), an extension of the storage scheme proposed by Fredman et al. (J. ACM 31, 1984, pp. 538--544). At the top level, a hash function is used to partition the keys to be stored into several sets. On the second level, there is a perfect hash function for each of these sets. This technique guarantees O(1) worst-case time for lookup and expected O(1) amortized time for insertion and deletion, while only linear space is required. We study the practical performance of dynamic perfect hashing and describe improvements of the basic scheme. The focus is on the choice of the hash function (both for integer and string keys), on the efficiency of rehashing, on the handling of small buckets, and on the space requirements of the implementation.