You are on page 1of 19

Design & Analysis of Algorithms

Divide and Conquer Methodology


Divide and Conquer Technique
General Method:

 The Divide and Conquer Technique splits n inputs into k subsets ,


1< k ≤ n, yielding k sub problems.
 These sub problems will be solved and then combined by using a
separate method to get a solution to a whole problem.
 If the sub problems are large, then the Divide and Conquer
Technique will be reapplied.
 Often sub problems resulting from a Divide and Conquer
Technique are of the same type as the original problem.

Examples:
Binary Search , Quick Sort, Merge Sort
Divide-and-Conquer
• Divide the problem into a number of sub-problems
– Similar sub-problems of smaller size
• Conquer the sub-problems
– Solve the sub-problems recursively
– Sub-problem size small enough  solve the problems in
straightforward manner
• Combine the solutions of the sub-problems
– Obtain the solution for the original problem
General method for Divide and Conquer Technique

Algorithm DAndC(p)
{
if Small(p) then return s(p);
else
{
divide p into smaller instances p1,p2,…….,pk, k≥1;
Apply DAndC to each of these subproblems;
return Combine(DAndC(p1), DAndC(p2),…,
DAndC(pk));
}
}
If the size of p is n and the sizes of the k sub problems are n 1,n2,….,nk,
then the computing time of DAndC is described by the recurrence
relation

T(n)= g( n) n small
T(n1)+T(n2)+……+T(nk)+f(n) Otherwise

 Where T(n) is the time for DAndC on any input of size n and g(n) is
the time to compute the answer directly for small inputs.
 The function f(n) is the time for dividing p and combining the
solutions from sub problems.
There are 2 methods for solving an recurrence relation

• Substitution method

• Master’s theorem
Substitution method
Example1 : Consider the case
Let T(1)=2 and f(n)=n. We have
T(n) = 2T(n/2)+n
= 2[2T(n/4)+n/2]+n
= 4T(n/4)+2n
=4[2T(n/8)+n/4]+2n
= 8T(n/8)+3n
:
=2iT(n/2i)+i.n for any log2n>=i>=1
=2log2nT(n/2log2n)+nlog2n=2n T(n/n) + nlog2n
Thus, T(n)=nT(1)+nlog2n=nlog2n+2n
T(n) = O(nlogn)
Example 2: Solve the following recurrence relation using
Substitution Method- T(n) = 4T(n/2) + n2
T(n) = 4T(n/2) + n2
= 4[4T(n/4)+ n2 /4]+ n2
= 16T(n/4)+ 2n2
= 16[4T(n/8)+ n2 /16]+2n2
= 64T(n/8)+ 3n2
= 43 T(n/23)+ 3.n2
:
= 4i T(n/2i)+ i.n2 for any log2n>=i>=1

=4log2nT(n/2log2n)+ n2 log2n
= 2log2n 2log2n T(n/2log2n)+ n2 log2n
= n.n T(n/n) + n2 log2n = n2 + n2 log2n
T(n) = O(n2logn)
Doubts ?

9
Master’s Theorem
https://www.programiz.com/dsa/master-theorem
•Master’s Theorem:
T(n) = aT(n/b) + f(n) where a >= 1 and b > 1 and
f(n)=θ (nklogpn)
•There are following three cases:
1. If f(n) = O(nk) where k < Logba (OR)
a >bk then T(n) = Θ(nLogba)
2. If f(n) = Θ(nk) where k = Logba (OR)
a =bk then T(n) = Θ(nLogba logp+1n)
3.If f(n) = ῼ(nk) where k> Logba (OR)
a < bk then T(n) = Θ(f(n))
Examples
Problem-01:
Solve the following recurrence relation using Master’s
theorem- T(n) = 3T(n/2) + n 2

Solution-
We compare the given recurrence relation with
T(n) = aT(n/b) + θ (nklogpn).
Then, we have a = 3,b = 2,k = 2,p = 0
Now, a = 3 and bk = 22 = 4.
3<4 i.e., a < bk.
So, we follow case-03.
Since p = 0, so we have- T(n) = θ (nklogpn) (or) f(n)
T(n) = θ (n2log0n)
Thus, T(n) = θ (n2)
Problem-02:
Solve the following recurrence relation using Master’s
theorem- T(n) = 2T(n/2) + nlogn
Solution-
We compare the given recurrence relation with
T(n) = aT(n/b) + θ (nklogpn).
Then, we have- a = 2, b = 2, k = 1, p = 1

