PFDS 6.4.3
Transcript of PFDS 6.4.3
PFDS 6.4.3Bottom-Up Mergesort
with Sharing
@rf0444
Bottom-UP Mergesort5 7 4 1 8 32
Bottom-UP Mergesort
5 7 4 1 8 32
Bottom-UP Mergesort
5 7 4 1 8 32
5 7 41 832
Bottom-UP Mergesort
5 7 4 1 8 32
5 7 41 832
5 7 41 832
Bottom-UP Mergesort
5 7 41 832
Bottom-UP Mergesort
5 7 41 832
5 7 41 832
Bottom-UP Mergesort
5 7 41 832
5 7 41 832
5 741 832
with Sharing
7 4 1 8 3
7 4 1 8 32
5 7 4 1 8 32 5 741 832
741 832
741 83
with Sharing
7 4 1 8 3
with Sharing
7 4 1 8 3 7 41 83
with Sharing
7 4 1 8 3 7 41 83
7 4 1 8 32 7 41 832
5 7 4 1 8 32 41 835 72
add
with Sharing
7 41 83
7 41 832
41 835 72
sort
741 83
741 83
741 83
2
52
add’s cost
unshared cost = 1
shared cost = addSeg’s cost
add’s cost
addSeg’s cost
41 835 726
add’s cost
addSeg’s cost
41 835 726
41 835 726(1 + 1)
add’s cost
addSeg’s cost
41 835 726
41 835 726(1 + 1)
41 835 72 6(1 + 1) + (2 + 2)
add’s cost
addSeg’s cost
41 835 726
41 835 726(1 + 1)
(1 + 1) + (2 + 2)
(1 + 1) + (2 + 2) + (4 + 4)
41 835 72 6
41 83 5 72 6
add’s cost
addSeg’s cost
・・・
add時に、左 k ブロックが埋まっているとすると、
(1 + 1) + (2 + 2) + ... + (2 + 2 ) = 2 (2 - 1)kk-1 k-1
add’s cost
complete cost
= unshared cost + shared cost
= 1 + 2 (2 - 1)
= 2 - 1
k
k+1
add’s cost
amortized cost
= complete cost - change in potential
potential
ψ(n) = 2n - 2 Σ b (n mod 2 - 1)
0 ≦ ψ(n) ≦ 2ni = 0 i
i
potentialn
0
1
2
3
4
5
6
7
8
9
10
0 1 2 3
-2
-2
-2 -4
-2
-2 -4
-2 -6
-2 -4 -8
-2
-2 -4
-2 -6
2n
0
2
4
6
8
10
12
14
16
18
20
b の項
ψ(n)
0
0
2
0
6
4
4
0
14
12
12
+
+
+
+
+
+
+
+
+
+
+
=
=
=
=
=
=
=
=
=
=
=
change in potentialn
0
1
2
3
4
5
6
7
8
9
ψ(n + 1)
0
2
0
6
4
4
0
14
12
12
ψ(n)
0
0
2
0
6
4
4
0
14
12
ψ(n + 1) - ψ(n)
0
2
-2
6
-2
0
-4
14
-2
0
change in potential
ψ(n + 1) - ψ(n) = 2 - 2 B’
B’ = n + 1 をビット表現したときの 1 の数
k+1
add’s cost
amortized cost
= complete cost - change in potential
= (2 - 1) - (2 - 2 B’)
= 2 B’ - 1
O(log n)
k+1 k+1
sort’s cost
41 835 72
sort’s cost
41 835 72
41 835 72(1 + 2)
sort’s cost
41 835 72
741 83 52
41 835 72(1 + 2)
(1 + 2) + (1 + 2 + 4)
sort’s cost
・・・
(1 + 2) + (1 + 2 + 4) + ... + (1 + 2 + ... + 2 ) = (2 - 4) - (k - 1) = 2n - k - 1
k-1
k+1
sort’s cost
amortized cost
= (2n - k - 1) + ψ(n)
< 4n
O(n)