190 likes | 556 Views
This document provides an in-depth analysis and exploration of recursive algorithms, focusing on mathematical principles and examples. It covers the factorial computation algorithm, the Tower of Hanoi problem, and binary representation through recursion. Key concepts include the analysis of efficiency in recursive algorithms, the establishment of recurrence relations, and backward substitution techniques. The document also addresses the basic operations and growth orders, offering a comprehensive understanding of algorithm design and performance evaluation.
E N D
Mathematical Analysis of Recursive Algorithms Design and Analysis of Algorithms (CS3024) 28/02/2006 CS3024-FAZ
Example 1 • Algorithm F(n) // compute n! recursively // input: a nonnegative integer n // output: the value of n! if n = 0 return 1 else return F(n-1)*n CS3024-FAZ
Exp1: Analysis (1) • Input size = n • Formula: • F(n) = F(n-1) * n; n>0 • F(0) = 1 • The number of multiplication M(n) = M(n-1) + 1; n>0 • if n = 0 return 1 • The call stops when n = 0 • M(0) = 0 initial condition CS3024-FAZ
Exp1: Analysis (2) • Solving recurrence relations: Method of backward substitution M(n) = M(n-1) + 1 = [M(n-2)+1] + 1 = M(n-2) + 2 = [M(n-3)+1] + 2 = M(n-3) + 3 • General formula pattern: M(n)=M(n-i) + i • Initial condition, n=0 i = n: • M(n)= M(n-1)+1 = M(n-2)+2 =…= M(n-n)+n = n CS3024-FAZ
Analyzing Efficiency of Recursive Algorithms (1) • Decide on a parameter(s) indicating an input’s size • Identify the algorithm’s basic operation (typically, it is located in its inner most loop) • Check whether the number of times the basic operation is executed depends only on the size of an input. If it also depend on some additional property, the worst-case, average-case, and, if necessary, the best-case efficiencies have to be investigated separately CS3024-FAZ
Analyzing Efficiency of Recursive Algorithms (2) • Set up a recurrence relation, with an appropriate initial condition, for the number of times the algorithm’s basic operation is executed • Solve the recurrence or at the least ascertain(memastikan) the order of growth of its solution CS3024-FAZ
Example 2: Tower of Hanoi (1) • n disks on different sizes and three pegs • Initially, all disks are on the first peg in order of size. The largest on the bottom and the smallest on top • The goal: move all disks to the third peg, using the second one as an auxiliary • Move only one disk at a time • It is forbidden to place a larger disk on top of a smaller one CS3024-FAZ
Example 2: Tower of Hanoi (2) CS3024-FAZ
Tower of Hanoi: Recursive Solution (1) CS3024-FAZ
ToH: Recursive Solution (2) • To move n>1 disks from peg 1 to peg 3 (with peg 2 as an auxiliary(alat bantu)): • Move recursively n-1 disk(s) from peg 1 to peg 2 (with peg 3 as an auxiluiary) • Move the largest disk from peg 1 to peg 3 • Move recursively n-1 disk(s) from peg 2 to peg 3 (with peg 1 as an auxiliary) CS3024-FAZ
Exp2: Analysis (1) • Input’s size = the number of disks = n • Basic operation = moving one disk • The number of moves M(n) depends on n only: M(n) = M(n-1) + 1 + M(n-1) ; for n>1 • Recurrence relation: • M(n) = 2M(n-1) + 1 ; for n>1 • M(1) = 1 initial condition CS3024-FAZ
Exp2: Analysis (2) • Backward substitution: M(n) = 2M(n-1) + 1 = 2[2M(n-2)+1]+1=22M(n-2)+2+1 = 22 [2M(n-3)+1]+2+1=23M(n-3)+22+2+1 = 24M(n-4)+23+22+2+1 • The pattern, after i substitution: M(n) = 2iM(n-i) + 2i-1 + 2i-2 +..+ 2 + 1 = 2iM(n-i) + 2i - 1 CS3024-FAZ
Exp2: Analysis (3) • Initial condition, n=1 i=n-1: M(n) = 2iM(n-i) + 2i - 1 = 2(n-1)M(n-(n-1)) + 2(n-1) -1 = 2(n-1)M(1) + 2(n-1) - 1 = 2(n-1) + 2(n-1) - 1 = 2n - 1 • Exponential algorithm! • This is the most efficient algorithm • It is the problem’s intrinsic difficulty that makes it so computationally difficult CS3024-FAZ
Example 3 • AlgorithmBinRec(n) //input: a positive decimal integer n //output: the number of binary digits in n’s binary // representation if n = 1 return 1 else return BinRec(n/2) + 1 CS3024-FAZ
Exp3: Analysis (1) • The number of additions A(n) = A(n/2) + 1 ; for n>1 • Recursive calls end n=1, initial condition: A(1) = 0 • The presence of n/2 backward substitution stumble on values of n that are not powers of 2 • <!---Why?---> CS3024-FAZ
Exp3: Analysis (2) • Use smoothness rule: under the very broad assumptions the order of growth for n=2k≈ the order of growth for all values of n • n = 2k : A(2k) = A(2k-1) + 1 ; for n>1 A(20) = 0 CS3024-FAZ
Exp3: Analysis (3) • Use backward substitution: A(2k) = A(2k-1) + 1 = [A(2k-2) + 1] + 1 = A(2k-2) + 2 = [A(2k-3) + 1] + 2 = A(2k-3) + 3 … = A(2k-i) + i … = A(2k-k) + k = A(1) + k = k CS3024-FAZ
Exp3: Analysis (4) • A(2k) = A(1) + k = k • n = 2k, k = log2 n • A(n) = log2 n (log n) • The exact solution (more refined formula) A(n) = log2 n CS3024-FAZ
Exercises Solve the following recurrence relations: • x(n)=x(n-1)+5 for n>1, x(1)=0 • x(n)=3x(n-1)+5 for n>1, x(1)=4 • x(n)=x(n-1)+n for n>0, x(0)=0 • x(n)=x(n/2)+n for n>1, x(1)=1 (solve for n=2k) • x(n)=x(n/3)+1 for n>1, x(1)=1 (solve for n=3k) CS3024-FAZ