Recursion [3] In the last class Asymptotic growth rate The Sets - - PDF document

recursion
SMART_READER_LITE
LIVE PREVIEW

Recursion [3] In the last class Asymptotic growth rate The Sets - - PDF document

Algorithm : Design & Analysis Recursion [3] In the last class Asymptotic growth rate The Sets , and Complexity Class An Example: Maximum Subsequence Sum Improvement of Algorithm Comparison of Asymptotic


slide-1
SLIDE 1

Recursion

Algorithm : Design & Analysis [3]

slide-2
SLIDE 2

In the last class…

Asymptotic growth rate The Sets Ο, Ω and Θ Complexity Class An Example: Maximum Subsequence Sum

Improvement of Algorithm Comparison of Asymptotic Behavior

Another Example: Binary Search

Binary Search Is Optimal

slide-3
SLIDE 3

Recursion

Recursive Procedures Proving Correctness of Recursive Procedures Deriving recurrence equations Solution of the Recurrence equations

Guess and proving Recursion tree Master theorem

Divide-and-conquer

slide-4
SLIDE 4

Recursion as a Thinking Way

Cutting the plane

How many sections can be generated at most by n

straight lines with infinite length.

Line n Intersecting all n-1 existing lines to get as most sections as possible

L(0) = 1 L(n) = L(n-1) +n L(0) = 1 L(n) = L(n-1) +n

slide-5
SLIDE 5

Recursion for Algorithm

Computing n!

if n=1 then return 1 else return Fac(n-1)*n

M(1)=0 and M(n)=M(n-1)+1 for n>0

(critical operation: multiplication)

Hanoi Tower

if n=1 then move d(1) to peg3 else

