52
Solving Recurrences I COMS10007 2020, Lecture 13 Dr. John Lapinskas (substituting for Dr. Christian Konrad) March 16th 2020 John Lapinskas Lecture 27 March 16th 2020 1 / 14

Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Solving Recurrences ICOMS10007 2020, Lecture 13

Dr. John Lapinskas(substituting for Dr. Christian Konrad)

March 16th 2020

John Lapinskas Lecture 27 March 16th 2020 1 / 14

Page 2: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Divide-and-conquer algorithms

Many algorithms in this course (and in general!) follow thedivide-and-conquer approach:

1 Divide the problem into smaller instances of the same problem.

2 Conquer the subproblems by solving them, either recursively ordirectly.

3 Combine the solutions to the subproblems into a solution for theoriginal problem.

For example:

Mergesort.

Quicksort.

The maximum subarray algorithm.

Binary search.

Fast-Peak-Finding.

John Lapinskas Lecture 27 March 16th 2020 2 / 14

Page 3: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Divide-and-conquer algorithms

Many algorithms in this course (and in general!) follow thedivide-and-conquer approach:

1 Divide the problem into smaller instances of the same problem.

2 Conquer the subproblems by solving them, either recursively ordirectly.

3 Combine the solutions to the subproblems into a solution for theoriginal problem.

For example:

Mergesort.

Quicksort.

The maximum subarray algorithm.

Binary search.

Fast-Peak-Finding.

John Lapinskas Lecture 27 March 16th 2020 2 / 14

Page 4: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Example: Merge sort

Recall: Merge Sort

1 DivideSplit input array A of length n into subarrays A1 = A[0, bn/2c]and A2 = A[bn/2c+ 1, n − 1]

Runtime: (assuming that n is a power of 2)

T (1) = O(1)

T (n) = 2T (n/2) + O(n)

Dr. Christian Konrad Lectures 13/14: Solving Recurrences 3 / 15

Page 5: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Example: Merge sort

Recall: Merge Sort

1 Divide A→ A1 and A2

2 ConquerSort A1 and A2 recursively using the same algorithm

Runtime: (assuming that n is a power of 2)

T (1) = O(1)

T (n) = 2T (n/2) + O(n)

Dr. Christian Konrad Lectures 13/14: Solving Recurrences 3 / 15

Page 6: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Example: Merge sort

Recall: Merge Sort

1 Divide A→ A1 and A2

2 Conquer Solve A1 and A2

3 CombineCombine sorted subarrays A1 and A2 and obtain sorted array A

Runtime: (assuming that n is a power of 2)

T (1) = O(1)

T (n) = 2T (n/2) + O(n)

Dr. Christian Konrad Lectures 13/14: Solving Recurrences 3 / 15

Page 7: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Example: Merge sort

Recall: Merge Sort

1 Divide A→ A1 and A2

2 Conquer Solve A1 and A2

3 CombineCombine sorted subarrays A1 and A2 and obtain sorted array A

Runtime: (assuming that n is a power of 2)

T (1) = O(1)

T (n) = 2T (n/2) + O(n)

Dr. Christian Konrad Lectures 13/14: Solving Recurrences 3 / 15

Page 8: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

How to solve recurrences?

Recurrences

Divide-and-conquer algorithms naturally lead to recurrences(or “recurrence relations”) like that one.

How can we solve them? Or at least get a decent upper bound?

Methods for solving recurrences

Recursion-tree method (as used for mergesort and max subarray).Often has too many awkward details (e.g. floors and ceilings, pivots),but great for getting intuition.

Substitution method (this lecture).Very powerful, but needs a reasonable initial guess.

The “Master Theorem”.Only applies to recurrences of the form T(n) = aT(n/b) + f(n), butmakes things trivial when it does apply. Not covered in this course.

Generally: use recursion-tree to get a guess for substitution!

John Lapinskas Lecture 27 March 16th 2020 3 / 14

Page 9: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

How to solve recurrences?

Recurrences

Divide-and-conquer algorithms naturally lead to recurrences(or “recurrence relations”) like that one.

