Next: Implementing Computer Algebra: basic ideas Up: A review of complexity notions Previous: Orders of magnitude

## The complexity of divide-and-conquer algorithms

DIVIDE-AND-CONQUER ALGORITHMS proceed as follows.

Divide
the input problem into sub-problems.
Conquer
on the sub-problems by solving them directly if they are small enough or proceed recursively.
Combine
the solutions of the sub-problems to obtain the solution of the input problem.

EQUATION SATISFIED BY T(N). Assume that the size of the input problem increases with an integer n. Let T(n) be the time complexity of a divide-and-conquer algorithm to solve this problem. Then T(n) satisfies an equation of the form:

 T(n) = a T(n/b) + f (n). (13)

where f (n) is the cost of the combine-part, a 1 is the number of recursively calls and n/b with b > 1 is the size of a sub-problem.

LABELED TREE ASSOCIATED WITH THE EQUATION. Assume n is a power of b, say n = bp. To solve this equation we can associate a labeled tree (n) to it as follows.

(1)
If n = 1, then (n) is reduced to a single leaf by labeled T(1).
(2)
If n > 1, then the root of (n) is labeled by f (n) and (n) possesses a labeled sub-trees all equal to (n/b).
The labeled tree (n) associated with T(n) = a T(n/b) + f (n) has height p + 1. Moreover the sum of its labels is T(n).

LET US GIVE TWO EXAMPLES.

• Consider the relation:

 T(n) = 2 T(n/2) + n2. (14)

We obtain:

 T(n) = n2 + + + + ... + + n T(1). (15)

Hence we have:

 T(n) (n2). (16)

• Consider the relation:

 T(n) = 3T(n/3) + n. (17)

We obtain:

 T(n) (log3(n)n). (18)

A FORMULA TO ESTIMATE T(N). Let a > 0 be an integer and let S, T  :   + be functions such that

(i)
S(2 n   2 S(n) and S(n   n.
(ii)
If n = 2p then T(n   a T(n/2) + S(n).
Then for n = 2p we have
(1)
if a = 1 then

 T(n) (2 - 2/n) S(n) + T(1)   (S(n)), (19)

(2)
if a = 2 then

 T(n) S(n) log2(n) + T(1) n   (log2(n) S(n)), (20)

(3)
if a 3 then

 T(n) nlog2(a)-1 - 1 S(n) + T(1) nlog2(a)   (S(n) nlog2(a)-1). (21)

Indeed

 T(2p) a T(2p-1) + S(2p) aa T(2p-2) + S(2p-1) + S(2p) = a2 T(2p-2) + a S(2p-1) + S(2p) a2a T(2p-3) + S(2p-2) + a S(2p-1) + S(2p) = a3 T(2p-3) + a2 S(2p-2) + a S(2p-1) + S(2p) ap T(1) +  aj S(2p-j)
(22)

Moreover

 S(2p) 2 S(2p-1) S(2p) 22 S(2p-2) S(2p) 2j S(2p-j)
(23)

Thus

 aj S(2p-j)   S(2p)  . (24)

Hence

 T(2p)   ap T(1) + S(2p)  . (25)

For a = 1 we obtain

 T(2p) T(1) + S(2p) = T(1) + S(2p) = T(1) + S(n) (2 - 2/n).
(26)

For a = 2 we obtain

 T(2p) 2p T(1) + S(2p) p = n T(1) + S(n) log2(n).
(27)

Next: Implementing Computer Algebra: basic ideas Up: A review of complexity notions Previous: Orders of magnitude
Marc Moreno Maza
2004-04-27