0% found this document useful (0 votes)
42 views27 pages

CS 332: Algorithms: Merge Sort Solving Recurrences The Master Theorem

The document discusses topics related to algorithms analysis, including: - Recurrence relations and methods for solving them like substitution and iteration. - Examples of solving recurrences using these methods, like for merge sort. - Asymptotic notation like Big-O to describe algorithm running times. - The master theorem for solving divide and conquer recurrences.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
Download as ppt, pdf, or txt
0% found this document useful (0 votes)
42 views27 pages

CS 332: Algorithms: Merge Sort Solving Recurrences The Master Theorem

The document discusses topics related to algorithms analysis, including: - Recurrence relations and methods for solving them like substitution and iteration. - Examples of solving recurrences using these methods, like for merge sort. - Asymptotic notation like Big-O to describe algorithm running times. - The master theorem for solving divide and conquer recurrences.
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1/ 27

CS 332: Algorithms

Merge Sort
Solving Recurrences
The Master Theorem

Administrative Question
Who here cannot make Monday-Wednesday
office hours at 10 AM?
If nobody, should we change class time?

Homework 1

Homework 1 will be posted later today

(Problem with the exercise numbering, sorry)


Due Monday Jan 28 at 9 AM
Should be a fairly simple warm-up problem set

Review: Asymptotic Notation

Upper Bound Notation:

f(n) is O(g(n)) if there exist positive constants c


and n0 such that f(n) c g(n) for all n n0

Formally, O(g(n)) = { f(n): positive constants c


and n0 such that f(n) c g(n) n n0

Big O fact:

A polynomial of degree k is O(nk)

Review: Asymptotic Notation

Asymptotic lower bound:

f(n) is (g(n)) if positive constants c and n0 such


that
0 cg(n) f(n) n n0

Asymptotic tight bound:

f(n) is (g(n)) if positive constants c1, c2, and n0


such that
c1 g(n) f(n) c2 g(n) n n0
f(n) = (g(n)) if and only if
f(n) = O(g(n)) AND f(n) = (g(n))

Other Asymptotic Notations

A function f(n) is o(g(n)) if positive


constants c and n0 such that
f(n) < c g(n) n n0

A function f(n) is (g(n)) if positive


constants c and n0 such that
c g(n) < f(n) n n0

Intuitively,

o() is like <


O() is like

() is like >
() is like

() is like =

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?)

Merge Sort: Example

Show MergeSort() running on the array


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

Analysis of Merge Sort


Statement

Effort

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);
}
}
So T(n) = (1) when n = 1, and

2T(n/2) + (n) when n > 1


So what (more succinctly) is T(n)?

T(n)
(1)
(1)
T(n/2)
T(n/2)
(n)

Recurrences

The expression:

n 1

T ( n)

2T cn n 1

2
is a recurrence.

Recurrence: an equation that describes a function in


terms of its value on smaller functions

Recurrence Examples
0
n0
s ( n)
c s (n 1) n 0

s ( n)

n 1

2T c n 1

n0

n s (n 1) n 0

T ( n)

T ( n)

n 1

n
aT cn n 1
b

Solving Recurrences
Substitution method
Iteration method
Master method

Solving Recurrences

The substitution method (CLR 4.1)

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
Examples:
T(n) = 2T(n/2) + (n) T(n) = (n lg n)
T(n) = 2T( n/2 ) + n ???

Solving Recurrences

The substitution method (CLR 4.1)

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
Examples:
T(n) = 2T(n/2) + (n) T(n) = (n lg n)
T(n) = 2T( n/2 ) + n T(n) = (n lg n)
T(n) = 2T( n/2 )+ 17) + n ???

Solving Recurrences

The substitution method (CLR 4.1)

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
Examples:
T(n) = 2T(n/2) + (n) T(n) = (n lg n)
T(n) = 2T( n/2 ) + n T(n) = (n lg n)
T(n) = 2T( n/2 + 17) + n (n lg n)

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

0
n0
s ( n)
c s (n 1) n 0

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
n0
s ( n)
c s (n 1) n 0

So far for n >= k we have

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

What if k = n?

s(n) = cn + s(0) = cn

0
n0
s ( n)
c s (n 1) n 0

So far for n >= k we have

What if k = n?

s(n) = ck + s(n-k)
s(n) = cn + s(0) = cn

So

0
n0
s ( n)
c s (n 1) n 0
Thus in general

s(n) = cn

s ( n)

n0

n s (n 1) n 0

=
=
=
=
=
=

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)

s ( n)

n0

n s (n 1) n 0

=
=
=
=
=
=

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)


n

i n k 1

s(n k )

s ( n)

n0

n s (n 1) n 0

So far for n >= k we have


n

i n k 1

s(n k )

s ( n)

n0

n s (n 1) n 0

So far for n >= k we have


n

s(n k )

i n k 1

What if k = n?

s ( n)

n0

n s (n 1) n 0

So far for n >= k we have


n

s(n k )

i n k 1

What if k = n?

n 1
i s (0) i 0 n

2
i 1
i 1
n

s ( n)

n0

n s (n 1) n 0

So far for n >= k we have


n

s(n k )

i n k 1

What if k = n?

n 1
i s (0) i 0 n

2
i 1
i 1
n

Thus in general

n 1
s ( n) n
2

T (n) 2T

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

c
n 1
n
c n 1
2

T (n) 2T

So far for n > 2k we have

c
n 1
n
c n 1
2

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

You might also like