Divide-and-Conquer Recurrence Relations
577
Theorem 1. (Solution of Divide-and-Conquer Recurrences) The solution of
T
=CT(n/d)+f(n) forn~dk, k> 1
If( 1 )
forn = 1
is the function T(n) =
k C'f(n/dj).
Motivation for Proof.
(Base step) For k = 0,
E- C f(n/dj) = f(1) = T(1)
j=0
(Inductive step) Now, suppose that the formula holds for m > 0. That is,
m
T(m) = 5Cj
f(n/dj)
j=0
Now, prove that T (m + 1) is also given by this expression. In this case, prove that
m+1
T(m + 1) =
CcJ f(dm+l/dj)
j=0
Back substitutions will give
T(n) = CT(n/d) + f(n)
= C{CT(n/d
2 ) + f(n/d)} + f(n)
= C
2 T(n/d
2 ) + Cf(n/d) + f(n)
= C
2 {CT(n/d
3 ) + f (n/d
2 )} + Cf(n/d) + f(n)
= C
3 • T(n/d
3 ) + C
2 . f(n/d
2 ) + Cf(n/d) + f(n)
The pattern is
k
T(n) =
Cif(n/dj)
j=0
Proof. Now, verify that this is the solution using induction on k where n = dk. For
k = 0,
0
ECi f(1/dj) = f(1) = T(1)
j=0
Now, suppose that the formula holds for m = k where k < 0, and show that it holds for
m = k +1:
T(dk+l) = CT(d k) + f(dk+l)
k
= C YC'.f
(dk/di) + f(dk+l) (Induction hypothesis)
j=0
Précédent

- 601/627

Suivant