# 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[0]; maxval←A[0] 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[0]; maxval←A[0] 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.