Optimal Non-Adaptive Cell Probe Dictionaries and Hashing111This paper is a merge and revision of two previous reports [PY20] and [LPPZ23].
Abstract
We present a simple and provably optimal non-adaptive cell probe data structure for the static dictionary problem. Our data structure supports storing a set of key-value pairs from using words of space and answering key lookup queries in non-adaptive probes. This generalizes a solution to the membership problem (i.e., where no values are associated with keys) due to Buhrman et al. We also present matching lower bounds for the non-adaptive static membership problem in the deterministic setting. Our lower bound implies that both our dictionary algorithm and the preceding membership algorithm are optimal, and in particular that there is an inherent complexity gap in these problems between no adaptivity and one round of adaptivity (with which hashing-based algorithms solve these problems in constant time).
Using the ideas underlying our data structure, we also obtain the first implementation of a -wise independent family of hash functions with optimal evaluation time in the cell probe model.
1 Introduction
The static membership problem is arguably the simplest and most fundamental data structure problem. In this problem, the input is a set of integer keys and the goal is to store them in a data structure, such that given a query key , the data structure supports reporting whether .
The classic solution to the membership problem is to use hashing, suggested as early as by Tarjan-Yao [TY79]. The textbook hashing-based solution is hashing with chaining, where one draws a random hash function and creates an array with entries. Each entry of the array stores a linked list of all keys such that . To answer a membership query for , we compute and scan the linked list in entry . If is drawn from a universal family of hash functions, the time to answer queries is in expectation. The expected query time can be made worst case using e.g. perfect hashing [FKS84] or (static) Cuckoo hashing [Pag01, PR01]. All of the above solutions may also be easily extended to solve the dictionary problem in which the data to be stored is a set of key-value pairs . Upon a query , the data structure must return the value such that , or report that no such pair exists.
1.1 Adaptivity and Membership
A common feature of all hashing based solutions to the membership and dictionary problem, is that they are adaptive. That is, the memory locations they access depend heavily on the random choice of hash functions. In particular, to answer a query we first need to read the description of the chosen hash function, and only based on that we can compute the next memory cells we should access. A non-adaptive data structure has the property that the memory cells to access on a query are completely determined from itself. Non-adaptive data structures are studied for several reasons, a common type being computational settings in which interaction with memory is either expensive or limited. Non-adaptive data structures allow retrieving all necessary memory cells in parallel when answering a query, circumventing any memory-access related latency. This property also allows simpler implementation of the data structure under cryptographic settings, such as encrypted computation with Fully Homomorphic Encryption (see [Yeo23] for more details on the importance of non-adaptive querying in cryptography).
In this work, we present a non-adaptive dictionary algorithm in which a query needs to only access logarithmically many memory cells, and also prove a matching lower bound (which holds even for the static membership problem).
Unlike the textbook solution of hashing with chaining, which requires many rounds of adaptivity due to scanning a linked list, other solutions (e.g., cuckoo hashing) only need one round of adaptivity (i.e., first they read the description of the hash function, and then read memory cells that are determined only by the query and the hash function). Our results imply that a single round of adaptivity is necessary and sufficient to reduce the query time from super-constant to constant.
The Cell Probe Model. The cell probe model by Yao [Yao81] is the de-facto model for proving data structure lower bounds. In this model, a data structure consists of a memory of cells with integer addresses , each storing bits. Computation is free of charge in this model and only the number of memory cells accessed/probed when answering a query counts towards the query time. A lower bound in the cell probe model thus applies to any data structure implementable in the classic word-RAM upper bound model.
Previous Work. Buhrman, Miltersen, Radhakrishnan and Venkatesh [BMRV02] showed that it is possible to store a data structure of size bits such that membership queries can be answered in non-adaptive bit probes (i.e., the cell probe model with ). This of course implies a membership data structure with probes in the cell probe model, but it is not clear how to extend it to solve the dictionary problem with the same time and space complexity. Furthermore, the data structure by Buhrman et al. is non-explicit in the sense that they give a randomized argument showing existence of an efficient data structure. Buhrman et al. also show a lower bound of bit probes. In the setting where is polynomially smaller than and is this matches the upper bound up to constant factors (but it is possible that a tighter analysis can be made). Alon and Feige [AF09] as well as Garg and Radhakrishnan [GR17] studied space lower bounds for dictionary data structures with three non-adaptive probes in the bit probe model. The best lower bound shows that space of is necessary.
Berger et al. [BHP+06] study the non-adaptive dictionary problem, but in the I/O model, i.e., a single memory access can retrieve keys or values. In the Word RAM model this corresponds to having word size . This means that their strongest results for the dictionary problem would require word size — as we will see later, our results hold for word size .
Brody et al. [BL15] present a dynamic non-adaptive data structure for the predecessor search problem, allowing insertions and deletions of keys while supporting predecessor queries in probes. A predecessor query for a key must return the largest such that . Such a data structure clearly also supports membership queries. However, their data structure critically uses memory. For the membership problem in this setting, a bit-vector with constant time operations suffices. Brody et al. [BL15] however prove that for dynamic data structures for predecessor search, this query time is optimal even with space. Boninger et al. [BBK17] as well as Ramamoorthy and Rao [RR18] also study lower bounds for the non-adaptive dynamic predecessor problem. Relating their results to the non-adaptive static dictionary problem, the two works show query time must be and respectively in the cell probe model. To our knowledge, these are the highest known lower bounds for the static, non-adaptive dictionary problem.
This still leaves open the problem of obtaining an optimal static and non-adaptive membership data structure, in both the word-RAM model, and in the cell probe model.
Our Contribution. In this work, we present a simple and optimal non-adaptive cell probe data structure for the dictionary and membership problem:
Theorem 1.
For any , there is a non-adaptive static cell probe data structure for the dictionary problem, storing key-value pairs using memory cells of bits and answering queries in probes.
As stated in the theorem, our data structure is implemented in the cell probe model, meaning that we treat computation as free of charge. Implementing the data structure in the more standard upper bound model, the word-RAM, would require the construction of a certain type of explicit bipartite expander graph.
Compared to prior works (such as [BMRV02, BHP+06]), our construction shows that we may rely on a significantly weaker expansion argument. Past constructions required an orientability argument to assign memory to keys that required expanders with a strong unique-neighbors property. In contrast, our construction utilizes weaker non-contractive expanders to argue that there is sufficient capacity to accommodate storage of all keys (using Hall’s theorem). This directly translates to a logarithmic improvement in space usage. Namely, we only require the existence of -left-regular bipartite graphs with expansion factor one; however our bipartite graph is highly imbalanced. Our expansion property corresponds to an imbalanced disperser, and therefore is well-studied and has other applications (e.g., [GUV09]). Such dispersers exist by a counting argument, but it remains an open problem to obtain explicit constructions. A recent work [BZ22] constructs explicit expanders that may be plugged into our construction to obtain an explicit RAM upper bound. However, this incurs a poly-logarithmic blowup and obtaining a tight explicit RAM upper bound would require better explicit expanders.
We also present a matching lower bound for the non-adaptive dictionary and membership problem in the cell probe model:
Theorem 2.
For any non-adaptive static cell probe data structure for the dictionary problem storing key-value pairs using memory cells of bits and answering queries in probes must satisfy
Our lower bound shows that adaptivity is crucial to obtain constant query time. In particular, non-adaptive data structures require super-constant query time while well-known constructions with adaptivity (such as cuckoo hashing) can obtain constant query time.
1.2 Hash Functions with High Independence
When using hash functions in the design of data structures and algorithms, it is often assumed for simplicity of analysis that truly random hash functions are available. Such a hash function maps each key independently to a uniform random value in . Or said differently, when drawing the random hash function , we choose a uniform random function in the family of hash functions consisting of all (deterministic) functions from to . Implementing such a hash function in practice is often infeasible as it requires random bits and thus the storage requirement may completely dominate that of any data structure making use of the hash function.
Fortunately, much weaker hash functions suffice in many applications. The simplest property of a family of hash functions , is that it is universal [CW77]. A universal family of hash functions has the property that for a uniform random , it holds for every pair of keys that . Universal hashing for instance suffices for implementing hashing with chaining with expected constant time membership queries, but is not sufficient for implementing Cuckoo hashing [CK09]. The next step up from universal hashing is the notion of -wise independent hashing. A family of hash functions is -wise independent if, for drawn uniformly from , it holds for any set of distinct keys that are independent and uniformly random (or nearly uniformly random). The prototypical example of an -wise independent family of hash function (with nearly uniform hash values) is
where is any prime greater than or equal to . That is, to draw a hash function from , we sample uniformly and independently in and let be the evaluation of the polynomial .222Technically, this hash function is only approximately -wise independent, in the sense that the hash values of any keys are independent, but only approximately uniform random. Clearly, the evaluation time of this hash function is . Whether it is possible to implement -wise independent hash functions with faster evaluation time has been the focus of much research. On the lower bound side, Siegel [Sie89] proved that any implementation of an -wise independent hash function using memory cells of bits, must probe at least memory cells to evaluate . The hash function above matches the second term in the minimum. For the first term, the result that comes closest is a recursive form of tabulation hashing by Christiani et al. [CPT15] that gives an -wise independent family of hash functions that can be implemented using space and evaluation time for any . Rewriting the space bound gives and thus . This is about a factor away from the lower bound of Siegel in terms of the query time . This algorithm is adaptive and requires as they need .
Our Contribution. Designing an optimal -wise independent family of hash functions thus remains open, with or without adaptivity. In this work, we show how to implement such a function in the cell probe model (where computation is free):
Theorem 3.
For any and , there is a non-adaptive static cell probe data structure for storing an -wise independent hash function using memory cells of bits and answering evaluation queries in probes.
We remark that Siegel’s lower bound holds in the cell probe model, and thus our data structure is optimal. Furthermore, Siegel’s lower bound holds also for adaptive data structures, whereas ours is even non-adaptive. Compared to the work of Christiani et al., we have a faster evaluation time and only require . The downside is of course that our solution is only implemented in the cell probe model. Implementing our hash function in the word-RAM model would require the same type of explicit expander graph as for implementing our non-adaptive dictionary (and a bit more), further motivating the study of such expanders (see Section 5).
To compare with previous techniques, we note that the majority of prior works (such as [PP03, DW03, CPT15]) consider adaptive constructions. The original work of Siegel [Sie89] did not directly study non-adaptivity. However, Lemma 2 in [Sie89] can be used to construct a non-adaptive construction in the cell probe model using a suitable expander graph. Our construction leads to a better (and tight) upper bound in addition to being simpler by replacing polynomials with a simple sum of memory cells.
2 Non-Adaptive Dictionaries
We consider the dictionary problem where we are to preprocess a set of key-value pairs from into a data structure, such that given an , we can quickly return the corresponding value such that or conclude that no such exists. We assume that any for any key , there is at most one value such that .
We focus on non-adaptive data structures in the cell probe model. Non-adaptive means that the memory cells probed on a query depends only on . We assume and that the cell size is .
As mentioned in Section 1, we base our data structure on expander graphs. We recall the standard definitions of bipartite expanders in the following:
Definition 1.
A -bipartite graph with left vertices, right vertices and left degree is specified by a function , where denotes the neighbor of . For a set , we write to denote its neighbors .
Definition 2.
A bipartite graph is a -expander if for every set with , we have . It is a -expander if it is a -expander for every .
The literature on bipartite expanders, see e.g. [GUV09], is focused on graphs with near-optimal expansion , i.e. very close to the largest possible expansion with degree . However, for our non-adaptive dictionaries, we need significantly less expansion. We call such expanders non-contractive and define them as follows:
Definition 3.
A bipartite graph is a -non-contractive expander if it is a -expander.
Said in words, a bipartite is a -non-contractive expander, if every set of at most left-nodes has at least neighbors.
Before presenting our dictionary, we present the second ingredient in our dictionary, namely Hall’s marriage theorem. For a bipartite graph with left-vertices , right-vertices and edges , an -perfect matching is a subset of disjoint edges from such that every vertex in has an edge. Hall’s theorem then gives the following:
Theorem 4 (Hall’s Marriage Theorem).
A bipartite graph with left-vertices and right-vertices has an -perfect matching if and only if for every subset , the set of neighbors satisfies .
With these ingredients, we are ready to present our dictionary.
Dictionary from Non-Contractive Expander. Given a set of key-value pairs and a space budget of memory cells, we build a data structure as follows:
Construction. Initialize memory cells and let be a -non-contractive expander for some . Construct the bipartite graph with a left-vertex for each and a right vertex for each of the memory cells. Add an edge from to each of the nodes for . Note that this is a subgraph of the bipartite -non-contractive expander corresponding to . It follows that for every subset , we have . We now invoke Hall’s Marriage Theorem (Theorem 4) to conclude the existence of an -perfect matching on . Let denote the edges of the matching. For each such edge , we store the key-value pair in the memory cell of address . For all remaining memory cells, we store a special Nil value.
Querying. Given a query , we query the memory cells of address for . If any of them stores a pair , we return . Otherwise, we return Nil to indicate that no pair exists in .
Analysis. Correctness follows immediately from Hall’s Marriage Theorem. The space usage is memory cells of bits and the query time is . The required perfect matching can be computed in times after performing queries to obtain the edges of the subgraph induced by the left-vertices . We thus have the following result:
Lemma 1.
Given a bipartite -non-contractive expander , there is a non-adaptive dictionary for storing a set of key-value pairs using cells of bits and answering queries in evaluations of and memory probes. The dictionary can be constructed in time plus evaluations of .
Lemma 1 thus gives us a way of obtaining a non-adaptive dictionary from an expander. What remains is to give expanders with good parameters. As mentioned, we do not have optimal explicit constructions of such expanders. However, for the cell probe model where computation is free of charge, we merely need the existence of and not that it is efficiently computable. Concretely, a probabilistic argument gives the following:
Lemma 2.
For any and any , there exists a (non-explicit) -non-contractive expander with .
Non-Explicit Expander. In the following, we prove Lemma 2. For this, consider drawing uniformly among all such functions/expanders. That is, we let be uniform random and independently chosen in for each and . For each with and each with , define an event that occurs if . We have that is a -non-contractive expander if none of the events occur. For a fixed , we have and thus a union bound implies
For and , this is at most and thus proves Lemma 2.
3 Hashing
In this section, we show how to construct a -wise independent hash function with fast evaluation in the cell probe model. As a data structure problem, such a data structure has a query for each . Upon construction, the data structure draws a random seed and initializes memory cells of bits. The data structure satisfies that the values are uniform random in and -wise independent. Here the randomness is over the choice of random seed.
Similarly to our dictionary, our hashing data structures makes use of a bipartite expander. However, we need a (very) slightly stronger expansion property. Concretely, we assume the availability of a -expander (rather than a -expander). The expander thus satisfies that for any with , we have .
In addition to the -expander , we also need another function assigning weights to the edges of . We say that makes useful if the following holds: Construct from the matrix such that entry equals
We have that is useful if every subset of rows in is a linearly independent set of vector over . We show later that for any -expander , there exists at least one making useful:
Lemma 3.
If is a -expander, then for , there exists a such that is useful.
In the cell probe model, we may assume that and are free to evaluate and are known to a data structure since computation is free of charge. With such a pair we may now construct our data structure for -wise independent hashing.
Construction. Initialize the data structure by filling each of the memory cells by uniformly and independently chosen values in (the seed). Let denote the values in the memory cells.
Querying. To evaluate for an , compute and return the value
Analysis. Observe that the value returned on the query equals
But this is the same as , i.e. the inner product of the ’th row of with the randomly drawn vector . Since the rows of are -wise independent and is drawn uniformly, we conclude that the query values are -wise independent as well. The query time is probes and the space usage is cells of bits. We thus conclude
Lemma 4.
Given a bipartite expander and a , there is a cell probe data structure for evaluating an -wise independent hash function using cells of bits and answering queries in cell probes.
An argument similar to the proof of Lemma 2, we show the existence of the desired expanders:
Lemma 5.
For any and any , there exists a (non-explicit) expander with .
Proof.
(Lemma 3) We give a probabilistic argument. Let be a -expander. Draw by letting be chosen uniformly and independently from . Define an event for every with ( gives the number of non-zeros) that occurs if . We have that is useful if none of the events occur.
Consider one of these events . Since is a -expander, we have that the set of rows in corresponding to non-zero coefficients of have at least distinct columns containing an entry that is chosen uniformly at random and independently from . We thus have . A union bound finally implies:
For , this is less than , which concludes the proof of Lemma 3. ∎
Lastly, we prove Lemma 5.
4 Lower Bound for Non-Adaptive Dictionaries
In this section, we prove cell probe lower bounds for non-adaptive dictionaries supporting membership queries (is in the input set ?).
We adapt the “cell-sampling” technique from [PTW10]. Roughly speaking, this proof technique shows that there exists a not-too-large subset of cells such that a large number of queries will only probe cells in (we say such queries are resolved by ) assuming that the query time of the cell probe data structure is impossibly small. For adaptive and static data structures, it can be observed that the subset of cells will be different for varying choices of the input key-value pairs as the probed cells during queries can depend on the memory representation.
For our non-adaptive lower bound, we make the critical observation that the subset of sampled cells need not depend on the input key-value pairs. In particular, non-adaptive queries must choose the probed cells without any knowledge of the memory representation. As a result, we are able to separate the adaptive and non-adaptive setting for the dictionary problem and successfully prove a matching lower bound to our constructions as follows:
Proof.
(Theorem 2) Assume the space usage of a data structure is cells of bits each. We assume for the proof that . For smaller space usage, we can always pad with dummy memory cells.
For a query , let denote the indices of the memory cells probed on query .
By averaging, for any with , there is a set of memory cells such that queries have . Fix such a set . Assume for the sake of contradiction that
Then we have
Letting , this is at least .
Let denote the set of queries with . Notice that the memory cells in serve as a membership data structure for the universe and inputs of size . Hence the number of bits in must be at least . But the cells only have bits, a contradiction. We thus conclude:
∎
5 Conclusion and Open Problems
In this work, we presented optimal non-adaptive cell probe dictionaries and data structures for evaluating -wise independent hash functions. Our upper bounds rely on the existence of bipartite expanders with quite weak expansion properties, namely and -bipartite expanders. If efficient explicit constructions of such expanders were to be developed, they would immediately allow us to implement our dictionary in the standard word-RAM model. They would also go a long way towards a word-RAM implementation of -wise independent hashing. We thus view our results as strong motivation for further research into such expanders. In personal communication with Bruno Bauwens and Marius Zimand, they have given a preliminary proof that an exciting explicit construction with and exists, thus taking a first step towards an optimal word-RAM implementation.
Next, we remark that our non-explicit constructions of and expanders are essentially optimal. Concretely, a result of Radhakrishnan and Ta-Shma [RT00] shows that any -bipartite graph with expansion requires . In more detail, Theorem 1.5 (a) of [RT00] proves that if is a -bipartite graph that is an disperser (every set of left-nodes has at least right-nodes), then for , the left-degree, , is . Since a -non-contractive expander is also an -disperser with , the lower bound follows.
Finally, we also observe a near-equivalence between non-adaptive data structures for evaluating -wise independent hash functions and non-constructive bipartite expanders. Concretely, assume we have a word-RAM data structure for evaluating an -wise independent hash function from to and assume for simplicity. If the data structure uses space and answers queries in time (including memory lookups and computation), then we may obtain an explicit expander from the data structure. Concretely, we form a right node for every memory cell, a left node for every query and an edge corresponding to each cell probed on a query. Now observe that if there was a set of left nodes with , then from those memory cells, the data structure has to return independent and uniform random values in . But the cells only have bits, i.e. a contradiction. Hence the resulting expander is non-contractive. If the query time of the data structure was , we may obtain the edges incident to a left node simply by running the corresponding query algorithm. Since the query algorithm runs in time, it clearly accesses at most right nodes and computing the nodes to access can also be done in time. A similar connection was observed by [CPT15].
References
- [AF09] Noga Alon and Uriel Feige. On the power of two, three and four probes. In Proceedings of the twentieth annual ACM-SIAM symposium on Discrete algorithms, pages 346–354. SIAM, 2009.
- [BBK17] Joe Boninger, Joshua Brody, and Owen Kephart. Non-adaptive data structure bounds for dynamic predecessor search. In 37th IARCS Annual Conference on Foundations of Software Technology and Theoretical Computer Science, FSTTCS 2017, December 11-15, 2017, Kanpur, India, volume 93 of LIPIcs, pages 20:1–20:12, 2017.
- [BHP+06] Mette Berger, Esben Rune Hansen, Rasmus Pagh, Mihai Pătraşcu, Milan Ruzic, and Peter Tiedemann. Deterministic load balancing and dictionaries in the parallel disk model. In Phillip B. Gibbons and Uzi Vishkin, editors, SPAA 2006: Proceedings of the 18th Annual ACM Symposium on Parallelism in Algorithms and Architectures, Cambridge, Massachusetts, USA, July 30 - August 2, 2006, pages 299–307. ACM, 2006.
- [BL15] Joshua Brody and Kasper Green Larsen. Adapt or die: Polynomial lower bounds for non-adaptive dynamic data structures. Theory Comput., 11:471–489, 2015.
- [BMRV02] H. Buhrman, P. B. Miltersen, J. Radhakrishnan, and S. Venkatesh. Are bitvectors optimal? SIAM Journal on Computing, 31(6):1723–1744, 2002.
- [BZ22] Bruno Bauwens and Marius Zimand. Hall-type theorems for fast dynamic matching and applications. arXiv preprint arXiv:2204.01936, 2022.
- [CK09] Jeffrey Cohen and Daniel M. Kane. Bounds on the independence required for cuckoo hashing. Manuscript, 2009.
- [CPT15] Tobias Christiani, Rasmus Pagh, and Mikkel Thorup. From independence to expansion and back again. In Rocco A. Servedio and Ronitt Rubinfeld, editors, Proceedings of the Forty-Seventh Annual ACM on Symposium on Theory of Computing, STOC 2015, Portland, OR, USA, June 14-17, 2015, pages 813–820. ACM, 2015.
- [CW77] J Lawrence Carter and Mark N Wegman. Universal classes of hash functions. In Proceedings of the ninth annual ACM symposium on Theory of computing, pages 106–112, 1977.
- [DW03] Martin Dietzfelbinger and Philipp Woelfel. Almost random graphs with simple hash functions. In Proceedings of the thirty-fifth Annual ACM Symposium on Theory of Computing, pages 629–638, 2003.
- [FKS84] Michael L. Fredman, János Komlós, and Endre Szemerédi. Storing a sparse table with 0(1) worst case access time. J. ACM, 31(3):538–544, 1984.
- [GR17] Mohit Garg and Jaikumar Radhakrishnan. Set membership with non-adaptive bit probes. In 34th Symposium on Theoretical Aspects of Computer Science (STACS 2017). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, 2017.
- [GUV09] Venkatesan Guruswami, Christopher Umans, and Salil P. Vadhan. Unbalanced expanders and randomness extractors from parvaresh-vardy codes. J. ACM, 56(4):20:1–20:34, 2009.
- [LPPZ23] Kasper Green Larsen, Rasmus Pagh, Toniann Pitassi, and Or Zamir. Optimal non-adaptive cell probe dictionaries and hashing. arXiv preprint arXiv:2308.16042, 2023.
- [Pag01] Rasmus Pagh. On the cell probe complexity of membership and perfect hashing. In Proceedings on 33rd Annual ACM Symposium on Theory of Computing, July 6-8, 2001, Heraklion, Crete, Greece, pages 425–432. ACM, 2001.
- [PP03] Anna Pagh and Rasmus Pagh. Uniform hashing in constant time and linear space. In Proceedings of the thirty-fifth annual ACM symposium on Theory of computing, pages 622–628, 2003.
- [PR01] Rasmus Pagh and Flemming Friche Rodler. Cuckoo hashing. In Friedhelm Meyer auf der Heide, editor, Algorithms - ESA 2001, 9th Annual European Symposium, Aarhus, Denmark, August 28-31, 2001, Proceedings, volume 2161 of Lecture Notes in Computer Science, pages 121–133. Springer, 2001.
- [PTW10] Rina Panigrahy, Kunal Talwar, and Udi Wieder. Lower bounds on near neighbor search via metric expansion. In 2010 IEEE 51st Annual Symposium on Foundations of Computer Science, pages 805–814. IEEE, 2010.
- [PY20] Giuseppe Persiano and Kevin Yeo. Tight static lower bounds for non-adaptive data structures. CoRR, abs/2001.05053, 2020.
- [RR18] Sivaramakrishnan Natarajan Ramamoorthy and Anup Rao. Lower bounds on non-adaptive data structures maintaining sets of numbers, from sunflowers. In 33rd Computational Complexity Conference, 2018.
- [RT00] Jaikumar Radhakrishnan and Amnon Ta-Shma. Bounds for dispersers, extractors, and depth-two superconcentrators. SIAM J. Discret. Math., 13(1):2–24, 2000.
- [Sie89] Alan Siegel. On universal classes of fast high performance hash functions, their time-space tradeoff, and their applications (extended abstract). In 30th Annual Symposium on Foundations of Computer Science, Research Triangle Park, North Carolina, USA, 30 October - 1 November 1989, pages 20–25. IEEE Computer Society, 1989.
- [TY79] Robert Endre Tarjan and Andrew Chi-Chih Yao. Storing a sparse table. Communications of the ACM, 22(11):606–611, 1979.
- [Yao81] Andrew Chi-Chih Yao. Should tables be sorted? J. ACM, 28(3):615–628, 1981.
- [Yeo23] Kevin Yeo. Cuckoo hashing in cryptography: Optimal parameters, robustness and applications. In Annual International Cryptology Conference, pages 197–230. Springer, 2023.