How it works
2-choice hashing utilizes two hash functions ''h''1(''x'') and ''h''2(''x'') which work as hash functions are expected to work (i.e. mapping integers from the universe into a specified range). The two hash functions should be independent and have no correlation to each other. Having two hash functions allows any key ''x'' to have up to two potential locations to be stored based on the values of the respective outputs, ''h''1(''x'') and ''h''2(''x''). It is important to note that, although there are two hash functions, there is only one table; both hash functions map to locations on that table.Implementation
The most important functions of the hashing implementation in this case are insertion and search. * Insertion: When inserting the values of both hash functions are computed for the to-be-inserted object. The object is then placed in the bucket which contains fewer objects. If the buckets are equal in size, the default location is the ''h''1(''x'') value. * Search: Effective searches are done by looking in both buckets (the bucket locations to which ''h''1(''x'') and ''h''2(''x'') mapped) for the desired value.Performance
As is true with all hash tables, the performance is based on the largest bucket. Although there are instances where bucket sizes happen to be large based on the values and the hash functions used, this is rare. Having two hash functions and, therefore, two possible locations for any one value, makes the possibility of large buckets even more unlikely to happen. The expected bucket size while using 2-choice hashing is: . This improvement is due to the randomized concept known as TheReferences
Further reading
* *{{citation , first1=Yossi , last1=Azar , first2=Andrei Z. , last2=Broder , first3=Anna R. , last3=Karlin , first4=Eli , last4=Upfal , title=Balanced Allocations , journal=SIAM J. Comput. , volume=29 , issue=1 , pages=180–200 , date=1999 , doi=10.1137/S0097539795288490 , url=https://cs.brown.edu/people/eupfal/papers/SICOMP29.pdf Hashing