Now, a = 2 and bk = 21 = 2.
Clearly, a = bk.
So, we follow case-02.
Since p = 1, so we have- T(n) = θ (nlogba.logp+1n)
T(n) = θ (nlog22.log1+1n)
Thus, T(n) = θ (nlog2n)
Problem-03:
Solve the following recurrence relation using Master’s
theorem- T(n) = 2T(n/4) + n0.51
Solution-
We compare the given recurrence relation with
T(n) = aT(n/b) + θ (nklogpn).
Then, we have- a = 2, b = 4, k = 0.51, p = 0

Now, a = 2 and bk = 40.51 = 2.0279.


Clearly, a < bk.
So, we follow case-03.
Since p = 0, so we have- T(n) = θ (nklogpn) (or) f(n)
T(n) = θ (n0.51log0n)
Thus, T(n) =T(n)
θ =(n
θ (n0.51
)
)
0.51
Problem-04:
Solve the following recurrence relation using Master’s
theorem- T(n) = √2T(n/2) + logn
Solution-
We compare the given recurrence relation with
T(n) = aT(n/b) + θ (nklogpn).
Then, we have- a = √2, b = 2, k = 0, p = 1
Now, a = √2 = 1.414 and bk = 20 = 1.
Clearly, a > bk.
So, we follow case-01.
So, we have- T(n) = θ (nlogba) T(n) = θ (nlog2√2)
Problem-05:

Solve the following recurrence relation using Master’s


theorem-
T(n) = 8T(n/4) – n2logn

Solution-

• The given recurrence relation does not correspond to the


general form of Master’s theorem.
• So, it can not be solved using Master’s theorem.
Problem-06:
Solve the following recurrence relation using Master’s
theorem- T(n) = 3T(n/3) + n/2
Solution-
We write the given recurrence relation as T(n) = 3T(n/3) + n.
Now, we can easily apply Master’s theorem.
We compare the given recurrence relation with T(n) = aT(n/b)
+ θ (nklogpn).
Then, we have- a = 3, b = 3, k = 1, p = 0
Now, a = 3 and bk = 31 = 3.
Clearly, a = bk.So, we follow case-02.
Since p = 0, so we have- T(n) = θ (nlogba.logp+1n)
T(n) = θ (nlog33.log0+1n) T(n) = θ (n1.log1n) = θ (nlogn)
Problem-07:
Form a recurrence relation for the following code and
solve it using Master’s theorem-
A(n)
{
if(n<=1) return 1;
else return A(√n);
}
Solution-
• We write a recurrence relation for the given code as T(n) = T(√n) + 1.
• Here 1 = Constant time taken for comparing and returning the value.
• We can not directly apply Master’s Theorem on this recurrence relation.
• This is because it does not correspond to the general form of Master’s
theorem.
• However, we can modify and bring it in the general form to apply
Master’s theorem.
Let- n = 2m ……(1)
Then- T(2m) = T(2m/2) + 1

Now, let T(2m) = S(m), then T(2m/2) = S(m/2)

So, we have- S(m) = S(m/2) +1


Now, we can easily apply Master’s Theorem.

We compare the given recurrence relation with S(m) = aS(m/b) + θ (mklogpm).


Then, we have- a = 1, b = 2, k = 0, p = 0
Now, a = 1 and bk = 20 = 1.
Clearly, a = bk. So, we follow case-02.
Since p = 0, so we have- S(m) = θ (mlogba.logp+1m)
S(m) = θ (mlog21.log0+1m) = θ (m0.log1m)

Thus, S(m) = θ(logm) ……(2) Now, From (1), we have n = 2m.


So, logn = mlog2 which implies m = log2n.
Substituting in (2), we get- S(m) = θ(loglog2n) OrT(n) = θ (loglog2n)
Thank You

You might also like