How can we solve them? Or at least get a decent upper bound?

Methods for solving recurrences

Recursion-tree method (as used for mergesort and max subarray).Often has too many awkward details (e.g. floors and ceilings, pivots),but great for getting intuition.

Substitution method (this lecture).Very powerful, but needs a reasonable initial guess.

The “Master Theorem”.Only applies to recurrences of the form T(n) = aT(n/b) + f(n), butmakes things trivial when it does apply. Not covered in this course.

Generally: use recursion-tree to get a guess for substitution!

John Lapinskas Lecture 27 March 16th 2020 3 / 14

Page 10: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

The substitution method

1 Remove the O-notation from the recurrence.

2 Guess a partial form of the solution (with some unknown constants).

3 Use mathematical induction to show the solution works for the rightchoice of constants.

Dealing with O-notation can introduce some added complications...

Example: The recurrence from mergesort (when n is a power of two).

John Lapinskas Lecture 27 March 16th 2020 4 / 14

Page 11: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

The substitution method

1 Remove the O-notation from the recurrence.

2 Guess a partial form of the solution (with some unknown constants).

3 Use mathematical induction to show the solution works for the rightchoice of constants.

Dealing with O-notation can introduce some added complications...

Example: The recurrence from mergesort (when n is a power of two).

T (1) = O(1),

T (n) = 2T (n/2) + O(n).

John Lapinskas Lecture 27 March 16th 2020 4 / 14

Page 12: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

The substitution method

1 Remove the O-notation from the recurrence.

2 Guess a partial form of the solution (with some unknown constants).

3 Use mathematical induction to show the solution works for the rightchoice of constants.

Dealing with O-notation can introduce some added complications...

Example: The recurrence from mergesort (when n is a power of two).

T (1) = O(1),

T (n) = 2T (n/2) + O(n).

Step 1: Replace the O-notation by constants.

John Lapinskas Lecture 27 March 16th 2020 4 / 14

Page 13: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

The substitution method

1 Remove the O-notation from the recurrence.

2 Guess a partial form of the solution (with some unknown constants).

3 Use mathematical induction to show the solution works for the rightchoice of constants.

Dealing with O-notation can introduce some added complications...

Example: The recurrence from mergesort (when n is a power of two).

T (1) = O(1), −→ T (n) ≤ c1 for all n ≤ n0,

T (n) = 2T (n/2) + O(n). T (n) ≤ 2T (n/2) + c2n for all n > n0.

Step 1: Replace the O-notation by constants. Remember, f (n) ∈ O(g(n))means that there exist C and n0 such that for all n ≥ n0, f (n) ≤ Cg(n).

John Lapinskas Lecture 27 March 16th 2020 4 / 14

Page 14: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

The substitution method

1 Remove the O-notation from the recurrence.

2 Guess a partial form of the solution (with some unknown constants).

3 Use mathematical induction to show the solution works for the rightchoice of constants.

Dealing with O-notation can introduce some added complications...

Example: The recurrence from mergesort (when n is a power of two).

T (1) = O(1), −→ T (n) ≤ c1 for all n ≤ n0,

T (n) = 2T (n/2) + O(n). T (n) ≤ 2T (n/2) + c2n for all n > n0.

Step 1: Replace the O-notation by constants. Remember, f (n) ∈ O(g(n))means that there exist C and n0 such that for all n ≥ n0, f (n) ≤ Cg(n).

For mergesort specifically, we can take n0 = 1.

John Lapinskas Lecture 27 March 16th 2020 4 / 14

Page 15: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

The substitution method

1 Remove the O-notation from the recurrence.

2 Guess a partial form of the solution (with some unknown constants).

3 Use mathematical induction to show the solution works for the rightchoice of constants.

Dealing with O-notation can introduce some added complications...

Example: The recurrence from mergesort (when n is a power of two).

T (1) = O(1), −→ T (1) ≤ c1,

T (n) = 2T (n/2) + O(n). T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 1: Replace the O-notation by constants. Remember, f (n) ∈ O(g(n))means that there exist C and n0 such that for all n ≥ n0, f (n) ≤ Cg(n).

