skewed binary search trees
Post on 06-Feb-2017
244 Views
Preview:
TRANSCRIPT
Skewed Binary Search Trees
13
14
15
11
127
8
9
10
3
4
5
1
2
6
Gerth Stølting BrodalUniversity 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
α = 0.05
Skewed Binary Search Trees 7
Skewed Binary Search Trees— Average Node Depth
≤ 1
−α log2 α − (1 − α) log2(1 − α)︸ ︷︷ ︸
H(α)
· n + 1
n· log2(n + 1) − 2
Nievergelt and E. M. Reingold, 1972
Skewed Binary Search Trees 8
Comparisons
α
Com
paris
ons
10.90.80.70.60.50.40.30.20.1
3.5e+08
3e+08
2.5e+08
2e+08
1.5e+08
1e+08
5e+07
0
n = 50.000
Skewed Binary Search Trees 10
Running Time
α
Run
ning
time
0.90.80.70.60.50.40.30.20.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
Conclusion
Skewed binary search trees
can beat
Perfectly balanced binary search trees !
Skewed Binary Search Trees 12
Why ?
The costs going left and right are different !
Possible reasons• Number of instructions
• Branch mispredictions
• Cache faults (what is a good memory layout?)
• ...
Skewed Binary Search Trees 14
Expected Costcost(α) = (α · {left cost} + (1 − α) · {right cost})/H(α)
α
cost
(α)
10.80.60.40.20
8
7
6
5
4
3
2
1
0
left cost = 1 and right cost = 3
Skewed Binary Search Trees 15
Expected Costcost(α) = (α · {left cost} + (1 − α) · {right cost})/H(α)
α
cost
(α)
10.80.60.40.20
8
7
6
5
4
3
2
1
0
left cost = 1 and right cost = 0 .. 28
Skewed Binary Search Trees 16
Experimental setup
• AMD Athlon XP 2400+
• 2.0 GHz
• 256 KB L2 cache
• 64 KB L1 data cache
• 64 KB L1 instruction cache
• 1GB RAM
• Linux 2.6.8.1
• GCC 3.3.2
• Tree nodes = 12 bytes
• No unsuccesful searches
Skewed Binary Search Trees 17
Search Code
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
α
Bra
nch
mis
pred
ictio
ns
10.90.80.70.60.50.40.30.20.1
8e+06
7e+06
6e+06
5e+06
4e+06
3e+06
2e+06
n = 50.000
Skewed Binary Search Trees 19
Simple Layouts
7
1
3
4
5
62
4 5 1 7 6 2 3
Random – O( log nH(α)
) I/Os
1 2 3 4 5 6 7
Inorder – O( log nH(α)
− log B) I/Os
3 1 5 2 4 6 7
BFS – O( log nH(α)
− log B) I/Os
3 5 6 7 4 1 2
DFSr – O(α+(1−α)/BH(α)
· log n) I/Os.
Skewed Binary Search Trees 20
Running Time for Simple Layouts
RandInordBFS
DFSrDFSl
α
Run
ning
time
0.90.80.70.60.50.40.30.20.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
Cache Faults for Simple Layouts
RandInordBFS
DFSrDFSl
α
Cac
hem
isse
s
10.80.60.40.20
3e+07
2.5e+07
2e+07
1.5e+07
1e+07
5e+06
0
DFS ≈ expected left cost = 1 and right cost = 1/B.
Skewed Binary Search Trees 22
Blocked Layouts — k-level blocking
13
14
15
11
127
8
9
10
3
4
5
1
2
6
k = 2
6 2 10 1 3 4 5 7 8 9 12 11 13 14 15
• layout the nodes of the first k levels
• recurse on subtrees
• a search uses O(logB n/H(α)) I/Os
Skewed Binary Search Trees 23
Blocked Layouts — pqDFS k
13
14
15
11
127
8
9
10
3
4
5
1
2
6
9
2
1
1
15
5
2
3
1
1 3
2
1
5
3
k = 3
6 10 2 12 13 14 15 154398711
• layout the k heavest nodes in order of decreasing size
• recurse on subtrees in order of decreasing size
• a search uses O(logBα+1 n) I/Os
Skewed Binary Search Trees 24
Blocked Layouts — veb
13
14
15
11
127
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 17 8 9 3 4 5 11
• top = ⌈√n⌉ heavest nodes
• recurse on top and bottom trees in order of decreasing size
• a search uses O(logBα+1 n) I/Os
Skewed Binary Search Trees 25
Running Time for Blocked Layouts
pqDFSbDFS
vEBDFSr
α
Run
ning
time
0.90.80.70.60.50.40.30.20.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
Cache Faults for Blocked Layouts
pqDFSbDFS
vEBDFSr
α
Cac
hem
isse
s
10.80.60.40.20
1e+07
8e+06
6e+06
4e+06
2e+06
0
vEB achieves the smallest number of cache faults
Skewed Binary Search Trees 27
Experimental Summary
α
Com
paris
ons
10.90.80.70.60.50.40.30.20.1
3.5e+08
3e+08
2.5e+08
2e+08
1.5e+08
1e+08
5e+07
0
pqDFSbDFS
vEBDFSr
α
Run
ning
time
0.90.80.70.60.50.40.30.20.1
0.22
0.21
0.2
0.19
0.18
0.17
0.16
0.15
0.14
0.13
α
Bra
nch
mis
pred
ictio
ns
10.90.80.70.60.50.40.30.20.1
8e+06
7e+06
6e+06
5e+06
4e+06
3e+06
2e+06
pqDFSbDFS
vEBDFSr
α
Cac
hem
isse
s
10.80.60.40.20
1e+07
8e+06
6e+06
4e+06
2e+06
0
Skewed Binary Search Trees 28
top related