Solving recurrence relations
Gain intuition and guess closed form solution
- Compute value of function at a few points
- Unfold recurrence a few steps
Testing the hypothesis
- Try to prove by induction
- Use failed attempt to refine solution
Example
$$\begin{split} T(n) &= 2T(n - 1) + 1 \end{split}$$
Compute value of function at a few points
Want to solve recurrence:
$$\begin{split} T(0) &= 0 \\ T(n) &= 2T(n - 1) + 1 \end{split}$$
Compute a few steps:
$$\begin{split} T(0) &= 0 \\ T(1) &= 2(T(0)) + 1 = 1 \\ T(2) &= 2(T(1)) + 1 = 3 \\ T(3) &= 2(T(2)) + 1 = 7 \\ T(4) &= 2(T(3)) + 1 = 15 \\ ... \end{split}$$
Hypothesis:
$$ T(n) = 2^n - 1 $$
Inductive proof:
Prove base case is true.
Show that if previous case is true: $T(n-1) = 2^(n - 1) - 1, current case \(T(n) = 2^n - 1\).
$$\begin{split} T(0) &= 0 = 2^0 - 1 \\ T(n) &= 2T(n - 1) + 1 \\ &= 2(2^{n-1} - 1) + 1 \\ &= 2^n - 1 \end{split}$$
Unroll recurrence
$$\begin{split} T(n) &= 2T(n − 1) + 1 \\ &= 2(2T(n − 2) + 1) + 1 = 4T(n − 2) + 3 \\ &= 4(2T(n − 3) + 1) + 3 = 8T(n − 3) + 7 \\ &= 16T(n − 4) + 15 \end{split}$$
Guess: \(T(n) = 2^k T(n − k) + 2^k − 1 for 1 ≤ k ≤ n\)