{ Hanoi(n-1, peg1, peg2); move d(n) to peg3; Hanoi(n-1, peg2, peg3) M(1)=1 and M(n)=2M(n-1)+1 for n>1

(critical operation: move)

Recurrence relations

slide-6
SLIDE 6

Counting the Number of Bit

Input: a positive decimal integer n Output: the number of binary digits in n’s

binary representation

Int BinCounting (int n)

  • 1. if (n==1) return 1;
  • 2. else
  • 3. return BinCounting(n div 2)+1;

Int BinCounting (int n)

  • 1. if (n==1) return 1;
  • 2. else
  • 3. return BinCounting(n div 2)+1;
slide-7
SLIDE 7

Correctness of BinCounting

Proof by induction Base case: if n =1, trivial by line 1. Inductive hypothesis: for any 0<k<n, BinCounting(k)

return the correct result.

Induction

If n≠1 then line 3 is excuted (n div 2) is a positive decimal integer (so, the

precondition for BinCounting is still hold), and

0<(n div 2)<n, so, the inductive hypothesis applies So, the correctness (the number of bit of n is one more

the that of (n div 2)

slide-8
SLIDE 8

Complexity Analysis of BinCounting

The critical operation: addition The recurrence relation

⎣ ⎦

( )

⎩ ⎨ ⎧ > + = = 1 1 2 / 1 ) ( n n T n n T

slide-9
SLIDE 9

Solution by backward substitutions

n n n T n T n T n T n T n T n k k n n T n T

k k

log log 2 ) ( ...... 1 1 1 8 1 1 4 1 2 ) ( log is, that , ) integer e nonnegativ a is ( 2 let , simplicity For 1 2 ) ( equation recursion By the = + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ = = + + + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ = + + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ = + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ = = = + ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⎥ ⎦ ⎥ ⎢ ⎣ ⎢ = :

( T(1)=0 )

slide-10
SLIDE 10

Smooth Functions

Let f(n) be a nonnegative eventually non-

decreasing function defined on the set of natural numbers, f(n) is called smooth if f(2n)∈Θ(f(n)).

Note: logn, n, nlogn and nα (α≥0) are all

smooth.

For example: 2nlog2n = 2n(logn+log2)∈Θ(nlogn)

slide-11
SLIDE 11

Even Smoother

Let f(n) be a smooth function, then, for any fixed integer b≥2,

f(bn)∈Θ(f(n)).

That is, there exist positive constants cb and db and a

nonnegative integer n0 such that dbf(n) ≤ f(bn) ≤ cbf(n) for n≥n0.

. as use can we ), ( ) 2 ( ) ( Then, 2 2 , 2 integer arbitrary an For . and ... 3 , 2 , 1 for ) ( ) 2 ( : inequality second for the , 2 for holds result that the prove easy to is It

2 2 1

  • k

2 b k k k k k k k

c c n f c n f bn f b b n n k n f c n f b ≤ ≤ ≤ ≤ ≥ ≥ = ≤ =

slide-12
SLIDE 12

Smoothness Rule

Let T(n) be an eventually nondecreasing function and

f(n) be a smooth function. If T(n)∈Θ(f(n)) for values of n that are powers of b(b≥2), then T(n)∈Θ(f(n)). ) ( ) ( ) ( ) ( ) ( ) ( , Let . for ) ( ) ( : result prior By the . for ) ( ) ( : hypothsis By the : part Oh

  • big

the proving Just

1 1 1

n f cc b f cc bb cf b cf b T n T b n b n n n n f c bn f n b b cf b T

b k b k k k k k b k k k

≤ ≤ = ≤ ≤ ≤ ≤ ≤ ≥ ≤ ≥ ≤

+ + +

Non-decreasing hypothesis Prior result Non-decreasing

slide-13
SLIDE 13

Computing the nth Fibonacci Number

k n m n n n

a r a r a r a

− − −

+ + + = L

2 2 1 1

is called linear homogeneous relation of degree k. f1=0 f2=1 fn= fn-1+ fn-2 f1=0 f2=1 fn= fn-1+ fn-2 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...... For the special case of Fibonacci: an=an-1+an-2, r1=r2=1

slide-14
SLIDE 14

Characteristic Equation

For a linear homogeneous recurrence relation of degree k

the polynomial of degree k is called its characteristic equation.

The characteristic equation of linear homogeneous

recurrence relation of degree 2 is:

k n k n n n

a r a r a r a

− − −

+ + + = L

2 2 1 1

k k k k

r x r x r x + + + =

− −

L

2 2 1 1

2 1 2

= − − r x r x

slide-15
SLIDE 15

Solution of Recurrence Relation

If the characteristic equation of the

recurrence relation has two distinct roots s1 and s2, then where u and v depend on the initial conditions, is the explicit formula for the sequence.

If the equation has a single root s, then, both s1 and s2 in

the formula above are replaced by s

2 1 2

= − − r x r x

2 2 1 1 − − +

=

n n n

a r a r a

n n n

vs us a

2 1 +

=

slide-16
SLIDE 16

Proof of the Solution

2 2 1 1 2 2 2 1 2 1 2 1 1 1 2 2 2 1 2 1 2 1 2 1 1 1 2 2 1 2 2 2 1 1 2 1 2 2 2 2 2 1 2 1 2 1 2 2 1 1 2 1 2 1 2

) ( ) ( ) ( ) ( : that prove need We : equation Remember

− − − − − − − − − − − − − − − −

+ = + + + = + + + = + + + = + = + + = + = − −

n n n n n n n n n n n n n n n n n n n n

a r a r vs us r vs us r vs r vs r us r us r r s r vs r s r us s vs s us vs us a r a r vs us r x r x the

slide-17
SLIDE 17

Return to Fibonacci Sequence

f1=1 f2=1 fn= fn-1+ fn-2 f1=1 f2=1 fn= fn-1+ fn-2 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...... Explicit formula for Fibonacci Sequence

The characteristic equation is x2-x-1=0, which has roots:

2 5 1 2 5 1

2 1

− = + = s and s

Note: (by initial conditions)

1 1

2 2 2 1 2 2 1 1

= + = = + = vs us f and vs us f

which results:

n n n

f ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ − − ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ + = 2 5 1 5 1 2 5 1 5 1

slide-18
SLIDE 18

Guess the Solutions

Example: T(n)=2T(⎣n/2⎦) +n Guess

T(n)∈O(n)?

T(n)≤cn, to be proved for c large enough

T(n)∈O(n2)?

T(n)≤cn2, to be proved for c large enough

Or maybe, T(n)∈O(nlogn)?

T(n)≤cnlogn, to be proved for c large enough

Try to prove T(n)≤cn: T(n)=2T(⎣n/2⎦)+n ≤ 2c(⎣n/2⎦)+n ≤ 2c(n/2)+n = (c+1)n, Fail! However: T(n) = 2T(⎣n/2⎦)+n ≥ 2c⎣n/2⎦+n ≥ 2c[(n-1)/2]+n = cn+(n-c) ≥ cn T(n) = 2T(⎣n/2⎦)+n ≤ 2(c⎣n/2⎦ log (⎣n/2⎦))+n ≤ cnlog (n/2)+n = cn log n – cn log 2 +n = cn log n – cn + n ≤ cn log n for c≥1

slide-19
SLIDE 19

Recursion Tree

T(size) nonrecursive cost The recursion tree for T(n)=T(n/2)+T(n/2)+n T(n) n T(n/4) n/4 T(n/4) n/4 T(n/4) n/4 T(n/4) n/4 T(n/2) n/2 T(n/2) n/2

slide-20
SLIDE 20

Recursion Tree Rules

Construction of a recursion tree

work copy: use auxiliary variable root node expansion of a node:

recursive parts: children nonrecursive parts: nonrecursive cost

the node with base-case size

slide-21
SLIDE 21

Recursion tree equation

For any subtree of the recursion tree,

size field of root =

Σ nonrecursive costs of expanded nodes + Σ size fields of incomplete nodes

Example: divide-and-conquer:

T(n) = bT(n/c) + f(n)

After kth expansion:

− = − −

⎟ ⎠ ⎞ ⎜ ⎝ ⎛ + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ =

1 1 1 1

) (

k i i i k k

c n f b c n T b n T

slide-22
SLIDE 22

Evaluation of a Recursion Tree

Computing the sum of the nonrecursive costs

  • f all nodes.

Level by level through the tree down. Knowledge of the maximum depth of the

recursion tree, that is the depth at which the size parameter reduce to a base case.

slide-23
SLIDE 23

Recursion Tree

T(n) n T(n/4) n/4 T(n/4) n/4 T(n/4) n/4 T(n/4) n/4 T(n/2) n/2 T(n/2) n/2 Work copy: T(k)=T(k/2)+T(k/2)+k Work copy: T(k)=T(k/2)+T(k/2)+k

At this level: T(n)=n+2(n/2)+4T(n/4)=2n+4T(n/4) At this level: T(n)=n+2(n/2)+4T(n/4)=2n+4T(n/4) n/2d

(size →1)

T(n)=nlgn

slide-24
SLIDE 24

Recursion Tree for T(n)=3T(⎣n/4⎦)+Θ(n2)

cn2

T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) c((1/16)n)2

c((1/16)n)2

…… …… c(¼ n)2 c(¼ n)2 c(¼ n)2 log4n cn2

2

16 3 cn

2 2

16 3 cn ⎟ ⎠ ⎞ ⎜ ⎝ ⎛

( )

3 log4

n Θ

Total: Θ(n2) Note:

3 log log

4 4

3 n

n = c((1/16)n)2 c((1/16)n)2 c((1/16)n)2 …… …… T(1)

slide-25
SLIDE 25

Verifying “Guess” by Recursive Tree

) ( ) ( 13 16 ) ( 16 3 1 1 ) ( 16 3 ) ( 16 3 ) (

2 3 log 2 3 log 2 3 log 2 1 log 3 log 2

4 4 4 4 4

n O n cn n cn n cn n cn n T

i i n i i

= Θ + = Θ + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ − = Θ + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ < Θ + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ =

∑ ∑

∞ = − =

⎣ ⎦ ⎣ ⎦

c d when dn cn dn cn n d cn n d cn n T n T 13 16 16 3 ) 4 / ( 3 4 / 3 ) 4 / ( 3 ) (

2 2 2 2 2 2 2 2

≥ ≤ + = + ≤ + ≤ + ≤

Inductive hypothesis Inductive hypothesis

slide-26
SLIDE 26

Recursion Tree for T(n)=bT(n/c)+f(n)

f(n)

T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) f(n/c2) f(n/c2) f(n/c2) f(n/c2) f(n/c2) f(n/c2) f(n/c2) f(n/c2) f(n/c2) …… …… f(n/c) f(n/c) f(n/c) logcn f(n)

) / ( c n bf

) / (

2 2

c n f b

( )

b

c

nlog Θ

Note:

b n

c c

n b

log log

=

b b

Total ?

slide-27
SLIDE 27

Solving the Divide-and-Conquer

The recursion equation for divide-and-conquer,

the general case:T(n)=bT(n/c)+f(n)

Observations:

Let base-cases occur at depth D(leaf), then n/cD=1,

that is D=lg(n)/lg(c)

Let the number of leaves of the tree be L, then L=bD,

that is L=b(lg(n)/lg(c)).

By a little algebra: L=nE, where E=lg(b)/lg(c), called

critical exponent.

c b n b c n b c n

c n

b L

lg lg lg lg lg lg lg lg lg

2 2 2

lg lg

= = = =

slide-28
SLIDE 28

Divide-and-Conquer: the Solution

The recursion tree has depth D=lg(n)/ lg(c), so there

are about that many row-sums.

The 0th row-sum is f(n), the nonrecursive cost of the

root.

The Dth row-sum is nE, assuming base cases cost 1,

  • r Θ(nE) in any event.

The solution of divide-and-conquer equation is the

non-recursive costs of all nodes in the tree, which is the sum of the row-sums.

slide-29
SLIDE 29

Solution by Row-sums

[Little Master Theorem] Row-sums decide the

solution of the equation for divide-and-conquer:

Increasing geometric series: T(n)∈Θ(nE) Constant: T(n)∈Θ (f(n) log n) Decreasing geometric series: T(n)∈Θ (f(n))

This can be generalized to get a result not using explicitly row-sums. This can be generalized to get a result not using explicitly row-sums.

slide-30
SLIDE 30

Master Theorem

Loosening the restrictions on f(n)

Case 1: f(n)∈O(nE-ε), (ε>0), then:

T(n)∈Θ(nE)

Case 2: f(n)∈Θ(nE), as all node depth contribute

about equally: T(n)∈Θ(f(n)log(n))

case 3: f(n)∈Ω(nE+ε), (ε>0), and f(n)∈O(nE+δ),

(δ≥ε), then: T(n)∈Θ(f(n))

The positive ε is critical, resulting gaps between cases as well The positive ε is critical, resulting gaps between cases as well

slide-31
SLIDE 31

Using Master Theorem

) (lg ) ( , 2 ), ( 1 ) ( , , 2 3 , 1 1 3 2 ) ( 2 ) ( ) ( , 1 ), ( ) ( , 2 , 3 , 9 3 9 ) ( 1

2 1

n n T applies case n n f E c b n T n T Example n n T applies case n O n n f E c b n n T n T Example

E

Θ = Θ = = = = = + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ = Θ = = = = = = + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ =

slide-32
SLIDE 32

Using Master Theorem

) lg ( ) ( , 3 ) ( ) ( lg ) ( , 793 . 3 log , 4 , 3 lg 4 3 ) ( 3

21 . 1 21 . 4

n n n T applies case n O n n n n f E c b n n n T n T Example

E E

Θ = = Ω = = ≈ = = = + ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ =

+ +

slide-33
SLIDE 33

Looking at the Gap

T(n)=2T(n/2)+nlgn

a=2, b=2, E=1, f(n)=nlgn We have f(n)=Ω(nE), but no ε>0 satisfies

f(n)=Ω(nE+ε), since lgn grows slower that nε for any small positive ε.

So, case 3 doesn’t apply. However, neither case 2 applies.

slide-34
SLIDE 34

Home Assignment

pp.143-

3.4 3.6 3.9-3.11