* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Download Analysis of Recursive Algorithms
Survey
Document related concepts
Transcript
RAIK 283: Data Structures & Algorithms
Recursive Algorithm Analysis
Dr. Ying Lu
ylu@cse.unl.edu
September 13, 2012
1
RAIK 283: Data Structures & Algorithms
Giving
credit where credit is due:
• Most of the lecture notes are based on the slides
from the Textbook’s 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
2
Example: a recursive algorithm
Algorithm:
if n=0 then F(n) := 1
else F(n) := F(n-1) * n
return F(n)
3
Example: 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)
4
Recurrence Relation
Recurrence Relation
5
Recurrence Relation
Recurrence Relation: an equation or inequality that
describes a function in terms of its value on smaller
inputs
6
Example: a recursive algorithm
Algorithm:
if n=0 then F(n) := 1
else F(n) := F(n-1) * n
return F(n)
What does this algorithm compute?
7
Example: a recursive algorithm
Algorithm:
if n=0 then F(n) := 1
else F(n) := F(n-1) * n
return F(n)
What does this algorithm compute?
What’s the basic operation of this algorithm?
8
Example: recursive evaluation of n !
Recursive definition of n!:
Algorithm:
if n=0 then F(n) := 1
else F(n) := F(n-1) * n
return F(n)
M(n): number of multiplications to compute n!
with this recursive algorithm
9
Example: recursive evaluation of n !
Recursive definition of n!:
Algorithm:
if n=0 then F(n) := 1
else F(n) := F(n-1) * n
return F(n)
M(n): number of multiplications to compute n!
with this recursive algorithm
Could we establish a recurrence relation for
deriving M(n)?
10
Example: recursive evaluation of n !
Definition: n ! = 1*2*…*(n-1)*n
Recursive definition of n!:
Algorithm:
if n=0 then F(n) := 1
else F(n) := F(n-1) * n
return F(n)
M(n) = M(n-1) + 1
Initial Condition: M(0) = ?
11
Example: recursive evaluation of n !
Recursive
definition of n!:
Algorithm:
if n=0 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) in terms of n
only?
12
Time efficiency of recursive algorithms
Steps in analysis of recursive algorithms:
Decide on parameter n indicating input size
Identify algorithm’s 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
determine the order of growth of the solution (see
Appendix B)
13
EXAMPLE: 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
14
EXAMPLE: tower of hanoi
Design a recursive algorithm to solve this 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
15
EXAMPLE: tower of hanoi
Step 1: Solve simple case when n<=1?
Just trivial
B
A
B
C
A
C
Move(A, C)
16
EXAMPLE: tower of hanoi
Step 2: Assume that a smaller instance can be
solved, i.e. can move n-1 disks. Then?
B
B
A
A
C
C
B
A
C
17
EXAMPLE: tower of hanoi
B
B
A
A
C
C
B
A
C
B
18
A
C
EXAMPLE: tower of hanoi
B
B
A
A
C
C
B
TOWER(n, A, B, C)
A
C
B
19
A
C
EXAMPLE: tower of hanoi
B
TOWER(n-1, A, C, B)
B
A
A
C
C
B
Move(A, C)
TOWER(n, A, B, C)
A
C
B
TOWER(n-1, B, A, C)
20
A
C
EXAMPLE: tower of hanoi
TOWER(n, A, B, C) {
if n<1 return;
TOWER(n-1, A, C, B);
Move(A, C);
TOWER(n-1, B, A, C)
}
21
EXAMPLE: tower of hanoi
TOWER(n, A, B, C) {
if n<1 return;
TOWER(n-1, A, C, B);
Move(A, C);
TOWER(n-1, B, A, C)
}
Algorithm analysis:
Input size? Basic operation?
22
EXAMPLE: tower of hanoi
TOWER(n, A, B, C) {
if n<1 return;
TOWER(n-1, A, C, B);
Move(A, C);
TOWER(n-1, B, A, C)
}
Algorithm analysis:
Do we need to differentiate best case, worst
case & average case for inputs of size n?
23
EXAMPLE: tower of hanoi
TOWER(n, A, B, C) {
if n<1 return;
TOWER(n-1, A, C, B);
Move(A, C);
TOWER(n-1, B, A, C)
}
Algorithm analysis:
Set up a recurrence relation and initial
condition(s) for C(n)
24
EXAMPLE: tower of hanoi
TOWER(n, A, B, C) {
if n<1 return;
TOWER(n-1, A, C, B);
Move(A, C);
TOWER(n-1, B, A, C)
}
Algorithm analysis:
C(n) = 2C(n-1)+1
25
In-Class Exercise
P. 76 Problem 2.4.1 (c): solve this recurrence relation:
x(n) = x(n-1) + n for n>0, x(0)=0
P. 77 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 function’s 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.
26
Example: BinRec(n)
Algorithm BinRec(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
27
Smoothness rule
If T(n) (f(n))
for values of n that are powers of b, where b 2,
then
T(n) (f(n))
28
Example: BinRec(n)
Algorithm BinRec(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
If C(n) (f(n))
for values of n that are powers of b, where b 2,
then
C(n) (f(n))
29
Fibonacci 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
30
Solving linear homogeneous recurrence
relations with constant coefficients
Easy first: 1st order LHRRCCs:
C(n) = a C(n -1)
C(0) = t
Extrapolate to 2nd order
L(n) = a L(n-1) + b L(n-2)
… Solution: C(n) = t an
… 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
31
Solving 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)
32
Computing 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)
33
Computing 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
F[0] 0; F[1] 1
for i 2 to n do
F[i] F[i-1] + F[i-2]
return F[n]
34
Computing Fibonacci numbers
3. Explicit formula algorithm
1 1 5 n
F (n)
(
) rounded to the nearest integer
5
2
Special care in its implementation:
Intermediate results are irrational numbers
Their approximations in the computer are accurate enough
Final round-off yields a correct result
35
In-Class Exercises
What is the explicit formula for A(n)?
A(n) = 3A(n-1) – 2A(n-2)
A(0) = 1
A(1) = 3
P.83 2.5.3. 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 3stair staircase can be climbed three ways: 1-1-1, 12, and 2-1.)
36