CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

37
CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem

Transcript of CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Page 1: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

CS 2133:Data Structures

Merge Sort

Solving Recurrences

The Master Theorem

Page 2: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Merge Sort

MergeSort(A, left, right) {

if (left < right) {

mid = floor((left + right) / 2);

MergeSort(A, left, mid);

MergeSort(A, mid+1, right);

Merge(A, left, mid, right);

}

}

// Merge() takes two sorted subarrays of A and

// merges them into a single sorted subarray of A

// (how long should this take?)

Page 3: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Merge Sort: Example

Show MergeSort() running on the array

A = {10, 5, 7, 6, 1, 4, 8, 3, 2, 9};

Page 4: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Analysis of Merge Sort

Statement Effort

So T(n) = (1) when n = 1, and

2T(n/2) + (n) when n > 1 So what (more succinctly) is T(n)?

MergeSort(A, left, right) { T(n) if (left < right) { (1) mid = floor((left + right) / 2); (1) MergeSort(A, left, mid); T(n/2) MergeSort(A, mid+1, right); T(n/2) Merge(A, left, mid, right); (n) }}

Page 5: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Recurrences

The expression:

is a recurrence. Recurrence: an equation that describes a function

in terms of its value on smaller functions

1

22

1

)(nc

nT

nc

nT

Page 6: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Recurrence Examples

0

0

)1(

0)(

n

n

nscns

0)1(

00)(

nnsn

nns

1

22

1

)(nc

nT

nc

nT

1

1

)(

ncnb

naT

nc

nT

Page 7: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Solving Recurrences

Substitution method Iteration method Master method

Page 8: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Solving Recurrences

The substitution method A.k.a. the “making a good guess method” Guess the form of the answer, then use induction

to find the constants and show that solution works This and several other methods are usually done in

discrete math so we will skip them at this time.

Page 9: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Solving Recurrences

Another option is what the book calls the “iteration method” Expand the recurrence Work some algebra to express as a summation Evaluate the summation

We will show several examples

Page 10: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

s(n) =

c + s(n-1)

c + c + s(n-2)

2c + s(n-2)

2c + c + s(n-3)

3c + s(n-3)

kc + s(n-k) = ck + s(n-k)

0)1(

00)(

nnsc

nns

Page 11: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So far for n >= k we have s(n) = ck + s(n-k)

What if k = n? s(n) = cn + s(0) = cn

0)1(

00)(

nnsc

nns

Page 12: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So far for n >= k we have s(n) = ck + s(n-k)

What if k = n? s(n) = cn + s(0) = cn

So

Thus in general s(n) = cn

0)1(

00)(

nnsc

nns

0)1(

00)(

nnsc

nns

Page 13: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

s(n)

= n + s(n-1)

= n + n-1 + s(n-2)

= n + n-1 + n-2 + s(n-3)

= n + n-1 + n-2 + n-3 + s(n-4)

= …

= n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k)

0)1(

00)(

nnsn

nns

Page 14: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

s(n)

= n + s(n-1)

= n + n-1 + s(n-2)

= n + n-1 + n-2 + s(n-3)

= n + n-1 + n-2 + n-3 + s(n-4)

= …

= n + n-1 + n-2 + n-3 + … + n-(k-1) + s(n-k)

=

0)1(

00)(

nnsn

nns

)(1

knsin

kni

Page 15: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So far for n >= k we have

0)1(

00)(

nnsn

nns

)(1

knsin

kni

Page 16: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So far for n >= k we have

What if k = n?

0)1(

00)(

nnsn

nns

)(1

knsin

kni

Page 17: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So far for n >= k we have

What if k = n?

0)1(

00)(

nnsn

nns

)(1

knsin

kni

2

10)0(

11

nnisi

n

i

n

i

Page 18: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So far for n >= k we have

What if k = n?

Thus in general

0)1(

00)(

nnsn

nns

)(1

knsin

kni

2

10)0(

11

nnisi

n

i

n

i

2

1)(

nnns

Page 19: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

T(n) =

2T(n/2) + c

2(2T(n/2/2) + c) + c

22T(n/22) + 2c + c

22(2T(n/22/2) + c) + 3c

23T(n/23) + 4c + 3c

23T(n/23) + 7c

23(2T(n/23/2) + c) + 7c

24T(n/24) + 15c

2kT(n/2k) + (2k - 1)c

1

22

1)( nc

nT

ncnT

Page 20: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So far for n > 2k we have T(n) = 2kT(n/2k) + (2k - 1)c

What if k = lg n? T(n) = 2lg n T(n/2lg n) + (2lg n - 1)c

= n T(n/n) + (n - 1)c

= n T(1) + (n-1)c

= nc + (n-1)c = (2n - 1)c

1

22

1)( nc

nT

ncnT

Page 21: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

T(n) =

aT(n/b) + cn

a(aT(n/b/b) + cn/b) + cn

a2T(n/b2) + cna/b + cn

a2T(n/b2) + cn(a/b + 1)

a2(aT(n/b2/b) + cn/b2) + cn(a/b + 1)

a3T(n/b3) + cn(a2/b2) + cn(a/b + 1)

a3T(n/b3) + cn(a2/b2 + a/b + 1)

akT(n/bk) + cn(ak-1/bk-1 + ak-2/bk-2 + … + a2/b2 + a/b + 1)

1

1)( ncn

b

naT

ncnT

Page 22: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So we have T(n) = akT(n/bk) + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)

