Remove ads
Data structure for approximate set membership From Wikipedia, the free encyclopedia
A cuckoo filter is a space-efficient probabilistic data structure that is used to test whether an element is a member of a set, like a Bloom filter does. False positive matches are possible, but false negatives are not – in other words, a query returns either "possibly in set" or "definitely not in set". A cuckoo filter can also delete existing items, which is not supported by Bloom filters. In addition, for applications that store many items and target moderately low false positive rates, cuckoo filters can achieve lower space overhead than space-optimized Bloom filters.[1]
Cuckoo filters were first described in 2014.[2]
A cuckoo filter uses a hash table based on cuckoo hashing to store the fingerprints of items.[2] The data structure is broken into buckets of some size . To insert the fingerprint of an item , one first computes two potential buckets and where could go. These buckets are calculated using the formula
Note that, due to the symmetry of the XOR operation, one can compute from , and from . As defined above, ; it follows that . These properties are what make it possible to store the fingerprints with cuckoo hashing.
The fingerprint of is placed into one of buckets and . If the buckets are full, then one of the fingerprints in the bucket is evicted using cuckoo hashing, and placed into the other bucket where it can go. If that bucket, in turn, is also full, then that may trigger another eviction, etc.
The hash table can achieve both high utilization (thanks to cuckoo hashing), and compactness because only fingerprints are stored. Lookup and delete operations of a cuckoo filter are straightforward.[2]
There are a maximum of two buckets to check by and . If found, the appropriate lookup or delete operation can be performed in time. Often, in practice, is a constant.
In order for the hash table to offer theoretical guarantees, the fingerprint size must be at least bits.[2][3][4] Subject to this constraint, cuckoo filters guarantee a false-positive rate of at most .[2]
A cuckoo filter is similar to a Bloom filter in that they both are fast and compact, and they may both return false positives as answers to set-membership queries:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.