Title: CSCE 310: Data Structures
1CSCE 310 Data Structures Algorithms
- Recursive Algorithm Analysis
- Dr. Ying Lu
- ylu_at_cse.unl.edu
September 8, 2010
2CSCE 310 Data Structures Algorithms
- Giving credit where credit is due
- Most of the lecture notes are based on the slides
from the Textbooks companion website - http//www.aw-bc.com/info/levitin
- Several slides are from Hsu Wen Jing of the
National University of Singapore - I have modified them and added new slides
3Example a recursive algorithm
- Algorithm
- if n0 then F(n) 1
- else F(n) F(n-1) n
- return F(n)
4Example another recursive algorithm
Algorithm F(n) // Compute the nth Fibonacci
number recursively //Input A nonnegative integer
n //Output the nth Fibonacci number if n ? 1
return n else return F(n-1) F(n-2)
5Example recursive evaluation of n !
- Definition n ! 12(n-1)n
- Recursive definition of n!
- Algorithm
- if n0 then F(n) 1
- else F(n) F(n-1) n
- return F(n)
- M(n) number of multiplications to compute n!
- Could we establish a recurrence relation for
deriving M(n)?
6Example recursive evaluation of n !
- M(n) M(n-1) 1 for n gt 0
- A recurrence relation is an equation or
inequality that describes a function in terms of
its value on smaller inputs - Explicit formula for the sequence (e.g. M(n)) in
terms of n only
7Example recursive evaluation of n !
- Definition n ! 12(n-1)n
- Recursive definition of n!
- Algorithm
- if n0 then F(n) 1
- else F(n) F(n-1) n
- return F(n)
- M(n) M(n-1) 1
- Initial Condition M(0) ?
8Example recursive evaluation of n !
- Recursive definition of n!
- Algorithm
- if n0 then F(n) 1
- else F(n) F(n-1) n
- return F(n)
- M(n) M(n-1) 1
- Initial condition M(0) 0
- Explicit formula for M(n)?
9Time efficiency of recursive algorithms
- Steps in analysis of recursive algorithms
- Decide on parameter n indicating input size
- Identify algorithms basic operation
- Determine worst, average, and best case for
inputs of size n - Set up a recurrence relation and initial
condition(s) for C(n)-the number of times the
basic operation will be executed for an input of
size n - Solve the recurrence to obtain a closed form or
estimate the order of magnitude of the solution
(see Appendix B)
10EXAMPLE tower of hanoi
- Problem
- Given three pegs (A, B, C) and n disks of
different sizes - Initially, all the disks are on peg A in order of
size, the largest on the bottom and the smallest
on top - The goal is to move all the disks to peg C using
peg B as an auxiliary - Only 1 disk can be moved at a time, and a larger
disk cannot be placed on top of a smaller one
B
n disks
A
C
11EXAMPLE tower of hanoi
- Step 1 Solve simple case when nlt1?
- Just trivial
B
B
A
C
A
C
Move(A, C)
12EXAMPLE tower of hanoi
- Step 2 Assume that a smaller instance can be
solved, i.e. can move n-1 disks. Then? -
B
B
A
C
A
C
B
A
C
13EXAMPLE tower of hanoi
B
B
A
C
A
C
B
A
C
B
A
C
14EXAMPLE tower of hanoi
B
B
A
C
A
C
B
TOWER(n, A, B, C)
A
C
B
A
C
15EXAMPLE tower of hanoi
B
TOWER(n-1, A, C, B)
B
A
C
A
C
B
Move(A, C)
TOWER(n, A, B, C)
A
C
TOWER(n-1, B, A, C)
B
A
C
16EXAMPLE tower of hanoi
TOWER(n, A, B, C)
if nlt1 return
TOWER(n-1, A, C, B)
Move(A, C)
TOWER(n-1, B, A, C)
17EXAMPLE tower of hanoi
- Algorithm analysis
- Input size? Basic operation?
-
18EXAMPLE tower of hanoi
- Algorithm analysis
- Do we need to differentiate best case, worst case
average case for inputs of size n?
19EXAMPLE tower of hanoi
- Algorithm analysis
- Set up a recurrence relation and initial
condition(s) for C(n)
20In-Class Exercise
- P. 76 Problem 2.4.1 (c) solve this recurrence
relation - x(n) x(n-1) n
- P. 76 Problem 2.4.4 consider the following
recursive algorithm - Algorithm Q(n)
- // Input A positive integer n
- If n 1 return 1
- else return Q(n-1) 2 n 1
- A. Set up a recurrence relation for this
functions values and solve it to determine what
this algorithm computes - B. Set up a recurrence relation for the number of
multiplications made by this algorithm and solve
it. - C. Set up a recurrence relation for the number of
additions/subtractions made by this algorithm and
solve it.
21Example BinRec(n)
Algorithm BinRec(n) //Input A positive decimal
integer n //Output The number of binary digits
in ns binary representation if n 1 return
1 else return BinRec( ?n/2? ) 1
22Smoothness rule
- If T(n) ? ?(f(n))
- for values of n that are powers of b, where b ?
2, -
- then
-
- T(n) ? ?(f(n))
23Example BinRec(n)
Algorithm BinRec(n) //Input A positive decimal
integer n //Output The number of binary digits
in ns binary representation if n 1 return
1 else return BinRec( ?n/2? ) 1
24Fibonacci numbers
- The Fibonacci sequence
- 0, 1, 1, 2, 3, 5, 8, 13, 21,
- Fibonacci recurrence
- F(n) F(n-1) F(n-2)
- F(0) 0
- F(1) 1
2nd order linear homogeneous recurrence relation
with constant coefficients
25Solving linear homogeneous recurrence relations
with constant coefficients
- Easy first 1st order LHRRCCs
- C(n) a C(n -1) C(0) t
Solution C(n) t an - Extrapolate to 2nd order
- L(n) a L(n-1) b L(n-2)
A solution? L(n) ? - Characteristic equation (quadratic)
- Solve to obtain roots r1 and r2 (quadratic
formula) - General solution to RR linear combination of r1n
and r2n - Particular solution use initial conditions
26Solving linear homogeneous recurrence relations
with constant coefficients
- Easy first 1st order LHRRCCs
- C(n) a C(n -1) C(0) t
Solution C(n) t an - Extrapolate to 2nd order
- L(n) a L(n-1) b L(n-2)
A solution? L(n) ? - Characteristic equation (quadratic)
- Solve to obtain roots r1 and r2 (quadratic
formula) - General solution to RR linear combination of r1n
and r2n - Particular solution use initial conditions
- Explicit Formula for Fibonacci Number F(n)
F(n-1) F(n-2)
27Computing Fibonacci numbers
- 1. Definition based recursive algorithm
Algorithm F(n) // Compute the nth Fibonacci
number recursively //Input A nonnegative integer
n //Output the nth Fibonacci number if n ? 1
return n else return F(n-1) F(n-2)
28Computing Fibonacci numbers
- 2. Nonrecursive brute-force algorithm
Algorithm Fib(n) // Compute the nth Fibonacci
number iteratively //Input A nonnegative integer
n //Output the nth Fibonacci number F0 ? 0
F1 ? 1 for i ? 2 to n do Fi ? Fi-1
Fi-2 return Fn
29Computing Fibonacci numbers
3. Explicit formula algorithm
30In-Class Exercises
- Another example
- A(n) 3A(n-1) 2A(n-2) A(0) 1 A(1) 3
- P.83 2.5.4. Climbing stairs Find the number of
different ways to climb an n-stair stair-case if
each step is either one or two stairs. (For
example, a 3-stair staircase can be climbed three
ways 1-1-1, 1-2, and 2-1.)
31Announcement
- Reading List of this Week
- Chapter 3