You are on page 1of 50

# Chapter 9: Hashing

• Basic concepts • Hash functions • Collision resolution • Open addressing • Linked list resolution • Bucket hashing

1

Basic Concepts
• Sequential search: O(n) • Binary search: O(log2n)
found Requiring several key comparisons before the target is

2

Basic Concepts
• Search complexity:
Size
16 50 256 1,000 10,000 100,000 1,000,000

Binary
4 6 8 10 14 17 20

Sequential (Average)
8 25 128 500 5,000 50,000 500,000

Sequential (Worst Case)
16 50 256 1,000 10,000 100,000 1,000,000

3

Basic Concepts
• Is there a search algorithm whose complexity is O(1)?

4

Basic Concepts
• Is there a search algorithm whose complexity is O(1)? YES.

5

Basic Concepts

hashing

Each key has only one address

6

Basic Concepts
Key
001 Harry Lee Sarah Trapp

002

005

Vu Nguyen

Vu Nguyen 102002 John Adams 107095 Sarah Trapp 111060

005

Hash Function

100 002

007

Ray Black

100

7

Basic Concepts
• Home address: address produced by a hash function. • Prime area: memory that contains all the home addresses.

8

Basic Concepts
• Synonyms: a set of keys that hash to the same location. • Collision: the location of the data to be inserted is already occupied by the synonym data.

9

Basic Concepts
• Ideal hashing:
– No location collision – Compact address space

10

Basic Concepts
Insert A, B, C hash(A) = 9 hash(B) = 9 hash(C) = 17 A
[1] [5] [9] [17]

11

Basic Concepts
Insert A, B, C hash(A) = 9 hash(B) = 9 hash(C) = 17 A
[1] [5] [9]

B and A collide at 9 B
[17]

Collision Resolution

12

Basic Concepts
Insert A, B, C hash(A) = 9 hash(B) = 9 hash(C) = 17 C
[1] [5]

B and A collide at 9 A
[9]

C and B collide at 17 B
[17]

Collision Resolution
13

Basic Concepts
Searh for B hash(A) = 9 hash(B) = 9 hash(C) = 17 C
[1] [5]

A
[9]

B
[17]

Probing
14

Hash Functions
• Direct hashing • Modulo division • Digit extraction • Mid-square • Folding • Rotation • Pseudo-random
15

Direct Hashing
• The address is the key itself: hash(Key) = Key

16

Direct Hashing
• Advantage: there is no collision. • Disadvantage: the address space (storage size) is as large as the key space

17

Modulo Division
Address = Key MOD listSize + 1 • Fewer collisions if listSize is a prime number • Example:
Numbering system to handle 1,000,000 employees Data space to store up to 300 employees hash(121267) = 121267 MOD 307 + 1 = 2 + 1 = 3

18

Digit Extraction
Address = selected digits from Key

• Example:
379452 121267 378845 160252 045128 → → → → → 394 112 388 102 051

19

Mid-square
Address = middle digits of Key2 • Example:
9452 * 9452 = 89340304 → 3403

20

Mid-square
• Disadvantage: the size of the Key2 is too large • Variations: use only a portion of the key
379452: 379 * 379 = 143641 → 364 121267: 121 * 121 = 014641 → 464 045128: 045 * 045 = 002025 → 202

21

Folding
• The key is divided into parts whose size matches the address size
Key = 123|456|789 fold shift 123 + 456 + 789 = 1368 ⇒ 368

22

Folding
• The key is divided into parts whose size matches the address size
Key = 123|456|789 fold shift 123 + 456 + 789 = 1368 ⇒ 368 fold boundary 321 + 456 + 987 = 1764 ⇒ 764

23

Rotation
• Hashing keys that are identical except for the last character may create synonyms. • The key is rotated before hashing.
original key 600101 600102 600103 600104 600105 rotated key 160010 260010 360010 460010 560010

24

Rotation
• Used in combination with fold shift
original key 600101 600102 600103 600104 600105 → → → → → 62 63 64 65 66 rotated key 160010 260010 360010 460010 560010 → → → → → 26 36 46 56 66

25

Pseudorandom
Key Pseudorandom Number Generator Rando m Number Modulo Division Address

y = ax + c For maximum efficiency, a and c should be prime numbers

26

Pseudorandom
• Example:
Key = 121267 a = 17 c=7 listSize = 307

Address = ((17*121267 + 7) MOD 307 + 1 = (2061539 + 7) MOD 307 + 1 = 2061546 MOD 307 + 1 = 41 + 1 = 42

27

Collision Resolution
• Except for the direct hashing, none of the others are one-to-one mapping
⇒ Requiring collision resolution methods

• Each collision resolution method can be used independently with each hash function

28

Collision Resolution
• A rule of thumb: a hashed list should not be allowed to become more than 75% full. Load factor: α = (k/n) x 100

n = list size k = number of filled elements

29

Collision Resolution
• As data are added and collisions are resolved, hashing tends to cause data to group within the list
⇒ Clustering: data are unevenly distributed across the list

• High degree of clustering increases the number of probes to locate an element
⇒ Minimize clustering
30

Collision Resolution
• Primary clustering: data become clustered around a home address.
Insert A9, B9, C9, D11, E12
A B C D E
[1] [9] [10] [11] [12] [13]

31

Collision Resolution
• Secondary clustering: data become grouped along a collision path throughout a list.
Insert A9, B9, C9, D11, E12, F9
A B D E
[1]

C

F
[23]

[9] [10] [11] [12] [13] [14]

32

• When a collision occurs, an unoccupied element is searched for placing the new element in. • There are different methods:
    Linear probe Quadratic probe Double hashing Key offset

33

Linear Probe
• When a home address is occupied, go to the next address (the current address + 1). • Alternatives: add 1, subtract 2, add 3, subtract 4, ...

34

Linear Probe
001 002 003 Mary Dodd Sarah Trapp (379452) (070918) Bryan Devaux (121267)

Harry Eagle 166702

Hash

002
008 John Carver (378845)

306 307

Tuan Ngo

(160252)

Shouli Feldman (045128) 35

Linear Probe
001 002 003 004 Mary Dodd Sarah Trapp (379452) (070918) Bryan Devaux (121267) Harry Eagle (166702)

Harry Eagle 166702

Hash

002
008 John Carver (378845)

306 307

Tuan Ngo

(160252)

Shouli Feldman (045128) 36

Linear Probe
  quite simple to implement data tend to remain near their home address (significant for disk addresses)

 produces primary clustering

37

• The address increment is the collision probe number squared (12, 22, 32, ...). • Modulo is used not to run off the end of the address list.

38

• Disadvantage: time required to square the probe number. (n + 1)2 = n2 + 2n + 1

Increment Factor

39

Probe Collision Probe2 and New Number Location Increment Address 1 2 3 4 5 6 7 1 2 6 15 31 56 92 12 = 1 22 = 4 32 = 9 42 = 16 52 = 25 62 = 36 72 = 49 02 06 15 31 56 92 41 Increment Factor 1 3 5 7 9 11 13 Next Increment 1 4 9 16 25 36 49

40

• Limitation: it is not possible to generate a new address for every element in the list. (address + n2) MOD listSize + 1 ⇒ Use a list size that is a prime number (more elements reachable)

41

Pseudorandom Probe
• Generate a pseudorandom number as a new address from the collision address.
newAddress = (a x collisionAddress + c) MOD listSize + 1 a should be a large prime number

42

Pseudorandom Probe
• Significant limitation (of linear and quadratic probes as well): there is only one collision path for all keys. ⇒ produces secondary clustering

43

Secondary Clustering
hash(A) = hash(B) = hash(C) = 9 hash(D) = 11

A
[1] [9]

C
[11]

B
[13]

D
[15]

Linear probes
Search/find location for D

44

Key Offset
• Generate a new address as a function of the collision address and the key.
offset = [key / listSize] newAddress = (offset + collisionAddress) MOD listSize + 1

45

Key Offset
Key 166702 572556 067234 Home Address 2 2 2 Key Offset 543 1,865 219 Probe 1 239 026 222 Probe 2 169 050 135

offset = [166702 / 307 = 543] address = (543 + 02) MOD 307 + 1 = 239 address = (543 + 239) MOD 307 + 1 = 169
46

• Major disadvantage of Open Addressing: each collision resolution increases the probability for future collisions. ⇒ use linked lists to store synonyms

47

001 002 003 Mary Dodd Sarah Trapp (379452) (070918) Harry Eagle (166702) Bryan Devaux (121267) Chris Walljasper (572556)

008

John Carver

(378845)

overflow area prime area

306 307

Tuan Ngo

(160252)

Shouli Feldman (045128) 48

Bucket Hashing
• Hashing data to buckets that can hold multiple pieces of data. • Each bucket has an address and collisions are postponed until the bucket is full.

49

Bucket Hashing
Mary Dodd 001 (379452)

Sarah Trapp 002 Harry Eagle Ann Georgis 003

(070918) (166702) (367173)

Bryan Devaux (121267) Chris Walljasper(572556)

linear probe

Shouli Feldman (045128) 307

50