Skewed Binary Search Trees
13 14 15 11 12 7 8 9 10 3 4 5 1 2 6
Gerth Stølting Brodal University of Aarhus Joint work with Gabriel Moruz presented at ESA’06
CPH STL Workshop, University of Copenhagen, October 30, 2006.
1
Skewed Binary Search Trees 6 2 10 1 3 7 12 4 8 11 13 5 9 - - PowerPoint PPT Presentation
Skewed Binary Search Trees 6 2 10 1 3 7 12 4 8 11 13 5 9 14 15 Gerth Stlting Brodal University of Aarhus Joint work with Gabriel Moruz presented at ESA06 CPH STL Workshop, University of Copenhagen, October 30, 2006. 1
13 14 15 11 12 7 8 9 10 3 4 5 1 2 6
Gerth Stølting Brodal University of Aarhus Joint work with Gabriel Moruz presented at ESA’06
CPH STL Workshop, University of Copenhagen, October 30, 2006.
1
Skewed Binary Search Trees
2
x
⌊α(n − 1)⌋
⌈(1 − α)(n − 1)⌉
Skewed Binary Search Trees
3
Skewed Binary Search Trees
4
13 14 15 11 12 7 8 9 10 3 4 5 1 2 6
Skewed Binary Search Trees
5
9 7 4 5 8 6 1 2 3 10 11 12 13 14 15
Skewed Binary Search Trees
6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Skewed Binary Search Trees
7
≤ 1 −α log2 α − (1 − α) log2(1 − α)
· n + 1 n · log2(n + 1) − 2
Nievergelt and E. M. Reingold, 1972
Skewed Binary Search Trees
8
α 1/H(α) 1 0.8 0.6 0.4 0.2 10 8 6 4 2
Skewed Binary Search Trees
9
α Comparisons 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 3.5e+08 3e+08 2.5e+08 2e+08 1.5e+08 1e+08 5e+07
n = 50.000
Skewed Binary Search Trees
10
α Running time 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.28 0.275 0.27 0.265 0.26 0.255 0.25 0.245 0.24 0.235
Best running time achieved for α ≈ 0.3 !?
Skewed Binary Search Trees
11
Skewed Binary Search Trees
12
Skewed Binary Search Trees
13
Skewed Binary Search Trees
14
cost(α) = (α · {left cost} + (1 − α) · {right cost})/H(α)
α cost(α) 1 0.8 0.6 0.4 0.2 8 7 6 5 4 3 2 1
left cost = 1 and right cost = 3
Skewed Binary Search Trees
15
cost(α) = (α · {left cost} + (1 − α) · {right cost})/H(α)
α cost(α) 1 0.8 0.6 0.4 0.2 8 7 6 5 4 3 2 1
left cost = 1 and right cost = 0 .. 28
Skewed Binary Search Trees
16
Skewed Binary Search Trees
17
while(root!=NULLV) { if(key==t[root].key) return root; if(key>t[root].key) root=t[root].right; else root=t[root].left; }
Skewed Binary Search Trees
18
α Branch mispredictions 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 8e+06 7e+06 6e+06 5e+06 4e+06 3e+06 2e+06
n = 50.000
Skewed Binary Search Trees
19
7 1 3 4 5 6 2
4 5 1 7 6 2 3
Random – O( log n
H(α)) I/Os
1 2 3 4 5 6 7
Inorder – O( log n
H(α) − log B) I/Os
3 1 5 2 4 6 7
BFS – O( log n
H(α) − log B) I/Os
3 5 6 7 4 1 2
DFSr – O( α+(1−α)/B
H(α)
· log n) I/Os.
Skewed Binary Search Trees
20
Rand Inord BFS DFSr DFSl α Running time 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.4 0.35 0.3 0.25 0.2 0.15 0.1
DFS < Inorder < BFS < Random DFS achieves the best performance for α ≈ 0.2 !
Skewed Binary Search Trees
21
Rand Inord BFS DFSr DFSl α Cache misses 1 0.8 0.6 0.4 0.2 3e+07 2.5e+07 2e+07 1.5e+07 1e+07 5e+06
DFS ≈ expected left cost = 1 and right cost = 1/B.
Skewed Binary Search Trees
22
13 14 15 11 12 7 8 9 10 3 4 5 1 2 6
6 2 10 1 3 4 5 7 8 9 12 11 13 14 15
Skewed Binary Search Trees
23
13 14 15 11 12 7 8 9 10 3 4 5 1 2 6
9 2 1 1 15 5 2 3 1 1 3 2 1 5 3
6 10 2 12 13 14 15 1 5 4 3 9 8 7 11
Skewed Binary Search Trees
24
13 14 15 11 12 7 8 9 10 3 4 5 1 2 6
9 2 1 1 15 5 2 3 1 1 2 1 5 3 3
top
6 10 2 12 13 14 15 1 7 8 9 3 4 5 11
Skewed Binary Search Trees
25
pqDFS bDFS vEB DFSr α Running time 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.22 0.21 0.2 0.19 0.18 0.17 0.16 0.15 0.14 0.13
vEB achieves the fastest running time for α ≈ .25
Skewed Binary Search Trees
26
pqDFS bDFS vEB DFSr α Cache misses 1 0.8 0.6 0.4 0.2 1e+07 8e+06 6e+06 4e+06 2e+06
vEB achieves the smallest number of cache faults
Skewed Binary Search Trees
27
α Comparisons 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 3.5e+08 3e+08 2.5e+08 2e+08 1.5e+08 1e+08 5e+07 pqDFS bDFS vEB DFSr α Running time 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.22 0.21 0.2 0.19 0.18 0.17 0.16 0.15 0.14 0.13 α Branch mispredictions 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 8e+06 7e+06 6e+06 5e+06 4e+06 3e+06 2e+06 pqDFS bDFS vEB DFSr α Cache misses 1 0.8 0.6 0.4 0.2 1e+07 8e+06 6e+06 4e+06 2e+06
Skewed Binary Search Trees
28
Skewed Binary Search Trees
29