cs 225
play

CS 225 Data Structures Oc October 26 26 Ha Hashing G G Carl - PowerPoint PPT Presentation

CS 225 Data Structures Oc October 26 26 Ha Hashing G G Carl Evans What if ( ! ) is not fast enough? Do you feel lucky? A H A Hash T Table b based D Dictionary Client Code: 1 Dictionary<KeyType,


  1. CS 225 Data Structures Oc October 26 26 – Ha Hashing G G Carl Evans

  2. What if 𝑃(𝑚𝑝𝑕 ! 𝑜) is not fast enough? Do you feel lucky?

  3. A H A Hash T Table b based D Dictionary Client Code: 1 Dictionary<KeyType, ValueType> d; 2 d[k] = v; A Hash Table consists of three things: 1. A hash function, f(k) 2. An array 3. Something to handle chaos when it occurs!

  4. A P A Perf rfect H Hash F Function (Angrave, CS 241) Key Value (Beckman, CS 421) (Challen, CS 125) Hash function (Davis, CS 101) (Evans, CS 126) (Fagen-Ulmschneider, CS 107) (Gunter, CS 422) (Herman, CS 233)

  5. Ha Hash h Func Function Our hash function consists of two parts: • A hash : • A compression: Choosing a good hash function is tricky… • Don’t create your own (yet*) • Very smart people have created very bad hash functions

  6. Ha Hash h Func Function Characteristics of a good hash function: 1. Computation Time: 2. Deterministic: 3. Satisfy the SUHA:

  7. Gen Gener eral al Purpose e Has ash Fu Functi tion Keyspaces … Easy to create if: |KeySpace| N ~

  8. Gen Gener eral al Purpose e Has ash Fu Functi tion Keyspaces … Easy to create if: |KeySpace| N ~ Difficult to Create: …

  9. Gen Gener eral al Purpose e Has ash Fu Functi tion Keyspaces … Easy to create if: |KeySpace| N ~ Difficult to Create: …

  10. Ha Hash h Func Function In CS 225, we focus on general purpose hash functions. Other hash functions exists with different properties (eg: cryptographic hash functions)

  11. (Example of open hashing) Collision Col on H Handling: Se : Separate Ch Chaining S = { 16, 8, 4, 13, 29, 11, 22 } |S| = n h(k) = k % 7 |Array| = N 0 1 2 3 4 5 6 Worst Case SUHA Insert Remove/Find

  12. (Example of closed hashing) Collision Col on H Handling: P : Prob obe-ba base sed d Ha Hashi shing ng S = { 16, 8, 4, 13, 29, 11, 22 } |S| = n h(k) = k % 7 |Array| = N 0 1 2 3 4 5 6

  13. (Example of closed hashing) Col Collision on H Handling: Li : Linear P r Prob obing S = { 16, 8, 4, 13, 29, 11, 22 } |S| = n h(k) = k % 7 |Array| = N Try h(k) = (k + 0) % 7, if full… 0 Try h(k) = (k + 1) % 7, if full… 1 Try h(k) = (k + 2) % 7, if full… 2 Try … 3 4 5 6 Worst Case SUHA Insert Remove/Find

  14. A P A Problem w w/ L / Linear P r Probing Primary clustering: Description: Remedy:

  15. (Example of closed hashing) Collision Col on H Handling: D : Dou ouble h hashing S = { 16, 8, 4, 13, 29, 11, 22 } |S| = n h(k) = k % 7 |Array| = N Try h(k) = (k + 0*h 2 (k)) % 7, if full… 0 Try h(k) = (k + 1*h 2 (k)) % 7, if full… 1 Try h(k) = (k + 2*h 2 (k)) % 7, if full… 2 Try … 3 4 h(k, i) = (h 1 (k) + i*h 2 (k)) % 7 5 6

  16. Ru Running T Times The expected number of probes for find(key) under SUHA Linear Probing: (Don’t memorize these • Successful: ½(1 + 1/(1-α)) equations, no need.) • Unsuccessful: ½(1 + 1/(1-α)) 2 Instead, observe: Double Hashing: • Successful: 1/α * ln(1/(1-α)) - As α increases: • Unsuccessful: 1/(1-α) Separate Chaining: - If α is constant: • Successful: 1 + α/2 • Unsuccessful: 1 + α

  17. Ru Running T Times The expected number of probes for find(key) under SUHA Linear Probing: • Successful: ½(1 + 1/(1-α)) • Unsuccessful: ½(1 + 1/(1-α)) 2 Double Hashing: • Successful: 1/α * ln(1/(1-α)) • Unsuccessful: 1/(1-α)

  18. Re ReHashing What if the array fills?

  19. Which collision resolution strategy is better? • Big Records: • Structure Speed: What structure do hash tables replace? What constraint exists on hashing that doesn’t exist with BSTs? Why talk about BSTs at all?

  20. Ru Running T Times Hash Table AVL Linked List Amortized: Find Worst Case: Amortized: Insert Worst Case: Storage Space

  21. st std da data struc uctur ures std::map

  22. st std da data struc uctur ures std::map ::operator[] ::insert ::erase ::lower_bound(key) è Iterator to first element ≤ key ::upper_bound(key) è Iterator to first element > key

  23. st std da data struc uctur ures std::unordered_map ::operator[] ::insert ::erase ::lower_bound(key) è Iterator to first element ≤ key ::upper_bound(key) è Iterator to first element > key

  24. st std da data struc uctur ures std::unordered_map ::operator[] ::insert ::erase ::lower_bound(key) è Iterator to first element ≤ key ::upper_bound(key) è Iterator to first element > key ::load_factor() ::max_load_factor(ml) è Sets the max load factor

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend