PFDS 6.4.3

31
PFDS 6.4.3 Bottom-Up Mergesort with Sharing @rf0444

Transcript of PFDS 6.4.3

Page 1: PFDS 6.4.3

PFDS 6.4.3Bottom-Up Mergesort

with Sharing

@rf0444

Page 2: PFDS 6.4.3

Bottom-UP Mergesort5 7 4 1 8 32

Page 3: PFDS 6.4.3

Bottom-UP Mergesort

5 7 4 1 8 32

Page 4: PFDS 6.4.3

Bottom-UP Mergesort

5 7 4 1 8 32

5 7 41 832

Page 5: PFDS 6.4.3

Bottom-UP Mergesort

5 7 4 1 8 32

5 7 41 832

5 7 41 832

Page 6: PFDS 6.4.3

Bottom-UP Mergesort

5 7 41 832

Page 7: PFDS 6.4.3

Bottom-UP Mergesort

5 7 41 832

5 7 41 832

Page 8: PFDS 6.4.3

Bottom-UP Mergesort

5 7 41 832

5 7 41 832

5 741 832

Page 9: PFDS 6.4.3

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

Page 10: PFDS 6.4.3

with Sharing

7 4 1 8 3

Page 11: PFDS 6.4.3

with Sharing

7 4 1 8 3 7 41 83

Page 12: PFDS 6.4.3

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

Page 13: PFDS 6.4.3

with Sharing

7 41 83

7 41 832

41 835 72

sort

741 83

741 83

741 83

2

52

Page 14: PFDS 6.4.3

add’s cost

unshared cost = 1

shared cost = addSeg’s cost

Page 15: PFDS 6.4.3

add’s cost

addSeg’s cost

41 835 726

Page 16: PFDS 6.4.3

add’s cost

addSeg’s cost

41 835 726

41 835 726(1 + 1)

Page 17: PFDS 6.4.3

add’s cost

addSeg’s cost

41 835 726

41 835 726(1 + 1)

41 835 72 6(1 + 1) + (2 + 2)

Page 18: PFDS 6.4.3

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

Page 19: PFDS 6.4.3

add’s cost

addSeg’s cost

・・・

add時に、左 k ブロックが埋まっているとすると、

(1 + 1) + (2 + 2) + ... + (2 + 2 ) = 2 (2 - 1)kk-1 k-1

Page 20: PFDS 6.4.3

add’s cost

complete cost

= unshared cost + shared cost

= 1 + 2 (2 - 1)

= 2 - 1

k

k+1

Page 21: PFDS 6.4.3

add’s cost

amortized cost

= complete cost - change in potential

Page 22: PFDS 6.4.3

potential

ψ(n) = 2n - 2 Σ b (n mod 2 - 1)

0 ≦ ψ(n) ≦ 2ni = 0 i

i

Page 23: PFDS 6.4.3

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

+

+

+

+

+

+

+

+

+

+

+

=

=

=

=

=

=

=

=

=

=

=

Page 24: PFDS 6.4.3

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

Page 25: PFDS 6.4.3

change in potential

ψ(n + 1) - ψ(n) = 2 - 2 B’

B’ = n + 1 をビット表現したときの 1 の数

k+1

Page 26: PFDS 6.4.3

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

Page 27: PFDS 6.4.3

sort’s cost

41 835 72

Page 28: PFDS 6.4.3

sort’s cost

41 835 72

41 835 72(1 + 2)

Page 29: PFDS 6.4.3

sort’s cost

41 835 72

741 83 52

41 835 72(1 + 2)

(1 + 2) + (1 + 2 + 4)

Page 30: PFDS 6.4.3

sort’s cost

・・・

(1 + 2) + (1 + 2 + 4) + ... + (1 + 2 + ... + 2 ) = (2 - 4) - (k - 1) = 2n - k - 1

k-1

k+1

Page 31: PFDS 6.4.3

sort’s cost

amortized cost

= (2n - k - 1) + ψ(n)

< 4n

O(n)