For mergesort specifically, we can take n0 = 1.

John Lapinskas Lecture 27 March 16th 2020 4 / 14

Page 16: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 2: Guess a bound. Here, guess T (n) ≤ Cn log n for some C > 0.

Step 3: Prove it works by induction.

Base case n = 1: T (1) ≤ c1, and C · 1 log(1) = 0 > c1.

.. wait, no. :-(

But it’s fine! We’re only trying to prove T (n) = O(n log n), which meanswe need T (n) ≤ Cn log n for all n ≥ n0 (for some C , n0 of our choice).

We don’t need T (1) ≤ C · 1 log 1. We can just take n0 = 2.

Key point: Since we’re only going for asymptotic results, not exactresults, we can choose any base case we want.

John Lapinskas Lecture 27 March 16th 2020 5 / 14

Page 17: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 2: Guess a bound. Here, guess T (n) ≤ Cn log n for some C > 0.

Step 3: Prove it works by induction.

Base case n = 1: T (1) ≤ c1, and C · 1 log(1) = 0 > c1... wait, no. :-(

But it’s fine! We’re only trying to prove T (n) = O(n log n), which meanswe need T (n) ≤ Cn log n for all n ≥ n0 (for some C , n0 of our choice).

We don’t need T (1) ≤ C · 1 log 1. We can just take n0 = 2.

Key point: Since we’re only going for asymptotic results, not exactresults, we can choose any base case we want.

John Lapinskas Lecture 27 March 16th 2020 5 / 14

Page 18: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 2: Guess a bound. Here, guess T (n) ≤ Cn log n for some C > 0.

Step 3: Prove it works by induction.

Base case n = 1: T (1) ≤ c1, and C · 1 log(1) = 0 > c1... wait, no. :-(

But it’s fine! We’re only trying to prove T (n) = O(n log n), which meanswe need T (n) ≤ Cn log n for all n ≥ n0 (for some C , n0 of our choice).

We don’t need T (1) ≤ C · 1 log 1. We can just take n0 = 2.

Key point: Since we’re only going for asymptotic results, not exactresults, we can choose any base case we want.

John Lapinskas Lecture 27 March 16th 2020 5 / 14

Page 19: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Note that we haven’t fixed a value for C yet — we’ll see what values workover the course of the proof.

Base case n = 2: We have

T (2) ≤ 2T (1) + c2 · 2 ≤ 2(c1 + c2),

C · 2 log 2 = 2C .

So T (2) ≤ C · 2 log 2 as long as we choose C ≥ c1 + c2. X

John Lapinskas Lecture 27 March 16th 2020 6 / 14

Page 20: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Note that we haven’t fixed a value for C yet — we’ll see what values workover the course of the proof.

Base case n = 2: We have

T (2) ≤ 2T (1) + c2 · 2 ≤ 2(c1 + c2),

C · 2 log 2 = 2C .

So T (2) ≤ C · 2 log 2 as long as we choose C ≥ c1 + c2. X

John Lapinskas Lecture 27 March 16th 2020 6 / 14

Page 21: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Note that we haven’t fixed a value for C yet — we’ll see what values workover the course of the proof.

Base case n = 2: We have

T (2) ≤ 2T (1) + c2 · 2 ≤ 2(c1 + c2),

C · 2 log 2 = 2C .

So T (2) ≤ C · 2 log 2 as long as we choose C ≥ c1 + c2. X

John Lapinskas Lecture 27 March 16th 2020 6 / 14

Page 22: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Note that we haven’t fixed a value for C yet — we’ll see what values workover the course of the proof.

Base case n = 2: We have

T (2) ≤ 2T (1) + c2 · 2 ≤ 2(c1 + c2),

C · 2 log 2 = 2C .

So T (2) ≤ C · 2 log 2 as long as we choose C ≥ c1 + c2. X

John Lapinskas Lecture 27 March 16th 2020 6 / 14

Page 23: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′.Then we must prove T (n) ≤ Cn log n.

By the induction hypothesis,

T (n) ≤ 2T (n/2) + c2n ≤ 2C · n2

log(n/2) + c2n

= Cn(log(n)− 1) + c2n = Cn log(n) + (c2 − C )n.

This is at most Cn log n as long as we choose C ≥ c2. X

John Lapinskas Lecture 27 March 16th 2020 7 / 14

Page 24: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′.Then we must prove T (n) ≤ Cn log n.

By the induction hypothesis,

T (n) ≤ 2T (n/2) + c2n ≤ 2C · n2

log(n/2) + c2n

= Cn(log(n)− 1) + c2n = Cn log(n) + (c2 − C )n.

This is at most Cn log n as long as we choose C ≥ c2. X

John Lapinskas Lecture 27 March 16th 2020 7 / 14

Page 25: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′.Then we must prove T (n) ≤ Cn log n.

By the induction hypothesis,

T (n) ≤ 2T (n/2) + c2n

≤ 2C · n2

log(n/2) + c2n

= Cn(log(n)− 1) + c2n = Cn log(n) + (c2 − C )n.

This is at most Cn log n as long as we choose C ≥ c2. X

John Lapinskas Lecture 27 March 16th 2020 7 / 14

Page 26: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′.Then we must prove T (n) ≤ Cn log n.

By the induction hypothesis,

T (n) ≤ 2T (n/2) + c2n ≤ 2C · n2

log(n/2) + c2n

= Cn(log(n)− 1) + c2n = Cn log(n) + (c2 − C )n.

This is at most Cn log n as long as we choose C ≥ c2. X

John Lapinskas Lecture 27 March 16th 2020 7 / 14

Page 27: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′.Then we must prove T (n) ≤ Cn log n.

By the induction hypothesis,

T (n) ≤ 2T (n/2) + c2n ≤ 2C · n2

log(n/2) + c2n

= Cn(log(n)− 1) + c2n

= Cn log(n) + (c2 − C )n.

This is at most Cn log n as long as we choose C ≥ c2. X

John Lapinskas Lecture 27 March 16th 2020 7 / 14

Page 28: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′.Then we must prove T (n) ≤ Cn log n.

By the induction hypothesis,

T (n) ≤ 2T (n/2) + c2n ≤ 2C · n2

log(n/2) + c2n

= Cn(log(n)− 1) + c2n = Cn log(n) + (c2 − C )n.

This is at most Cn log n as long as we choose C ≥ c2. X

John Lapinskas Lecture 27 March 16th 2020 7 / 14

Page 29: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′.Then we must prove T (n) ≤ Cn log n.

By the induction hypothesis,

T (n) ≤ 2T (n/2) + c2n ≤ 2C · n2

log(n/2) + c2n

= Cn(log(n)− 1) + c2n = Cn log(n) + (c2 − C )n.

This is at most Cn log n as long as we choose C ≥ c2. X

John Lapinskas Lecture 27 March 16th 2020 7 / 14

Page 30: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Requires C ≥ c2. X

So we have proved T (n) ≤ (c1 + c2) log n for all n ≥ 2.

This implies T (n) = O(n log n), as we were hoping.

But what if n isn’t a power of 2?

For a back-of-the-envelope calculation, we’d just say T (n) ≤ T (N) whereN is the nearest power of two. But sometimes this might be false...

John Lapinskas Lecture 27 March 16th 2020 8 / 14

Page 31: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Requires C ≥ c2. X

So we have proved T (n) ≤ (c1 + c2) log n for all n ≥ 2.

This implies T (n) = O(n log n), as we were hoping.

But what if n isn’t a power of 2?

For a back-of-the-envelope calculation, we’d just say T (n) ≤ T (N) whereN is the nearest power of two. But sometimes this might be false...

John Lapinskas Lecture 27 March 16th 2020 8 / 14

Page 32: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Requires C ≥ c2. X

So we have proved T (n) ≤ (c1 + c2) log n for all n ≥ 2.

This implies T (n) = O(n log n), as we were hoping.

But what if n isn’t a power of 2?

For a back-of-the-envelope calculation, we’d just say T (n) ≤ T (N) whereN is the nearest power of two. But sometimes this might be false...

John Lapinskas Lecture 27 March 16th 2020 8 / 14

Page 33: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

The substitution method

T (1) ≤ c1,

T (n) ≤ 2T (n/2) + c2n for all n > 1.

Step 3: Prove by induction that T (n) ≤ Cn log n for all n ≥ 2.

Base case n = 2: Requires C ≥ c1 + c2. X

Inductive step: Requires C ≥ c2. X

So we have proved T (n) ≤ (c1 + c2) log n for all n ≥ 2.

This implies T (n) = O(n log n), as we were hoping.

But what if n isn’t a power of 2?

For a back-of-the-envelope calculation, we’d just say T (n) ≤ T (N) whereN is the nearest power of two. But sometimes this might be false...

John Lapinskas Lecture 27 March 16th 2020 8 / 14

Page 34: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

The “real” recurrence for mergesort is

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

To deal with floors and ceilings, our guess needs an additive term.Let’s try to find C and a such that T (n) ≤ Cn log(n) + a for all n ≥ 2.

Base case n = 2:

As before, T (2) ≤ 2T (1) + 2c2 ≤ 2(c1 + c2).Also, we have C · 2 log(2) + a = 2C + a.

So the base case works whenever 2C + a ≥ 2(c1 + c2). X

John Lapinskas Lecture 27 March 16th 2020 9 / 14

Page 35: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

The “real” recurrence for mergesort is

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

To deal with floors and ceilings, our guess needs an additive term.Let’s try to find C and a such that T (n) ≤ Cn log(n) + a for all n ≥ 2.

Base case n = 2:

As before, T (2) ≤ 2T (1) + 2c2 ≤ 2(c1 + c2).

Also, we have C · 2 log(2) + a = 2C + a.

So the base case works whenever 2C + a ≥ 2(c1 + c2). X

John Lapinskas Lecture 27 March 16th 2020 9 / 14

Page 36: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

The “real” recurrence for mergesort is

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

To deal with floors and ceilings, our guess needs an additive term.Let’s try to find C and a such that T (n) ≤ Cn log(n) + a for all n ≥ 2.

Base case n = 2:

As before, T (2) ≤ 2T (1) + 2c2 ≤ 2(c1 + c2).Also, we have C · 2 log(2) + a = 2C + a.

So the base case works whenever 2C + a ≥ 2(c1 + c2). X

John Lapinskas Lecture 27 March 16th 2020 9 / 14

Page 37: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

The “real” recurrence for mergesort is

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

To deal with floors and ceilings, our guess needs an additive term.Let’s try to find C and a such that T (n) ≤ Cn log(n) + a for all n ≥ 2.

Base case n = 2:

As before, T (2) ≤ 2T (1) + 2c2 ≤ 2(c1 + c2).Also, we have C · 2 log(2) + a = 2C + a.

So the base case works whenever 2C + a ≥ 2(c1 + c2). X

John Lapinskas Lecture 27 March 16th 2020 9 / 14

Page 38: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′ + a.Then we must prove T (n) ≤ Cn log n + a. We have

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n

≤ C(⌊n

2

⌋log(bn/2c) +

⌈n2

⌉log(dn/2e)

)+ 2a + c2n.

To deal with floors and ceilings, we normally use these bounds:

bxc ≤ x for all x ∈ R, dxe ≤ x+1 for all x ∈ R, dxe ≤ 2x for all x ≥ 1.

Using the “right” bounds in the “right” expressions:

T (n) ≤ C(n

2log(n/2) +

(n2

+ 1)

log(n))

+ 2a + c2n.

John Lapinskas Lecture 27 March 16th 2020 10 / 14

Page 39: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′ + a.Then we must prove T (n) ≤ Cn log n + a.

We have

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n

≤ C(⌊n

2

⌋log(bn/2c) +

⌈n2

⌉log(dn/2e)

)+ 2a + c2n.

To deal with floors and ceilings, we normally use these bounds:

bxc ≤ x for all x ∈ R, dxe ≤ x+1 for all x ∈ R, dxe ≤ 2x for all x ≥ 1.

Using the “right” bounds in the “right” expressions:

T (n) ≤ C(n

2log(n/2) +

(n2

+ 1)

log(n))

+ 2a + c2n.

John Lapinskas Lecture 27 March 16th 2020 10 / 14

Page 40: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′ + a.Then we must prove T (n) ≤ Cn log n + a. We have

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n

≤ C(⌊n

2

⌋log(bn/2c) +

⌈n2

⌉log(dn/2e)

)+ 2a + c2n.

To deal with floors and ceilings, we normally use these bounds:

bxc ≤ x for all x ∈ R, dxe ≤ x+1 for all x ∈ R, dxe ≤ 2x for all x ≥ 1.

Using the “right” bounds in the “right” expressions:

T (n) ≤ C(n

2log(n/2) +

(n2

+ 1)

log(n))

+ 2a + c2n.

John Lapinskas Lecture 27 March 16th 2020 10 / 14

Page 41: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′ + a.Then we must prove T (n) ≤ Cn log n + a. We have

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n

≤ C(⌊n

2

⌋log(bn/2c) +

⌈n2

⌉log(dn/2e)

)+ 2a + c2n.

To deal with floors and ceilings, we normally use these bounds:

bxc ≤ x for all x ∈ R, dxe ≤ x+1 for all x ∈ R, dxe ≤ 2x for all x ≥ 1.

Using the “right” bounds in the “right” expressions:

T (n) ≤ C(n

2log(n/2) +

(n2

+ 1)

log(n))

+ 2a + c2n.

John Lapinskas Lecture 27 March 16th 2020 10 / 14

Page 42: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′ + a.Then we must prove T (n) ≤ Cn log n + a. We have

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n

≤ C(⌊n

2

⌋log(bn/2c) +

⌈n2

⌉log(dn/2e)

)+ 2a + c2n.

To deal with floors and ceilings, we normally use these bounds:

bxc ≤ x for all x ∈ R, dxe ≤ x+1 for all x ∈ R, dxe ≤ 2x for all x ≥ 1.

Using the “right” bounds in the “right” expressions:

T (n) ≤ C(n

2log(n/2) +

(n2

+ 1)

log(n))

+ 2a + c2n.

John Lapinskas Lecture 27 March 16th 2020 10 / 14

Page 43: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′ + a.Then we must prove T (n) ≤ Cn log n + a. We showed

T (n) ≤ C(n

2log(n/2) +

(n2

+ 1)

log(n))

+ 2a + c2n.

We also bound log(n/2) ≤ log(n) to make the algebra a bit easier.Then rearranging gives:

T (n) ≤ Cn log(n) + log(n) + 2a + c2n

This is at most Cn log(n) as long as we take a ≤ −(log(n) + c2n)/2. X

John Lapinskas Lecture 27 March 16th 2020 11 / 14

Page 44: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′ + a.Then we must prove T (n) ≤ Cn log n + a. We showed

T (n) ≤ C(n

2log(n/2) +

(n2

+ 1)

log(n))

+ 2a + c2n.

We also bound log(n/2) ≤ log(n) to make the algebra a bit easier.

Then rearranging gives:

T (n) ≤ Cn log(n) + log(n) + 2a + c2n

This is at most Cn log(n) as long as we take a ≤ −(log(n) + c2n)/2. X

John Lapinskas Lecture 27 March 16th 2020 11 / 14

Page 45: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′ + a.Then we must prove T (n) ≤ Cn log n + a. We showed

T (n) ≤ C(n

2log(n) +

(n2

+ 1)

log(n))

+ 2a + c2n.

We also bound log(n/2) ≤ log(n) to make the algebra a bit easier.

Then rearranging gives:

T (n) ≤ Cn log(n) + log(n) + 2a + c2n

This is at most Cn log(n) as long as we take a ≤ −(log(n) + c2n)/2. X

John Lapinskas Lecture 27 March 16th 2020 11 / 14

Page 46: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Suppose that for all 2 ≤ n′ < n, T (n′) ≤ Cn′ log n′ + a.Then we must prove T (n) ≤ Cn log n + a. We showed

T (n) ≤ C(n

2log(n) +

(n2

+ 1)

log(n))

+ 2a + c2n.

We also bound log(n/2) ≤ log(n) to make the algebra a bit easier.Then rearranging gives:

T (n) ≤ Cn log(n) + log(n) + 2a + c2n

This is at most Cn log(n) as long as we take a ≤ −(log(n) + c2n)/2. XJohn Lapinskas Lecture 27 March 16th 2020 11 / 14

Page 47: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Requires a ≤ −(log(n) + c2n)/2. X

So all that’s left is to pick C and a that work.

If we take a(n) = −(log(n) + c2n)/2, then the inductive step works anda(2) = −1

2 − c2.

So to make the base case work, we take

C = c1 + c2 −a

2= c1 +

3

2c2 +

1

4> 0.

(Note we do need C > 0 here!)

John Lapinskas Lecture 27 March 16th 2020 12 / 14

Page 48: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Requires a ≤ −(log(n) + c2n)/2. X

So all that’s left is to pick C and a that work.

If we take a(n) = −(log(n) + c2n)/2, then the inductive step works anda(2) = −1

2 − c2.

So to make the base case work, we take

C = c1 + c2 −a

2= c1 +

3

2c2 +

1

4> 0.

(Note we do need C > 0 here!)

John Lapinskas Lecture 27 March 16th 2020 12 / 14

Page 49: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

Goal: Prove by induction that for all n ≥ 2, T (n) ≤ Cn log(n) + a.

Base case n = 2: Requires 2C + a ≥ 2(c1 + c2). X

Inductive step: Requires a ≤ −(log(n) + c2n)/2. X

So all that’s left is to pick C and a that work.

If we take a(n) = −(log(n) + c2n)/2, then the inductive step works anda(2) = −1

2 − c2.

So to make the base case work, we take

C = c1 + c2 −a

2= c1 +

3

2c2 +

1

4> 0.

(Note we do need C > 0 here!)John Lapinskas Lecture 27 March 16th 2020 12 / 14

Page 50: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

We proved: Let C = c1 + 32c2 + 1

4 , and let a(n) = −12(c2n + log(n)).

Then T (n) ≤ Cn log(n) + a(n) for all n ≥ 2.

In particular, this implies T (n) = O(n log n) as before. Phew!

Note we proved something stronger than T (n) ≤ Cn log(n) for all n ≥ 2.And yet, if we’d tried the proof with a(n) = 0, it wouldn’t have worked!

It’s counterintuitive, but if you’re having trouble with an induction,strengthening your inductive hypothesis can be very helpful.

John Lapinskas Lecture 27 March 16th 2020 13 / 14

Page 51: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Dealing with floors and ceilings

T (1) ≤ c1,

T (n) ≤ T (bn/2c) + T (dn/2e) + c2n for all n ≥ 2.

We proved: Let C = c1 + 32c2 + 1

4 , and let a(n) = −12(c2n + log(n)).

Then T (n) ≤ Cn log(n) + a(n) for all n ≥ 2.

In particular, this implies T (n) = O(n log n) as before. Phew!

Note we proved something stronger than T (n) ≤ Cn log(n) for all n ≥ 2.And yet, if we’d tried the proof with a(n) = 0, it wouldn’t have worked!

It’s counterintuitive, but if you’re having trouble with an induction,strengthening your inductive hypothesis can be very helpful.

John Lapinskas Lecture 27 March 16th 2020 13 / 14

Page 52: Solving Recurrences I COMS10007 2020, Lecture 13people.cs.bris.ac.uk/~konrad/courses/2019_2020... · Methods for solving recurrences Recursion-tree method (as used for mergesort and

Next time: More examples!(Lecture to be given online...)

John Lapinskas Lecture 27 March 16th 2020 14 / 14