Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing
description
Transcript of Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing
![Page 1: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/1.jpg)
1
Road Map
Associative Container Impl.
Unordered ACsHashing
Collision Resolution Open Addressing Separate Chaining
Ordered ACs
Balanced Search Trees
2-3-4 Trees
Red-Black Trees
Lecture 11 Associative Containers
![Page 2: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/2.jpg)
2
Road Map Implementing Associative Containers (ACs)
– Hash Tables (Unordered ACs; Ch. 5)– 2-3-4 Trees (Ordered; 4)– Red-Black Trees (Ordered; 12)
Inheritance and Polymorphism revisited Heaps (PQ implementation: 6) Divide and Conquer Algs.
– Mergesort, Quicksort (7) Intro to Graphs (9)
– Representations– Searching– Topological Sorting, Shortest Path
![Page 3: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/3.jpg)
Associative Containers Categories
– Ordered (OAC) – iterate through elements in key order
– Unordered (UAC) – cannot iterate … OACS use binary search trees
– set, multiset, map, multimap UACs use hash tables
– unordered_set– unordered_multiset– unordered_map– unordered_multimap
3
![Page 4: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/4.jpg)
Hash Tables Hash table
– Array of slots– A slot holds
One object (open addressing) Collection of objects (separate chaining)
Average insert, erase, find ops. take O(1)!– Worst case is O(N), but easy to avoid– Makes for good unordered set ADT
4
![Page 5: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/5.jpg)
Hash Tables (Cont’d) Main idea
– Store key k in slot hf (k)– hf: KeySet SlotSet
Complications– | KeySet | >> | SlotSet |, so hf cannot be 1-1– If two keys map to same slot have a collision– Deletion can be tricky
5
![Page 6: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/6.jpg)
Hash Tables (Cont’d) Collision resolution strategies
– Open addressing (probe table for open slot) linear, quadratic probing double hashing
– Separate chaining (map to slot that can hold multiple values
In this case slot is called bucket Approach taken by STL
6
![Page 7: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/7.jpg)
7
Graphical Overview
Table size = mis prime to help distribute keys evenly
![Page 8: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/8.jpg)
8
Open Addressing
h f(2 2 ) = 2 2 2 2 % 7 = 1
h f(4 ) = 4 4 % 7 = 4
01
4
6
23
5
t ab leE n t ry [1 ]
tab leE n t ry [4 ]
2 Steps to Compute Slot1) i = hf (key)2) Slot = i % m
Open Addressing:Each slot holds just 1 key
![Page 9: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/9.jpg)
9
Open Addressing (Cont’d)
22
![Page 10: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/10.jpg)
10
Collision Resolution Using OA: (Linear Probing)
7 7
8 9
1 4
9 4
0
1
2
3
4
5
6
7
8
9
1 0
(a)
1
1
1
1
1
In s ert5 4 , 7 7 , 9 4 , 8 9 , 1 4
2
7 7
8 9
4 5
1 4
9 4
0
1
2
3
4
5
6
7
8
9
1 0
(b )
1
1
1
1
1
In s ert4 5
2
7 7
8 9
4 5
1 4
3 5
9 4
0
1
2
3
4
5
6
7
8
9
1 0
(c)
1
1
1
1
1
In s ert3 5
3
2
7 7
8 9
4 5
1 4
3 5
7 6
9 4
0
1
2
3
4
5
6
7
8
9
1 0
(d )
1
1
1
1
1
In s ert7 6
3
7
5 4 5 4 5 45 4
![Page 11: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/11.jpg)
11
Collision Resolution: Chaining (Cont’d)
![Page 12: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/12.jpg)
12
Collision Resolution with Separate Chaining
< B uc k e t 1 > 8 9 ( 1 ) 4 5 ( 2 )
< B uc k e t 0 >
< B uc k e t 3 > 1 4 ( 1 )
< B uc k e t 2 > 3 5 ( 1 )
< B uc k e t 1 0 > 5 4 ( 1 ) 7 6 ( 2 )
< B uc k e t 6 > 9 4 ( 1 )
< B uc k e t 9 >
< B uc k e t 8 >
< B uc k e t 7 >
< B uc k e t 5 >
< B uc k e t 4 >
7 7 ( 1 )
const size_t TABLE_SIZE = 11; // Prime vector <list<int> > table (TABLE_SIZE); index = hf (key) % TABLE_SIZE;table[index].push_back (key);
![Page 13: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/13.jpg)
13
Coding Hash Functions// Code hash fn. as function object in C++// Stateful and easier to use than function pointerstruct HashString { size_t operator () (const string& key) const { size_t n = 5381; // Prime size_t i; for (i = 0; i < key.length (); ++i) n = (n * 33 ) + key[i]; // Horner
return n; }};
![Page 14: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/14.jpg)
14
Efficiency of Hashing MethodsLoad factor = n / m = # elems / table sizeChaining
– represents avg. list length– Avg. probes for successful search ≈ 1 + /2– Avg. probes for unsuccessful search = – Avg. find, insert, erase: O(1)
Worst case O(1) for ?Open Addressing
– represents ?– If > 0.5, double table size and rehash all
elements to new table
![Page 15: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/15.jpg)
Quadratic probing f(i) = i2 or f(i) = ±i2
If the table size is prime, a new element can always be inserted if the table is at least half empty
15
![Page 16: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/16.jpg)
Rehashing If the table gets too full, operations begin to
bog down
Solution: build a new table twice the size (at least – keep prime) and hash all values from the old table into the new table
16
![Page 17: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/17.jpg)
17
Problems w/ BSTs Can degenerate completely to lists Can become skewed Most ops are O(d)
– Want d to be close to lg(N) How to correct skewness?
![Page 18: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/18.jpg)
18
Two BSTs: Same Keys
5
1 8
3 5
2 5
1 7 7 5
6
1 27
2 09
1 53
4 0
5
1 8
3 5
2 5
1 7
7 5
6 1 2
7
2 0
9
1 53
4 0
D ep t h = 6A v erage co m p aris o n s p er s earch = 4 .0
D ep t h = 4A v erage co m p aris o ns p er s earch = 3 .4 7
(a) (b )
1 0 0
1 0 0
Insertion sequence: 5, 15, 20, 3, 9, 7, 12, 17, 6, 75, 100, 18, 25, 35, 40 (N = 15)
![Page 19: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/19.jpg)
19
Notions of Balance For any node N, depth (N->left) and
depth (N->right) differ by at most 1– AVL Trees
All leaves exist at same level (perfectly balanced!)– 2-3-4 Trees
Number of black nodes on any path from root to leaf is same (black height of tree)– Red-black Trees
![Page 20: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/20.jpg)
20
Binary Search Tree, Red-Black Tree, and AVL Tree
B in ary Search T ree (a)
5 0
7 8
7 5
8 0
7 0
9 0
6 0
R ed -B lack T ree (b )
7 8
8 07 05 0
9 06 0
7 5
8 07 5
7 85 0
9 06 0
7 0
A VL T ree (c)
1 0 01 0 0
1 0 0
![Page 21: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/21.jpg)
2-3-4 Trees 3 node types
– 2-node: 2 children, 1 key– 3-node: 3 children, 2 keys– 4-node: 4 children, 3 keys
All leaves at same level Logarithmic find, insert, erase
21
![Page 22: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/22.jpg)
22
2-3-4 Tree Node Types
A
2 -n o de
valu e < A valu e > A
A B
3 -n o de
A < B
valu e < A A < v alu e < B valu e > B
A B C
4 -no d e
A < B < C
valu e < A A < v alu e < B v alu e > CB < value < C
![Page 23: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/23.jpg)
23
2-3-4 Tree
2 1 5 3 5 5 5
1 2
2 54 8 1 0
1 15 7 9
How to Search?Space for 4-Node?
![Page 24: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/24.jpg)
Insert for a 2-3-4 Tree Top-down
– Split 4-nodes as you search for insertion point– Ensures node splits don’t keep propagating
upwards Key operation is split of 4-node
– Becomes three 2-nodes– Median key is hoisted up and added to parent node
![Page 25: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/25.jpg)
25
Splitting a 4-Node
C
A B C
S T VU
A
B
S T VU
![Page 26: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/26.jpg)
26
Insertion into 2-3-4 Tree
2 1 2 1 52 2 1 5
In s ert 2 In s ert 1 2In s ert 1 5
1 52
1 2
Sp lit 4 -n od e (2 , 12 , 1 5 )
1 5
1 2
2 4
In s ert 4
1 5
1 2
2 4 8
Insertion Sequence: 2, 15, 12, 4, 8, 10, 25, 35, 55, 11, 9, 5, 7
Insert 8
Insert 4
![Page 27: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/27.jpg)
Insertion (Cont’d)
27
2
4 1 2
1 58 2
4 1 2
1 58 1 0
Sp lit 4 -n od e (2 , 4 , 8 ) In s ert 1 0
2
4 1 2
8 1 0 1 5 2 5 2
4 1 2
2
4 1 2 2 5
8 1 0 1 5 3 5 2
4 1 2 2 5
8 1 0 1 5 3 5 5 5
1 5 2 5 3 58 1 0
I n s er t 2 5 In s er t 3 5
In s er t 5 5S p lit 4 - n o d e ( 1 5 , 2 5 , 3 5 )
Insert 55
Insert 10
![Page 28: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/28.jpg)
28
Insertion (Cont’d)
2 1 5 3 5 5 5
2 5
1 2
4 1 0
1 18 2 1 5 3 5 5 5
2 5
1 2
4 1 0
1 18 9
Sp lit 4 -n o d e (8 , 1 0 , 1 1 ) In s ert 9
2 8 10 15 35 55
254
12
2 8 10 11 15 35 55
254
12
Split 4-node (4, 12, 25) Insert 11
Insert 11
Insert 9
![Page 29: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/29.jpg)
29
2 1 5 3 5 5 5
2 5
1 2
4 8 1 0
1 195 7
2 1 5 3 5 5 5
2 5
1 2
4 1 0
1 15 8 9 2 1 5 3 5 5 5
2 5
1 2
4 8 1 0
1 195
In s ert 5 Sp lit 4 -n o d e (5 , 8 , 9 )
Insertion into 2-3-4 Tree (cont’d)Insert 7
![Page 30: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/30.jpg)
Red-Black Trees Can represent 2-3-4 tree as binary tree Use 2 colors
– Red indicates node is “bound” to parent– Red node cannot have red child
Preserves logarithmic find, insert, erase More efficient in time and space
30
![Page 31: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/31.jpg)
31
Red-Black Repr. of 2-3-4 Tree
B
CA
A B C
S T U VS T
R ep res en t at io n w it h a b lackp aren t an d t w o red ch ild ren
4 -n o de (A , B , C )in a 2 -3 -4 T ree
U V
A B
S T U
3 -n o d e (A , B )in a 2 -3 -4 T ree
A
BS
R ep res en t at io n w it h a b lackp aren t an d a red righ t ch ild
T U
B
A
S T
R ep res en t at ion w it h a b lackp aren t an d a red left ch ild
U
![Page 32: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/32.jpg)
32
Converting a 2-3-4 Tree to Red-Black Tree
1 2 1 5
8 1 0 2 0
9 3 0 4 01 3 4 1 2 1 59 3 0 4 01 3 4
1 0
8 2 0
1 2 1 5 3 0 4 0
1 0
8 2 0
3 9
1 4
1 0
8 2 0
3 9
1 4 3 0
1 2 4 0
1 5
![Page 33: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/33.jpg)
33
Red-Black Tree Ops Find? – easy Insertions
– Insert as red node– Require splitting of “4-node” (top-down insertion)– Use color-flip for split (4 cases)– Requires rotations
Deletions– Hard– Several cases – color fix-ups
Remember: RB Trees guarantee lg(N) find’s, insert’s, and erase’s
![Page 34: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/34.jpg)
34
Four Cases in Splitting of a 4-Node
P a r e n t P is B L A C KX is a le f t - c h ild
X
A B
P
C
P a r e n t P is R E D X is a r igh t - c h ild
P a r e n t P is R E D X is a le f t - c h ild
X
A B
P
C
P a r e n t P is B L A C KX is a r igh t - c h ild
X
A B
P
C X
A B
P
C
Case 1 Case 2 Case 3 Case 4
![Page 35: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/35.jpg)
35
Left child of a Black Parent P
2 - 3 - 4 t r e e v ie wR e d- bla c k t r e e
be f o r e t h e c o lo r f lip
A X B
P
C X P
BA
C
X
A B
P
C
R e d- bla c k t r e ea f t e r t h e c o lo r f lip 2 - 3 - 4 t r e e v ie w
X
A B
P
C
Case 1
![Page 36: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/36.jpg)
36
Prior to inserting key 55
2 -3 -4 t ree v iew
5 0
4 0 6 0
3 0
2 04 0 5 0 6 0 5 0
4 0 6 0
3 0
2 0
5 5
5 5 6 0
2 0 3 0 5 0
2 -3 -4 t ree v iew
4 -n o d eb efo re co lo r-fl ip
4 -n o d e after co lo r-fl i pan d in s ert io n o f 5 5
2 0 3 0
C D
C D C D
C D 4 0
Case 2
![Page 37: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/37.jpg)
37
Oriented left-left from G Using A Single Right Rotation
S in g le rig h t ro tat io n w i thp iv o t P an d co lo r ch an g es 2 -3 -4 - t ree v iew
2 -3 -4 t ree v i ew R ed -b l ack t reeb efo re co lo r fl i p
R ed -b l ack t reeaft er co lo r fl ip
P G
A X B C D
G
BA
X
P
C
D
G
BA
X
P
C
D
G
BA
X
P
C D
X P G
A B C DCase 3(and G, P, X linear (zig-zig)
P rotated right
![Page 38: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/38.jpg)
38
Oriented Left-Right From G After the Color Flip
P G
A X B
BA
X
G
P
C
DC D
BA
X
G
P
C
D
2 -3 -4 t ree v iew R ed -b lack t reeb efo re co lo r flip
R ed -b lack t reeaft er co lo r flip
Case 4 (and G, P, X zig-zag)
![Page 39: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/39.jpg)
39
After X is Double Rotated
X
P G
A BC D
(X is rotated left-right)
![Page 40: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/40.jpg)
40
Building A Red-Black Tree
2 2
In s ert 2 m ak e ro o tB LA C K
R ed -B lack T ree 2 - 3 - 4 T r e e
22
R e d- B la c k T r e e
B LA C K
2 1 2 1 51 5
22 -3 -4 T ree
R ed -B lack T ree
1 2
A B
C
DX
G
1 52
1 2
C A B D
D o u b le l eftro t at io n
P
2 4
2 -3 -4 T reeR ed -B lack T ree
1 2
1 51 52
1 2
41 52
1 2
1 52
1 2
C o lo r F l ip
1 52
1 2
M ak e ro o tB L A C K
In s ert 4
4
right-leftrotate
![Page 41: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/41.jpg)
41
Building A Red-Black Tree (Cont…)
2 4 8
1 54
2 -3 -4 T reeR ed -B lack T ree
1 21 2
1 582
1 54
2 -3 -4 T ree
R ed -B lack T ree
1 2
1 582
4 1 2
2 8 1 0
1 54
1 2
82
1 54
1 2
82
1 0
C o lo r fl ip In sert 1 0
8
1 5
1 2
82
1 2
82
2 5
2 -3 -4 T reeR ed -B lack T ree
4 1 2
2 8 1 0
4
1 0
1 5 2 52 5
In s ert 2 5
2 -3 -4 T reeR ed -B lack T ree
4 1 2
2 8 1 01 5
4
2
1 0
1 5 2 5 3 53 5
In s ert 3 5
![Page 42: Road Map Associative Container Impl . Unordered ACs Hashing Collision Resolution Open Addressing](https://reader036.fdocuments.us/reader036/viewer/2022062501/56815c4a550346895dca4edb/html5/thumbnails/42.jpg)
42
Repr. of Red-Black Node
3 5
8 02 5
R ed -B lack T ree rb n o d e R ep res en t at io n o f R ed -B lack T ree
2 5 R E D 8 0 R E D
5 0 B L A C K35