190 likes | 420 Views
Mathematical Analysis of Recursive Algorithms. Design and Analysis of Algorithms (CS3024) 28/02/2006. 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. Exp1: Analysis (1).
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