 # Analysis of non recursive algorithms Tutorial Class for

• Slides: 13 Analysis of non – recursive algorithms Tutorial Class for IV Sem BE ( CSE) 2016 -2017 Time efficiency of nonrecursive algorithms General Plan for Analysis 1. Decide on parameter n indicating input size 2. Identify algorithm’s basic operation 3. Check whether the performance of algorithm depends on size of input and nature of input. Then, determine worst, average, and best cases for input of size n 4. Set up a sum for the number of times the basic operation is executed 5. Simplify the sum using standard formulas and rules Useful summation formulas and rules l i u 1 = 1+1+…+1 = u - l + 1 In particular, l i u 1 = n - 1 + 1 = n (n) 1 i n i = 1+2+…+n = n(n+1)/2 n 2/2 (n 2) 1 i n i 2 = 12+22+…+n 2 = n(n+1)(2 n+1)/6 n 3/3 (n 3) 0 i n ai = 1 + a +…+ an = (an+1 - 1)/(a - 1) for any a 1 In particular, 0 i n 2 i = 20 + 21 +…+ 2 n = 2 n+1 - 1 (2 n ) (ai ± bi ) = ai ± bi m+1 i uai cai = c ai l i uai = l i mai + Exercise 1: What does this algorithm do? ALGORITHM Mystery(A[0. . n − 1]) // //Input: An array A[0. . n − 1] //Output: // for i ← 0 to n − 2 do for j ←i + 1 to n − 1 do if A[i]= A[j ] return false return true Exercise 1: What does this algorithm do? ALGORITHM Unique. Elements(A[0. . n − 1]) //Determines whether all the elements in a given array are distinct //Input: An array A[0. . n − 1] //Output: Returns “true” if all the elements in A are distinct // and “false” otherwise for i ← 0 to n − 2 do for j ←i + 1 to n − 1 do if A[i]= A[j ] return false return true Exercise 1: Analysis of Unique. Elements Algorithm 1. Decide on parameter n indicating input size n : the number of elements in the list 2. Identify algorithm’s basic operation Comparison ( if A[i] = A[j] ) is the basic operation 3. Check whether the performance of algorithm depends on size of input and nature of input. Best: First and second elements are same Worst: i) No elements are equal ii) Only last two elements are equal Average: ? ? ? 4. Set up a sum for the number of times the basic operation is executed 5. Simplify the sum using standard formulas and rules Exercise 2: Study the given algorithm ALGORITHM Mystery(n) //Input: A nonnegative integer n S ← 0 for i ← 1 to n do S ←S + i ∗ i return S Answer the following questions a. What does this algorithm compute? b. What is its basic operation? c. How many times is the basic operation executed? d. What is the efficiency class of this algorithm? e. Suggest an improvement, or a better algorithm altogether, and indicate its efficiency class. If you cannot do it, try to prove that, in fact, it cannot be done. Exercise 2: Study the given algorithm ALGORITHM Mystery(n) //Input: A nonnegative integer n S ← 0 for i ← 1 to n do S ←S + i ∗ i return S Answer the following questions • a. What does this algorithm compute? Computes the series 12 + 22 +. . + n 2 b. What is its basic operation? Multiplication ( i * i) c. How many times is the basic operation executed? n times d. What is the efficiency class of this algorithm? O ( n) e. Suggest an improvement, or a better algorithm altogether, and indicate its efficiency class. If you cannot do it, try to prove that, in fact, it cannot be done. S = n ( n + 1) (2 n + 1) / 6, multiplication is done only three times Exercise 3: Study the given algorithm ALGORITHM Secret(A[0. . n − 1]) //Input: An array A[0. . n − 1] of n real numbers minval←A; maxval←A for i ← 1 to n − 1 do if A[i]< minval←A[i] if A[i]> maxval←A[i] return maxval − minval Answer the following questions a. What does this algorithm compute? b. What is its basic operation? c. How many times is the basic operation executed? d. What is the efficiency class of this algorithm? e. Suggest an improvement, or a better algorithm altogether, and indicate its efficiency class. If you cannot do it, try to prove that, in fact, it cannot be done. Exercise 4: Study the given algorithm ALGORITHM Enigma(A[0. . n − 1, 0. . n − 1]) //Input: A matrix A[0. . n − 1, 0. . n − 1] of real numbers for i ← 0 to n − 2 do for j ←i + 1 to n − 1 do if A[i, j ] = A[j, i] return false return true Answer the following questions a. What does this algorithm compute? b. What is its basic operation? c. How many times is the basic operation executed? d. What is the efficiency class of this algorithm? e. Suggest an improvement, or a better algorithm altogether, and indicate its efficiency class. If you cannot do it, try to prove that, in fact, it cannot be done. Thank you Solutions to Exercises 3 & 4 in the next slides Exercise 3: Study the given algorithm ALGORITHM Secret(A[0. . n − 1]) //Input: An array A[0. . n − 1] of n real numbers minval←A; maxval←A for i ← 1 to n − 1 do if A[i]< minval←A[i] if A[i]> maxval←A[i] return maxval − minval Answer the following questions a. What does this algorithm compute? Largest and the smallest elements in the list. b. What is its basic operation? Comparison c. How many times is the basic operation executed? 2 n times d. What is the efficiency class of this algorithm? O ( n) e. Suggest an improvement, or a better algorithm altogether, and indicate its efficiency class. If you cannot do it, try to prove that, in fact, it cannot be done. Use else if. However, the efficiency class remains same. Exercise 4: Study the given algorithm ALGORITHM Enigma(A[0. . n − 1, 0. . n − 1]) //Input: A matrix A[0. . n − 1, 0. . n − 1] of real numbers for i ← 0 to n − 2 do for j ←i + 1 to n − 1 do if A[i, j ] = A[j, i] return false return true Answer the following questions a. What does this algorithm compute? b. What is its basic operation? c. How many times is the basic operation executed? d. What is the efficiency class of this algorithm? e. Suggest an improvement, or a better algorithm altogether, and indicate its efficiency class. If you cannot do it, try to prove that, in fact, it cannot be done.