Professional Documents
Culture Documents
Pod Handler
Pod Handler
• Recursion
Example
Asymptotic analysis for recurrence relation
Recursive Tree Method
Substitution Method,
Master theorem
• Merge Sort Analysis
Recursive Tree Method
Substitution Method,
Master Theorem and
13/03/2023 Dr.S.Abinaya-BCSE202L 1
Divide and Conquer approach
13/03/2023 Dr.S.Abinaya-BCSE202L 2
Recursion
• Any function which calls itself is
called recursive.
• The case, where the function does not
recur, is called the base case.
• The case, where the function calls
itself to perform a subtask, is referred
to as the recursive case.
13/03/2023 Dr.S.Abinaya-BCSE202L 3
Recursion
• Analysis of recursive algorithms
• Asymptotic analysis for recurrence relation
Recursion Tree Method
Substitution Method,
Master Theorem and
13/03/2023 Dr.S.Abinaya-BCSE202L 4
Recursion Tree Method
• A recursion tree models the costs (time) of a recursive execution of an
algorithm.
• The recursion-tree method promotes intuition, however.
• The recursion tree method is good for generating guesses for the substitution
method
13/03/2023 Dr.S.Abinaya-BCSE202L 5
Example: Recursion
//Display the elements disp(5)
#include<stdio.h> Recursion Tree
int disp(int num)
{
5 disp(4)
if(num>0)
{
printf("%d\n",num);
disp(num-1); 4 disp(3)
}
}
int main() 3 disp(2)
{
int x;
2 disp(1)
printf("Enter the number:");
scanf("%d",&x);
The whole block executed for n+1 calls
disp(x);
T(n) = n+1 1 disp(0)
return 0; = O(n)
}
13/03/2023 Dr.S.Abinaya-BCSE202L 6
Substitution method
•The most general method:
1. Guess the form of the solution.
2. Verify by induction.
3. Solve for constants
13/03/2023 Dr.S.Abinaya-BCSE202L 7
Example: Substitution method
int disp(int num) T(n) = T(n-1) + 1 , T(n-1) = ?
{ T(n-1) = T(n-1-1) + 1
1
if(num>0) = T(n-2) + 1
13/03/2023 Dr.S.Abinaya-BCSE202L 8
Substitution method- Contd.,
T(n) =
= T(n – n) + n
= T(n-k) + k = T(0) + n
=1 + n
= O(n)
13/03/2023 Dr.S.Abinaya-BCSE202L 9
Example : Factorial
int find_fact(int n)
{
//Factorial of 0 is 1
if(n==0) //Base Condition
return(1);
13/03/2023 Dr.S.Abinaya-BCSE202L 10
Solve it Yourself?
Recurrence relation – Factorial?
13/03/2023 Dr.S.Abinaya-BCSE202L 11
The master method
•The mastermethod appliestorecurrencesof theform
• T(n)= aT(n/b)+f(n) ,
wherea1,b>1,and f is asymptotically positive
Check the following recurrence relation can be solved using master method?
×
T (n) = 4T (n / 2) + n
13/03/2023 Dr.S.Abinaya-BCSE202L 12
Merge Sort Analysis
13/03/2023 Dr.S.Abinaya-BCSE202L 13
Merge Sort
• The operation of sorting is closely related to process of merging
• Merge Sort is a divide and conquer algorithm
• It is based on the idea of breaking down a list into several sub-lists until each
sub list consists of a single element
• Merging those sub lists in a manner that results into a sorted list
13/03/2023 Dr.S.Abinaya-BCSE202L 14
BCSE202L - DSA
Module 1
Algorithm Analysis
Dr Hasmath Farhana
Assistant Professor
hasmath.farhana@vit.ac.in
Algorithm
MERGE-SORT A[1 . . n] MergeSort(A, l, h )
1. If n = 1, done.
if(l < h)
2. Recursively sort A[ 1 . . n/2 ] and
A[ n/2+1 . . n ] .
mid = l+h /2; (floor division)
3. “Merge” the 2 sorted lists MergeSort(A, l, mid)
MergeSort(A, mid+1, h)
1 2 3 4 5 6 7 8 Merge(A, l, mid, h)
l h
Merge(A, l, mid, h) ?
13/03/2023 Dr.S.Abinaya-BCSE202L 17
Merge subroutine
Merge(A, lb, mid, ub){ 1 2 3 4 5 6 7 8
i = lb Original 1 13 16 24 12 15 27 38
j = mid + 1
lb ub
k = lb
mid
while(i<=mid && j<=ub) { =4
if(a[i]<=a[j]) {
b[k]=a[i]; i++; }
else {
b[k]=a[j]; j++; }
k++; }
if (i>mid){
while(j<=ub){
b[k]=a[j]; j++; k++; }
else {
while(i<=mid){
b[k]=a[i]; i++; k++; }
}
13/03/2023 Dr.S.Abinaya-BCSE202L 18
Recurrence Relation
MergeSort(A, l, h )
if(l < h) 1
T(n) = 2T(n/2) + cn
13/03/2023 Dr.S.Abinaya-BCSE202L 19
Recurrence for merge sort
(1) if n = 1;
T(n) =
2T(n/2) + (n) if n >
1.
13/03/2023 Dr.S.Abinaya-BCSE202L 20
Recursion Tree
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant.
13/03/2023 Dr.S.Abinaya-BCSE202L 21
Substitution method
Solve T(n) = 2T(n/2) + cn, where c > 0 is constant
1 if n = 1;
T(n) =
2T(n/2) + n if n > 1.
13/03/2023 Dr.S.Abinaya-BCSE202L 22
Master Theorem
03/13/2023 Dr.S.Abinaya-BCSE202L 23
Master Method
13/03/2023 Dr.S.Abinaya-BCSE202L 24
Master Method
13/03/2023 Dr.S.Abinaya-BCSE202L 25
The Master Method
13/03/2023 Dr.S.Abinaya-BCSE202L 26
Merge-Sort Tree
An execution of merge-sort is depicted by a binary tree
– each node represents a recursive call of merge-sort and stores
unsorted sequence before the execution and its partition
sorted sequence at the end of the execution
– the root is the initial call
– the leaves are calls on subsequences of size 0 or 1
7 2 9 4 2 4 7 9
7 2 2 7 9 4 4 9
13/03/2023 Dr.S.Abinaya-BCSE202L 28
Execution Example (cont.)
7 29 4
13/03/2023 Dr.S.Abinaya-BCSE202L 29
Execution Example (cont.)
Recursive call, partition
7 2 9 43 8 6 1
7 29 4
72
13/03/2023 Dr.S.Abinaya-BCSE202L 30
Execution Example (cont.)
Recursive call, base case
7 2 9 43 8 6 1
7 29 4
72
77
13/03/2023 Dr.S.Abinaya-BCSE202L 31
Execution Example (cont.)
Recursive call, base case
7 2 9 43 8 6 1
7 29 4
72
77 22
13/03/2023 Dr.S.Abinaya-BCSE202L 32
Execution Example (cont.)
Merge
7 2 9 43 8 6 1
7 29 4
722 7
77 22
13/03/2023 Dr.S.Abinaya-BCSE202L 33
Execution Example (cont.)
Recursive call, …, base case, merge
7 2 9 43 8 6 1
7 29 4
722 7 9 4 4 9
13/03/2023 Dr.S.Abinaya-BCSE202L 34
Execution Example (cont.)
Merge
7 2 9 43 8 6 1
7 29 4 2 4 7 9
722 7 9 4 4 9
13/03/2023 Dr.S.Abinaya-BCSE202L 35
Execution Example (cont.)
Recursive call, …, merge, merge
7 2 9 43 8 6 1
7 29 4 2 4 7 9 3 8 6 1 1 3 6 8
722 7 9 4 4 9 3 8 3 8 6 1 1 6
13/03/2023 Dr.S.Abinaya-BCSE202L 36
Execution Example (cont.)
Merge
7 2 9 43 8 6 1 1 2 3 4 6 7 8 9
7 29 4 2 4 7 9 3 8 6 1 1 3 6 8
722 7 9 4 4 9 3 8 3 8 6 1 1 6
13/03/2023 Dr.S.Abinaya-BCSE202L 37