Hash Luong The Nhan, Tran Giang Son Chapter 9 Hash Basic concepts Hash functions Direct Hashing Data Structures and Algorithms Modulo division Digit extraction Mid-square Mid-square Folding Rotation Luong The Nhan, Tran Giang Son Pseudo-random Collision resolution Faculty of Computer Science and Engineering Open addressing University of Technology, VNU-HCM Linked list resolution Bucket hashing 9.1 Hash Outcomes Luong The Nhan, Tran Giang Son • L.1 - Depict the following concepts: hashing table, key, collision, and collision resolution.2 - Describe hashing functions using pseudocode and give examples to show their algorithms.3 - Describe collision resolution methods using Hash functions pseudocode and give examples to show their algorithms. Direct Hashing Modulo division • L.4 - Implement hashing tables using C/C++. Digit extraction Mid-square • L.5 - Analyze the complexity and develop Mid-square Folding experiment (program) to evaluate methods supplied for Rotation Pseudo-random hashing tables. Collision resolution Open addressing • L.2 - Analyze algorithms and use Big-O notation to Linked list resolution characterize the computational complexity of algorithms Bucket hashing composed by using the following control structures: sequence, branching, and iteration (not recursion).2 Hash Contents Luong The Nhan, Tran Giang Son 1 Basic concepts 2 Hash functions Direct Hashing Modulo division Basic concepts Digit extraction Hash functions Mid-square Direct Hashing Modulo division Mid-square Digit extraction Folding Mid-square Mid-square Rotation Folding Rotation Pseudo-random Pseudo-random Collision resolution Open addressing 3 Collision resolution Linked list resolution Open addressing Bucket hashing Linked list resolution Bucket hashing 9.3 Hash Luong The Nhan, Tran Giang Son Basic concepts Basic concepts Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.4 Hash Basic concepts Luong The Nhan, Tran Giang Son • Sequential search: O(n) • Binary search: O(log n) Basic concepts 2 Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square → Requiring several key Folding Rotation Pseudo-random comparisons before the Collision resolution Open addressing Linked list resolution Bucket hashing target is found.5 Hash Basic concepts Luong The Nhan, Tran Giang Son Search complexity: Size Binary Sequential Sequential (Average) (Worst Case) Basic concepts 16 4 8 16 Hash functions Direct Hashing 50 6 25 50 Modulo division Digit extraction 256 8 128 256 Mid-square Mid-square Folding 1,000 10 500 1,000 Rotation Pseudo-random 10,000 14 5,000 10,000 Collision resolution Open addressing 100,000 17 50,000 100,000 Linked list resolution Bucket hashing 1,000,000 20 500,000 1,000,000 9.6 Hash Basic concepts Luong The Nhan, Tran Giang Son Is there a search algorithm Basic concepts Hash functions Direct Hashing whose complexity is O(1)? Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.7 Hash Basic concepts Luong The Nhan, Tran Giang Son Is there a search algorithm Basic concepts Hash functions Direct Hashing whose complexity is O(1)? Modulo division Digit extraction Mid-square Mid-square YES Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.7 Hash Basic concepts Luong The Nhan, Tran Giang Son Basic concepts Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing Hình: Each key has only one address 9.8 Hash Basic concepts Luong The Nhan, Tran Giang Son Basic concepts Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.9 Hash Basic concepts Luong The Nhan, Tran Giang Son • Home address: address produced by a hash function.
• Prime area: memory that contains all the home addresses. Basic concepts Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.10 Hash Basic concepts Luong The Nhan, Tran Giang Son • Home address: address produced by a hash function. • Prime area: memory that contains all the home addresses. Basic concepts Hash functions • Synonyms: a set of keys that hash to the Direct Hashing Modulo division same location.
Digit extraction Mid-square Mid-square • Collision: the location of the data to be Folding Rotation inserted is already occupied by the synonym Pseudo-random Collision resolution data. Open addressing Linked list resolution Bucket hashing 9.10 Hash Basic concepts Luong The Nhan, Tran Giang Son • Home address: address produced by a hash function. • Prime area: memory that contains all the home addresses. Basic concepts Hash functions • Synonyms: a set of keys that hash to the Direct Hashing Modulo division same location.
Digit extraction Mid-square Mid-square • Collision: the location of the data to be Folding Rotation inserted is already occupied by the synonym Pseudo-random Collision resolution data. Open addressing Linked list resolution • Ideal hashing: Bucket hashing • No location collision • Compact address space 9.10 Hash Basic concepts Luong The Nhan, Tran Giang Son Basic concepts Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.11 Hash Basic concepts Luong The Nhan, Tran Giang Son Basic concepts Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.12 Hash Basic concepts Luong The Nhan, Tran Giang Son Basic concepts Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.13 Hash Basic concepts Luong The Nhan, Tran Giang Son Basic concepts Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.14 Hash Luong The Nhan, Tran Giang Son Basic concepts Hash functions Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.15 Hash Hash functions Luong The Nhan, Tran Giang Son • Direct hashing • Modulo division Basic concepts Hash functions • Digit extraction Direct Hashing Modulo division • Mid-square Digit extraction Mid-square Mid-square • Folding Folding Rotation Pseudo-random • Rotation Collision resolution Open addressing • Pseudo-random Linked list resolution Bucket hashing 9.16 Hash Direct Hashing Luong The Nhan, Tran Giang Son Basic concepts The address is the key itself: Hash functions Direct Hashing Modulo division hash(Key) = Key Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.17 Hash Direct Hashing Luong The Nhan, Tran Giang Son Basic concepts • Advantage: there is no collision. Hash functions Direct Hashing • Disadvantage: the address space (storage Modulo division Digit extraction size) is as large as the key space. Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.18 Hash Modulo division Luong The Nhan, Tran Giang Son Address = Key mod listSize Basic concepts • Fewer collisions if listSize is a prime Hash functions Direct Hashing number.
Modulo division Digit extraction Mid-square • Example: Mid-square Folding Numbering system to handle 1,000,000 Rotation Pseudo-random employees Collision resolution Open addressing Data space to store up to 300 employees Linked list resolution Bucket hashing hash(121267) = 121267 mod 307 = 2 9.19 Hash Digit extraction Luong The Nhan, Tran Giang Son Address = selected digits f rom Key Basic concepts Hash functions Example: Direct Hashing Modulo division 379452→394 Digit extraction Mid-square 121267→112 Mid-square Folding Rotation 378845→388 Pseudo-random Collision resolution 160252→102 Open addressing Linked list resolution 045128→051 Bucket hashing 9.20 Hash Mid-square Luong The Nhan, Tran Giang Son Basic concepts Hash functions Address = middle digits of Key 2 Direct Hashing Modulo division Digit extraction Example: Mid-square Mid-square Folding 9452 * 9452 = 89340304→3403 Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.21 Hash Mid-square Luong The Nhan, Tran Giang Son • Disadvantage: the size of the Key 2 is too large. Basic concepts Hash functions • Variations: use only a portion of the key. Direct Hashing Modulo division Example: Digit extraction Mid-square Mid-square 379452: 379 * 379 = 143641→364 Folding Rotation 121267: 121 * 121 = 014641→464 Pseudo-random Collision resolution 045128: 045 * 045 = 002025→202 Open addressing Linked list resolution Bucket hashing 9.22 Hash Folding Luong The Nhan, Tran Giang Son The key is divided into parts whose size matches the address size. Example: Basic concepts Key = 123|456|789 Hash functions Direct Hashing Modulo division fold shift Digit extraction Mid-square 123 + 456 + 789 = 1368 Mid-square Folding → 368 Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.23 Hash Folding Luong The Nhan, Tran Giang Son The key is divided into parts whose size matches the address size.
Example: Basic concepts Key = 123|456|789 Hash functions Direct Hashing Modulo division fold shift Digit extraction Mid-square 123 + 456 + 789 = 1368 Mid-square Folding → 368 Rotation Pseudo-random Collision resolution Open addressing fold boundary Linked list resolution Bucket hashing 321 + 456 + 987 = 1764 → 764 9.23 Hash Rotation Luong The Nhan, Tran Giang Son • Hashing keys that are identical except for the last character may create synonyms. • The key is rotated before hashing. Basic concepts Hash functions Direct Hashing original key rotated key Modulo division Digit extraction 600101 160010 Mid-square Mid-square 600102 260010 Folding Rotation Pseudo-random 600103 360010 Collision resolution Open addressing 600104 460010 Linked list resolution Bucket hashing 600105 560010 9.24 Hash Rotation Luong The Nhan, Tran Giang Son • Used in combination with fold shift. original key rotated key 600101 → 62 160010 → 26 Basic concepts Hash functions 600102 → 63 260010 → 36 Direct Hashing Modulo division 600103 → 64 360010 → 46 Digit extraction Mid-square 600104 → 65 460010 → 56 Mid-square Folding Rotation 600105 → 66 560010 → 66 Pseudo-random Collision resolution Open addressing Spreading the data more evenly across the Linked list resolution Bucket hashing address space.25 Hash Pseudo-random Luong The Nhan, Tran Giang Son Basic concepts Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random For maximum efficiency, a and c should be Collision resolution Open addressing prime numbers.
Linked list resolution Bucket hashing 9.26 Hash Pseudo-random Luong The Nhan, Tran Giang Son Example: Key = 121267 a = 17 Basic concepts Hash functions c=7 Direct Hashing Modulo division listSize = 307 Digit extraction Mid-square Mid-square Address = ((17*121267 + 7) mod 307 Folding Rotation = (2061539 + 7) mod 307 Pseudo-random Collision resolution = 2061546 mod 307 Open addressing Linked list resolution = 41 Bucket hashing 9.27 Hash Luong The Nhan, Tran Giang Son Basic concepts Collision resolution Hash functions Direct Hashing Modulo division Digit extraction Mid-square Mid-square Folding Rotation Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.28 Hash Collision resolution Luong The Nhan, Tran Giang Son • Except for the direct hashing, none of the Basic concepts others are one-to-one mapping Hash functions → Requiring collision resolution methods Direct Hashing Modulo division Digit extraction Mid-square Mid-square • Each collision resolution method can be Folding Rotation used independently with each hash function Pseudo-random Collision resolution Open addressing Linked list resolution Bucket hashing 9.29 Hash Collision resolution Luong The Nhan, Tran Giang Son • A rule of thumb: a hashed list should not be allowed to become more than 75% full. Basic concepts Hash functions Direct Hashing Modulo division Load factor: Digit extraction Mid-square Mid-square α = (k/n) × 100 Folding Rotation n = list size Pseudo-random Collision resolution k = number of filled elements Open addressing Linked list resolution Bucket hashing 9.30 Hash Collision resolution Luong The Nhan, Tran Giang Son • As data are added and collisions are resolved, hashing tends to cause data to group within the list. Basic concepts Hash functions → Clustering: data are unevenly distributed Direct Hashing Modulo division across the list. Digit extraction Mid-square Mid-square Folding Rotation • High degree of clustering increases the Pseudo-random Collision resolution number of probes to locate an element.
Open addressing Linked list resolution → Minimize clustering.31 Hash Collision resolution Luong The Nhan, Tran Giang Son • Primary clustering: data become clustered around a home address.