For k = logb n n = bk

T(n) = akT(1) + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)

= akc + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)

= cak + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)

= cnak /bk + cn(ak-1/bk-1 + ... + a2/b2 + a/b + 1)

= cn(ak/bk + ... + a2/b2 + a/b + 1)

1

1)( ncn

b

naT

ncnT

Page 23: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a = b? T(n) = cn(k + 1)

= cn(logb n + 1)

= (n log n)

1

1)( ncn

b

naT

ncnT

Page 24: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a < b?

1

1)( ncn

b

naT

ncnT

Page 25: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a < b? Recall that (xk + xk-1 + … + x + 1) = (xk+1 -1)/(x-1)

1

1)( ncn

b

naT

ncnT

Page 26: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a < b? Recall that (xk + xk-1 + … + x + 1) = (xk+1 -1)/(x-1) So:

1

1)( ncn

b

naT

ncnT

baba

ba

ba

ba

b

a

b

a

b

a kk

k

k

k

k

1

1

1

1

1

11

11

1

1

Page 27: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a < b? Recall that (xk + xk-1 + … + x + 1) = (xk+1 -1)/(x-1) So:

T(n) = cn ·(1) = (n)

1

1)( ncn

b

naT

ncnT

baba

ba

ba

ba

b

a

b

a

b

a kk

k

k

k

k

1

1

1

1

1

11

11

1

1

Page 28: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a > b?

1

1)( ncn

b

naT

ncnT

Page 29: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a > b?

1

1)( ncn

b

naT

ncnT

k

k

k

k

k

k

baba

ba

b

a

b

a

b

a

1

11

1

1

1

Page 30: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a > b?

T(n) = cn · (ak / bk)

1

1)( ncn

b

naT

ncnT

k

k

k

k

k

k

baba

ba

b

a

b

a

b

a

1

11

1

1

1

Page 31: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a > b?

T(n) = cn · (ak / bk)

= cn · (alog n / blog n) = cn · (alog n / n)

1

1)( ncn

b

naT

ncnT

k

k

k

k

k

k

baba

ba

b

a

b

a

b

a

1

11

1

1

1

Page 32: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a > b?

T(n) = cn · (ak / bk)

= cn · (alog n / blog n) = cn · (alog n / n)

recall logarithm fact: alog n = nlog a

1

1)( ncn

b

naT

ncnT

k

k

k

k

k

k

baba

ba

b

a

b

a

b

a

1

11

1

1

1

Page 33: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a > b?

T(n) = cn · (ak / bk)

= cn · (alog n / blog n) = cn · (alog n / n)

recall logarithm fact: alog n = nlog a

= cn · (nlog a / n) = (cn · nlog a / n)

1

1)( ncn

b

naT

ncnT

k

k

k

k

k

k

baba

ba

b

a

b

a

b

a

1

11

1

1

1

Page 34: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So with k = logb n T(n) = cn(ak/bk + ... + a2/b2 + a/b + 1)

What if a > b?

T(n) = cn · (ak / bk)

= cn · (alog n / blog n) = cn · (alog n / n)

recall logarithm fact: alog n = nlog a

= cn · (nlog a / n) = (cn · nlog a / n)

= (nlog a )

1

1)( ncn

b

naT

ncnT

k

k

k

k

k

k

baba

ba

b

a

b

a

b

a

1

11

1

1

1

Page 35: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

So…

1

1)( ncn

b

naT

ncnT

ca

cb

c

ban

bann

ban

nTblog

log)(

A Simple form of the Master Method

Page 36: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Using The Master Method

T(n) = 9T(n/3) + n a=9, b=3, c = 1 Now 9 > 31

Thus the solution is T(n) = (n2)T(n) = 2T(n/2) + n

a=2, b=2, c = 1

Now 2= 21

Thus the solution is T(n) = (n log n)

Page 37: CS 2133:Data Structures Merge Sort Solving Recurrences The Master Theorem.

Homework

Go to my web page and download homework 2.this is a collection of recurrence relations that youwill apply the master method and the iterationmethod to.