CSC 301.01, Class 07: The Master Theorem
Overview
 Preliminaries
 Notes and news
 Upcoming work
 Extra credit
 Friday PSA
 Questions
 Detour  Recursion vs. iteration
 Recursion trees, revisited
 Proving asymptotic bounds of recursive functions
 The master theorem
News / Etc.
 We are now 1/7 of the way through CSC 301. After today’s class, we’ll be 1/6 of the way through CSC 301.
 I hope to get homework back to you on Monday. (Probably only one of the two, but we’ll see.)
Upcoming work
 Reading for Monday: Review the Master theorem in CLRS 4.
 Assignment 3, due 10:30 pm next Wednesday
Extra credit (Academic)
 CS Table, Tuesday, Machine Ethics
Extra credit (Peer)
 Sign up for CS picnic (but only if you plan to attend). (You can reflect on the signup process or on the picnic itself.)
Extra Credit (Misc)
 Host a prospective student [ohc]
Other good things
 Women’s Tennis vs. Coe, TODAY at 4:30 p.m., High School
 Women’s Tennis vs. Lake Forest, Saturday at 9 am High School
 Women’s Tennis vs. Beloit, Saturday at 3 pm High School
 Les Duke Cross Country Meet, Saturday at 9 a.m., Country Club
 Men’s Soccer vs. North Central College, Saturday at 1:00 p.m., Springer Field
 Women’s Soccer vs. University of WisconsinOshkosh, Sunday at 1:00 p.m., Springer Field
Friday PSA
 You’re great people.
 Please stay that way.
Questions
 On assignment 3, we have code and written.
 Email Sam tarball of code.
 Put written under Sam’s door (or in the envelope, if he ever puts one out)
Recursion trees, revisited
 Drawing trees can help us estimate the running time!
 We show the size of the problem at each level.
 We can sum across each level to see the work at that level.
 We then sum those sums to get an overall estimate of the running time.
 This analysis requires that we identify the sum of the values at each level and the number of levels.
 On Wednesday, we built the recursion tree for
T(n) = 2*T(n/2) + cn
.
Exercises
 Build the recursion tree for
T(n) = 2*T(n/2) + c
.  Build the recursion tree for
T(n) = 2*T(n/2) + n^2
.  Build the recursion tree for
T(n) = 3*T(n/2) + c
.
Detour: Recursion vs. iteration
Solving recurrence relations with the Master Theorem
The master theorem works for recurrences of the form
T(n) = aT(n/b)+f(n)
or T(n) <= aT(n/b)+f(n)
 What does
a
represent?  What does
b
represent?  What does
f(n)
represent?
There’s a simpler version (which I’m taking from Weiss). This is
for recurrences of the form T(n) = aT(n/b) + O(n^k)

If a > b^k, then T(n) is in O(n^(log_b(a)))

If a = b^k, then T(n) is in O((n^k)*log_2(n)))

If a < b^k, then T(n) is in O(n^k)
I may need to recheck those.
We’ll try some basic examples.
The more general computation depends on the relationship between f(n) and
how quickly the n/b
drops to 0.

If
f(n)
is inO(n^(log_b(a)e))
for somee
> 0, thenT(n)
is inTheta(n^(log_b(a)))

If
f(n)
is inTheta(n^log_b(a))
, thenT(n)
is inTheta(n^(log_b(a)*log(n)))

If
f(n)
is inOmega(n^(log_b(a)+e))
_ for somee
> 0, andaf(n/b) <= cf(n)
for somec
< 1 and large enoughn
, thenT(n)
is inTheta(f(n))
.