Hash Tables with Worst-Case O(1) Access -- Cuckoo Hashing | Lei Jiang Coding



Hash Tables with Worst-Case O(1) Access — Cuckoo Hashing | Lei Jiang Coding

Power of two choices

If N items are randomly tossed into N bins, the size of the largest bin is expected to be Θ(loglogN) a significantly lower number

 Cuckoo Hashing

In cuckoo hashing, suppose  N items and maintain two tables, each more than half empty, two independent hash functions that can assign each item to a position in each table. Based on the randomly chosen hash functions, one item can either position i in table 1 or position j in table 2. Immediately, this implies that a search in a cuckoo hash table requires at most two table accesses, and a remove is trivial, once the item is located (lazy deletion is not needed now!).

The cuckoo hashing algorithm is simple: To insert a new item,x, first make sure it is not already there.use the first hash function, and if the (first) table location is empty, the item can be placed.

The probability that a single insertion would require a new set of hash functions can be made to be O(1/N^2); the new hash functions themselves generate N more insertions to rebuild the table,but even so,this means the rebuilding cost is minimal.

Instead of two tables, we can use a higher number of tables, such as 3 or 4. While this increases the cost of a lookup, it also drastically increases the theoretical space utilization.


Read full article from Hash Tables with Worst-Case O(1) Access — Cuckoo Hashing | Lei Jiang Coding


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts