![Page 1: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/1.jpg)
HashingLecture 10
COSC 242 – Algorithms and Data Structures
![Page 2: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/2.jpg)
Today’s outline
1. Double hashing2. Chaining3. Universal hashing
2
![Page 3: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/3.jpg)
Today’s outline
1. Double hashing2. Chaining3. Universal hashing
3
![Page 4: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/4.jpg)
Issues with linear probing
Linear probing suffers from primary clustering. This is the situation of long runs of occupied sequences.
4
… 48
18 84
19
20
21 452
22 452
23 75
24 945
…
Initial probe
![Page 5: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/5.jpg)
Issues with quadratic probing
Quadratic probing suffers from a milder form of clustering, called secondary clustering. Rather than probing sequential positions, it attempts to probe successively further away locations from the previous collision. But, if two keys contain the same hash address, they will follow the same path (see example at end of L09). Secondary clustering has a lower performance cost than primary clustering, but still not ideal.
5
![Page 6: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/6.jpg)
Secondary clustering
6
…
18 23
19 19
20
21 452
22 452
23 75
24 945
481
…
Initial probe1
4
9
![Page 7: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/7.jpg)
Double hashing
The drawback of linear and quadratic probing is that collision resolution strategies follow the same path from a collision point regardless of key value.A better solution is double hashing:
ℎ 𝑘, 𝑖 = ℎ! 𝑘 + 𝑖 ' ℎ" 𝑘 %𝑚
• i = the number of collisions so far
• h1 = division hashing
• m = table size• h2 = a secondary hash function
7
![Page 8: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/8.jpg)
Double hashing
Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly chosen permutations.Notice that the initial probe goes to position T[h1(k)], as i = 0.h2 is often something like h2(k) = 1 + k%(m - 1).
8
ℎ 𝑘, 𝑖 = ℎ! 𝑘 + 𝑖 ' ℎ" 𝑘 %𝑚
![Page 9: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/9.jpg)
Pop quiz 1
Why is it helpful to have m as a prime number?
9
ℎ 𝑘, 𝑖 = ℎ* 𝑘 + 𝑖 ' ℎ+ 𝑘 %𝑚
![Page 10: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/10.jpg)
Another question
h2(k) is often of the form: 1 + k%(m - 1).Why don’t we just use h2(k) = k%(m - 1)?
11
ℎ 𝑘, 𝑖 = ℎ! 𝑘 + 𝑖 ' ℎ" 𝑘 %𝑚
![Page 11: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/11.jpg)
Another question
h2(k) is often of the form: 1 + k%(m - 1).Why don’t we just use h2(k) = k%(m - 1)? Example• m = 33, k = 7
12
(h1(k) + i*(k % m-1)) % m (h1(k) + i*(1 + k % m-1)) % m7 14 21 28 2 9 16 23 30 4 11 18 25 32 … 7 15 23 31 6 14 22 30 5 13 21 29 4 12 …
ith slot is a multiple of k ith slot not a multiple of k
ℎ 𝑘, 𝑖 = ℎ! 𝑘 + 𝑖 ' ℎ" 𝑘 %𝑚
![Page 12: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/12.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
13
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
quadratic double
H(k, i) = (k%m + i2) % m H(k, i) = (k%m + i(1+k%(m-1)) % m
Total collisions = 0 Total collisions = 0
![Page 13: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/13.jpg)
Linear vs quadratic vs double
28*Note, in our example m=10 for simpler calculations, but performance is better when m is prime.
![Page 14: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/14.jpg)
Today’s outline
1. Double hashing2. Chaining3. Universal hashing
29
![Page 15: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/15.jpg)
Full tables
What happens as a hash table gets full?As clusters get large, gaps become fewer and the number of collisions for insertion and for search becomes larger, breaking down the O(1) property.What if you want to get rid of an item? Beware of deleting a key on a search path that has possible collisions. We have to use lazy deletion.
30
![Page 16: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/16.jpg)
Lazy deletion
Deletion from an open-address hash table is difficult. When we delete a key from slot i, we cannot simply mark that slot as empty by storing NIL in it. If we did, we might be unable to retrieve any key k during whose insertion we had probed slot i and found it occupied. With lazy deletion, we mark the slot by storing the special value DELETED instead of NIL.
31
![Page 17: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/17.jpg)
Full tables
Suggestion: hash tables implemented as arrays are good if you know roughly the size of your data set before loading and it stays that size. Or, if you are willing to accept a single costly operation, you can re-hash everything into a different table size.Alternative: Allow the hash table to maintain “chains” at each location. This is called “hashing with chaining”; as opposed to what we have already seen, which is called “open addressing”.
32
![Page 18: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/18.jpg)
Reminder: Collisions
Two keys may hash to the same slot. We call this situation a collision.We’ve looked at open addressing, lets now look at chaining.
33
U(universe of keys)
k1
K(actual keys)
k2
k3k4
T
0
h(k1)
h(k3)
h(k2)=h(k4)
m-1
![Page 19: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/19.jpg)
Chaining
In chaining, we place all the elements that hash to the same slot into the same linked list.
34
U(universe of keys)
k5
K(actual keys)
k8
k2k4
T
/ 0
/ 1
2
/ 3
/ 4
5
/ 6
/ 7
8
/ 9
/ k2 k4 /
/ k5 /
/ k8 k1 /
k1
![Page 20: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/20.jpg)
Chaining
Inserting at the head of a linked list is O(1). Searching a linked list is O(n), which is fine for small n, but not as good if n is large.If table has m slots and m keys, and our hash function spreads the keys fairly evenly over the table, then we can expect our chains to be short. In fact, it is not unusual for the table size to be chosen to be m = n/3, where n is the size of the collection of data items, provided one is sure that your hash function will spread the keys evenly.
35
![Page 21: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/21.jpg)
Universal hashing
This scheme is vulnerable to any adversary who is able to select data that creates long lists, making search more time-consuming.If you use chaining, an adversary who knows your hash function could devise a set of keys that all hash to the same position, creating a list for the whole collection of data items (search and insert become O(n)).
36
![Page 22: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/22.jpg)
Universal hashing
This scheme is vulnerable to any adversary who is able to select data that creates long lists, making search more time-consuming.If you use chaining, an adversary who knows your hash function could devise a set of keys that all hash to the same position, creating a list for the whole collection of data items (search and insert become O(n)).Solution: choose the hash function randomly before creating the hash table, that is independent of keys to be stored. This is universal hashing.Assumes hash table will not be persistent. Use different hash function on each execution.
37
![Page 23: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/23.jpg)
Today’s outline
1. Double hashing2. Chaining3. Universal hashing
38
![Page 24: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/24.jpg)
Universal hashing
A universal set of hash functions H is a set of hash functions such that if you pick keys k and j at random, and choose a hash function hrandomly from H, then the chance of h(k) = h(j) is no more than 1/m(where m is the size of the hash table).So how does one get a universal set of hash functions?
39
![Page 25: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/25.jpg)
A universal set of hash functions
Choose a prime number p big enough that every possible key k is < p, and choose your table size m < p.
Now make ℎ#,% 𝑘 = 𝑎𝑘 + 𝑏 𝑚𝑜𝑑 𝑝 𝑚𝑜𝑑 𝑚The parameters a and b may take on integer values up to p - 1, but you must choose a > 0.a and b are chosen randomly at program start up.
40
![Page 26: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/26.jpg)
Example: Universal hashing
Let p = 17 (prime), m = 6 (table size), a and b chosen randomly:
Choosing a and b at random as the program starts denies an adversary the ability to choose input that generates the worst case.
41
ℎ#,% 𝑘 = 𝑎𝑘 + 𝑏 𝑚𝑜𝑑 𝑝 𝑚𝑜𝑑 𝑚
ℎ1,2 8 = 3 $ 8 + 4 %17 %6= (28%17)%6= 11%6= 5
![Page 27: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/27.jpg)
Class Challenge 1
Try h4,5(8) and h3,18(8), with p = 18, and m = 7.
42
ℎ#,% 𝑘 = 𝑎𝑘 + 𝑏 𝑚𝑜𝑑 𝑝 𝑚𝑜𝑑 𝑚
![Page 28: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/28.jpg)
Suggested reading
Double hashing is discussed in section 11.4.Chaining is discussed in section 11.2.Universal hashing is discussed in section 11.3.3.
44
![Page 29: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/29.jpg)
Solutions
45
![Page 30: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/30.jpg)
Pop quiz 1
Why is it helpful to have m as a prime number?
Because we take (h1(k)+i·h2(k)) % m If m is a prime number, then the only multiples are 1 and itself. This means we won’t produce the same series of h(k, i) values on subsequent probe attempts, until i reaches m.
46
ℎ 𝑘, 𝑖 = ℎ* 𝑘 + 𝑖 $ ℎ+ 𝑘 %𝑚
![Page 31: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/31.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
47
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
quadratic double
H(k, i) = (k%m + i2) % m H(k, i) = (k%m + i(1+k%(m-1)) % m
Total collisions = 0 Total collisions = 0
![Page 32: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/32.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
48
0
1
2 12
3
4
5
6
7
8
9
0
1
2 12
3
4
5
6
7
8
9
quadratic double
H(12, 0) = (k%m + i2) % m= 2
H(12, 0) = (k%m + i(1+k%(m-1)) % m= 2
Total collisions = 0 Total collisions = 0
![Page 33: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/33.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
49
0
1
2 12
3 13
4
5
6
7
8
9
0
1
2 12
3 13
4
5
6
7
8
9
quadratic double
H(13, 0) = (k%m + i2) % m= 3
H(13, 0) = (k%m + i(1+k%(m-1)) % m= 3
Total collisions = 0 Total collisions = 0
![Page 34: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/34.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
50
0
1
2 12
3 13
4
5
6
7
8
9
0
1
2 12
3 13
4
5
6
7
8
9
quadratic double
H(43, 0) = (k%m + i2) % m= 3
H(43, 0) = (k%m + i(1+k%(m-1)) % m= 3
Total collisions = 1 Total collisions = 1
![Page 35: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/35.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
51
0
1
2 12
3 13
4 43
5
6
7
8
9
0
1 43
2 12
3 13
4
5
6
7
8
9
quadratic double
H(43, 1) = (k%m + i2) % m= 4
H(43, 1) = (k%m + i(1+k%(m-1)) % m= 1
Total collisions = 1 Total collisions = 1
![Page 36: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/36.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
52
0
1
2 12
3 13
4 43
5
6
7
8
9
0
1 43
2 12
3 13
4
5
6
7
8
9
quadratic double
H(52, 0) = (k%m + i2) % m= 2
H(52, 0) = (k%m + i(1+k%(m-1)) % m= 2
Total collisions = 2 Total collisions = 2
![Page 37: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/37.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
53
0
1
2 12
3 13
4 43
5
6
7
8
9
0 52
1 43
2 12
3 13
4
5
6
7
8
9
quadratic double
H(52, 1) = (k%m + i2) % m= 3
H(52, 1) = (k%m + i(1+k%(m-1)) % m= 0
Total collisions = 3 Total collisions = 2
![Page 38: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/38.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
54
0
1
2 12
3 13
4 43
5
6 52
7
8
9
0 52
1 43
2 12
3 13
4
5
6
7
8
9
quadratic double
H(52, 2) = (k%m + i2) % m= 6
H(52, 1) = (k%m + i(1+k%(m-1)) % m= 0
Total collisions = 3 Total collisions = 2
![Page 39: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/39.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
55
0
1
2 12
3 13
4 43
5
6 52
7
8
9
0 52
1 43
2 12
3 13
4
5
6
7
8
9
quadratic double
H(72, 0) = (k%m + i2) % m= 2
H(72, 0) = (k%m + i(1+k%(m-1)) % m= 2
Total collisions = 4 Total collisions = 3
![Page 40: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/40.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
56
0
1
2 12
3 13
4 43
5
6 52
7
8
9
0 52
1 43
2 12
3 13
4
5
6
7
8
9
quadratic double
H(72, 1) = (k%m + i2) % m= 3
H(72, 1) = (k%m + i(1+k%(m-1)) % m= 3
Total collisions = 5 Total collisions = 4
![Page 41: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/41.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
57
0
1
2 12
3 13
4 43
5
6 52
7
8
9
0 52
1 43
2 12
3 13
4 72
5
6
7
8
9
quadratic double
H(72, 2) = (k%m + i2) % m= 6
H(72, 2) = (k%m + i(1+k%(m-1)) % m= 4
Total collisions = 6 Total collisions = 4
![Page 42: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/42.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
58
0
1
2 12
3 13
4 43
5 72
6 52
7
8
9
0 52
1 43
2 12
3 13
4 72
5
6
7
8
9
quadratic double
H(72, 3) = (k%m + i2) % m= 5
H(72, 2) = (k%m + i(1+k%(m-1)) % m= 4
Total collisions = 6 Total collisions = 4
![Page 43: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/43.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
59
0
1
2 12
3 13
4 43
5 72
6 52
7
8
9
0 52
1 43
2 12
3 13
4 72
5
6
7
8
9
quadratic double
H(63, 0) = (k%m + i2) % m= 3
H(63, 0) = (k%m + i(1+k%(m-1)) % m= 3
Total collisions = 7 Total collisions = 5
![Page 44: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/44.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
60
0
1
2 12
3 13
4 43
5 72
6 52
7
8
9
0 52
1 43
2 12
3 13
4 72
5
6
7
8
9
quadratic double
H(63, 1) = (k%m + i2) % m= 4
H(63, 1) = (k%m + i(1+k%(m-1)) % m= 4
Total collisions = 8 Total collisions = 6
![Page 45: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/45.jpg)
Quadratic vs double hashing
Insert (12, 13, 43, 52, 72, 63) with h(k) = k%10, using first quadratic probing then double hashing.
61
0
1
2 12
3 13
4 43
5 72
6 52
7 63
8
9
0 52
1 43
2 12
3 13
4 72
5 63
6
7
8
9
quadratic double
H(63, 2) = (k%m + i2) % m= 7
H(63, 2) = (k%m + i(1+k%(m-1)) % m= 5
Total collisions = 8 Total collisions = 6
![Page 46: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/46.jpg)
Class Challenge 1
Try h4,5(8) and h3,18(8), with p = 18, and m = 7.
h4,5(8) = ((4*8 + 5) % 18) % 7
= (37 % 18) % 7
= 1 % 7
= 1
h3,18(8) = ((3*8 + 18) % 18) % 7
= (42 % 18) % 7
= 6%7
= 6 62
ℎ#,% 𝑘 = 𝑎𝑘 + 𝑏 𝑚𝑜𝑑 𝑝 𝑚𝑜𝑑 𝑚
![Page 47: Hashing - cs.otago.ac.nzDouble hashing Double hashing offers one of the best methods available for open addressing, as the permutations have many of the characteristics of randomly](https://reader033.vdocument.in/reader033/viewer/2022050501/5f93aaf46c44737ee6573f95/html5/thumbnails/47.jpg)
Image attributions
63
This Photo by Jorge Stolfi is licensed under CC-BY-SA-3.0
This Photo by Unknown Author is licensed under CC0
Disclaimer: Images and attribution text provided by PowerPoint search. The author has no connection with, nor endorses, the attributed parties and/or websites listed above.