32 views

Uploaded by jsutj

recursive ppt for individuals taking a design and analysis class

save

You are on page 1of 24

and Analysis

Analysis Basics

Non-Recursive Algorithms

• When we count operations that occur in

loops, we only need to determine how many

operations there are inside the loop and how

many times the loop is executed.

• Recall our Largest Value Algorithm.

• largest = list[1]

• for i = 2 to N do

– if list[i] > largest then

» largest = list[i]

– end if

• end for

Non-Recursive Algorithms

• So, our analysis of the Largest Value

algorithm has given us the following results:

• B(N) = 1; Best Case

• A(N) = (N + 1)/2; Average Case

• W(N) = N; Worst Case

• It is important to always be mindful of what

operation(s) were counted for the analysis.

Recursive Algorithms

• However, for recursive algorithms it is

not clear how many times an operation

will be done. This depends on:

– Recursive Calls

– Preparatory Work

– Concluding Work

Recursive Algorithms

• Consider the following recursive algorithm to

compute the factorial of a number, N.

• Factorial( N )

• if N == 1 then

• return 1

• else

• smaller = N – 1

• answer = Factorial( smaller )

• return (N * answer)

• end if

Recursive Algorithms

• How will this algorithm compute

Factorial ( 4 )?

• Factorial ( 4 )

• Call Factorial ( 3 ).

• Call Factorial ( 2 ).

• Call Factorial ( 1 ).

• Then?????

Recursive Algorithms

• To analyze recursive algorithms, we

use the following formula:

DIR( N ),

for N ≤ SizeLimit

REC( N ) =

DIV( N ) + ΣREC( smallerSizes[ i ] ) + COM ( N ),

for N > SizeLimit

Recursive Algorithms

• Thus, for our algorithm Factorial( N ), we

have:

0, for N = 1

Calc( N ) =

1 + Calc( N – 1 ) + 1, for N > 1

**• What operation is being used for this
**

analysis?

• What is the time complexity of this algorithm?

Recursive Algorithms

• Recurrence relations can be directly

derived from a recursive algorithm.

• To determine the time complexity

(efficiency) of the algorithm we need to

convert the set of recursive algorithms

into closed form by removing the

recursive nature of the equations.

Recurrence Relations

• A recurrence relation is a recursive form

of an equation, for example:

T (1) =

3

T (n) = T (n −

1) +

2

**• A recurrence relation can be put into an
**

equivalent closed form without the

recursion

Recurrence Relations

**• Begin by looking at a series of
**

equations with decreasing values of n:

T (n) = T (n −1) + 2

T (n −1) = T (n −2) + 2

T (n −2) = T (n −3) + 2

T (n −3) = T (n −4) + 2

T (n −4) = T (n −5) + 2

Recurrence Relations

• Now, we substitute back into the first

equation:

T (n) = T (n − 1) + 2

T (n) = (T (n −2) + 2) + 2

T (n) = ((T (n −3) + 2) + 2) + 2

T (n) = (((T (n −4) + 2) + 2) + 2) + 2

T (n) = ((((T (n −5) + 2) + 2) + 2) + 2) + 2

Recurrence Relations

• We stop when we get to T(1):

T (n) = T (n −1) + 2

T (n) = (T (n −2) + 2) + 2

M

T (n) = (L ((T (1) + 2) + 2)L + 2) + 2

• How many “+ 2” terms are there? Notice we

increase them with each substitution.

Recurrence Relations

• We must have n of the “+ 2” terms

because there was one at the start and

we did n - 1 substitutions:

n

T (n) = ∑

T (1) + 2

i=

1

**• So, our closed form of the equation is:
**

T (n) =

3 +

2n

Suggested Exercises

• Exercises 2.1.1, pg. 34

• 1–4

• Exercises 2.2.2, pg. 41

• 1 – 4 & 9 – 12

Suggested Exercises

Exercises 2.1.1, #1

• int Fibonacci( N )

• if N == 1 or N == 2 then

– return 1

• else

– value1 = N – 1

– value2 = N – 2

– return Fibonacci( value1 ) + Fibonacci( value2 )

• endif

Suggested Exercises

Exercise 2.1.1, #1

0, if N = 1 or 2

Add( N ) =

**2 + Add( N – 1 ) + Add( N – 2 ) + 1, for N > 2
**

Suggested Exercise

Exersice 2.1.1, #2

• Power( X, Y )

• if Y == 0 then

– return 1

• else

– value = Y – 1

– return X * Power( X, value)

• endif

Suggested Exercises

Exercise 2.1.1, #2

0, if Y = 0

Mult( Y ) =

0 + Mult( Y – 1 ) + 1, for Y > 0

Suggested Exercises

Exercise 2.1.1, #3

• Power( X, Y)

• if Y == 0 then

– return 1

• else

– value = Ymod2

– return X**value * Power( X, Y/2 ) * Power( X, Y/2 )

• endif

Suggested Exercises

Exercise 2.1.1, #3

0, if Y = 0

Mult( Y ) =

**0 + Mult( Y/2 ) + Mult( Y/2 ) + 2, for Y > 0
**

Suggested Exercise

Exercise 2.2.2, #1

Suggested Exercise

Exercise 2.2.2, #3

Suggested Exercise

Exercise 2.2.2, #4

- Analysis Recursive AlgorithmUploaded byMini Girlrock
- MAT-IUploaded bymofai84
- Econtrics RESOURCEUploaded byrambori
- Midterm 3 ReviewUploaded byPri Garimalla
- Tutorial 9 SolsUploaded byRavi Prasad
- analysisUploaded bytychester
- CFG Left Recursive Predictive ParserUploaded byZulfiqar Akram
- 143053844-48702225-DS-BOOKUploaded bySaqib Kamal
- Eduqas a Computer Science Sams From 2015Uploaded byMohsin Khubaib Ahmed
- Comp Project - CopyUploaded byAnkur Upadhyay
- 1-4Uploaded byksr131
- Robert Thirsk High School – Course Guide (2014/2015)Uploaded bydscloutier_cbe
- intransit fall09 v4 betneUploaded byapi-246976503
- s1- edma360 unit plannerUploaded byapi-319280742
- REN Yifei-PS BioStatistics in University of Washington-01072014Uploaded byYang Erica Ye
- Chapra Numerical Analysis 9th Chapter SolutionUploaded byRoshan Shanmughan
- DS LAB MANUALUploaded bykrishnakrishna22
- Programming in C Lab ManualUploaded byAnonymous fIDhnPFOf