@MISC{Dietzfelbinger05andblocked, author = {Martin Dietzfelbinger and Christoph Weidling}, title = {and Blocked Cuckoo Hashing}, year = {2005} }

Share

OpenURL

Abstract

We study a particular aspect of the balanced allocation paradigm (also known as the “twochoices paradigm”): constant sized bins, packed as tightly as possible. Let d ≥ 1 be fixed, and assume there are m bins of capacity d each. To each of n ≤ dm balls two possible bins are assigned at random. How close can dm/n = 1 + ε be to 1 so that with high probability each ball can be put into one of the two bins assigned to it, without any bin overflowing? We show that ε> (2/e) d−1 is sufficient. If a new ball arrives with two new randomly assigned bins, we wish to rearrange some of the balls already present in order to accommodate the new ball. We show that on average it takes constant time to rearrange the balls to achieve this, for ε> γ · β d, for some constants γ> 0, β < 1. An alternative way to describe the problem is in data structure language. Generalizing cuckoo hashing (Pagh and Rodler, 2001), we consider a hash table with m positions, each representing a bucket of capacity d ≥ 1. Keys are assigned to buckets by two fully random hash functions. How many keys can be placed in these bins, if key x may go to bin h1(x) or to bin h2(x)? Our results lead to an implementation of a dynamic dictionary that accommodates n keys in m = (1 + ε)n/d buckets of size d = O(log(1/ε)), so that key x resides in bucket h1(x) or h2(x). If d ≥ 1 + 3.26 · ln(1/ε), then for a lookup operation only two hash functions have to be evaluated and two contiguous segments of d memory cells have to be inspected. The expected time for inserting a new key is constant, for some d = O(log(1/ε)).