14
動動動動

-動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Embed Size (px)

Citation preview

Page 1: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

-動態規劃

Page 2: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Getting started : Fibonacci Sequence

• Given initial value F(1) = 1, F(2) = 1.• Recursive relation F(n) = F(n-1) + F(n-2)• Given any number k, ask F(k)

Page 3: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Fibonacci Sequence – Normal Solution

• Use recursive• Continuity call the previous one• Return while it reach known value – F(1), F(2)

+ intuitive- Time-consuming and memory-consuming

→How many counts needed?

Page 4: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Fibonacci Sequence – Another Way

• Start from smaller one.• Continuous add the last two to get a new one.• Do until reach the value we want.

+ Faster- Not so easy to think at first glimpse

Page 5: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

DP Elements

• Table Element Definition• Recursive Formula• Computing Sequence– Recursion– Mathematical Induction– Divide-and-Conquer

※This part adapt from Pang-Feng’s PPT.

Page 6: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Relative Topics

• LCS / LIS / ..• BFS / DFS• Back Tracking

• Searching- More than once

Page 7: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Recall – LCS/LIS

• Given two or more sequences.• Want to find the maximum length of common

subsequence.• If add increasing restriction?

• How about if we need to print the result out ?

Page 8: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Recall – BFS/DFS

• Given a plane, may refine region or not.• Given starting point and ending point.• How many ways to reach with least steps?

(Means how many different shortest paths?)

• Visualize ?http://www.neopets.com/games/play.phtml?game_id=356

Page 9: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

An example : Spilt coin

• We have some values of coins now. $1, $5, …• Unlimited amount for each kind.• Given specific amount, find ways to combine.

• How if there are many test cases ?

Page 10: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Direct thought : Top down

• For example : $100, compose with $5 & $10• We may take $5 or $10 from it.

→ So ways(100) = ways(100-5) + ways(100-10)→ ways(n) = ways(n-5) + ways(n-10)

• Use recursion until reach the known ones.

Page 11: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

DP method : Bottom up

• Consider the value we can form from lower one.

• For example, if we have $5 and $10, we can add value by 5 or 10 through add one coin.

• How to use it ?

Page 12: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Related Exercises on Uva OJ

• 495 - Fibonacci Freeze• 825 - Walking on the Safe Side• 357 - Let Me Count The Ways

• 10405 - Longest Common Subsequence• 111 - History Grading• 10684 - The jackpot• 105 - The Skyline Problem

Page 13: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

References

• Pangfeng Liu, ACP-DP, 2004, NTU• UVa Online Judge

Page 14: -動態規劃. Getting started : Fibonacci Sequence Given initial value F(1) = 1, F(2) = 1. Recursive relation F(n) = F(n-1) + F(n-2) Given any number k, ask

Further Reading

• BFS,DFS and backtracking, by yugi340238, 2009-- Visualized illustration about search.

• DP slider, by muming, 2009-- Tiling problem, DP method of LIS.

• DP slider, by geniusdog, 2008-- Tiling problem, formal definition and properties about dynamic programming.