lecture 20: dynamic programming iii - courses.csail.mit.edu · 2011-04-21 · lecture 20: dynamic...

27
6.006 Introduction to Algorithms Lecture 20: Dynamic Programming III Prof. Erik Demaine

Upload: others

Post on 30-Jun-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

6.006IntroductiontoAlgorithms

Lecture20:DynamicProgrammingIIIProf.ErikDemaine

Page 2: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

Today• Dynamicprogrammingreview• Guessing

– Withinasubproblem– Usingadditionalsubproblems

• Parenthesization• Knapsack• Tetristraining

Page 3: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

DynamicProgrammingHistory

‘Bellman…explainedthatheinventedthename“dynamicprogramming”tohidethefactthathewasdoingmathematicalresearchatRANDunderaSecretaryofDefensewho“hadapathologicalfearandhatredoftheterm,research.”Hesettledon“dynamicprogramming”becauseitwouldbedifficultgiveita“pejorativemeaning”andbecause“ItwassomethingnotevenaCongressmancouldobjectto.”’

[JohnRust2006]http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.87.2819&rep=rep1&type=pdf

RichardE.Bellman(1920–1984)

IEEEMedalofHonor,1979http://www.amazon.com/Bellman‐Continuum‐Collection‐Works‐Richard/dp/9971500906

Page 4: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

WhatisDynamicProgramming?• “Controlled”bruteforce/exhaustivesearch• Keyideas:

– Subproblems:likeoriginalproblem,butsmaller• Writesolutiontoonesubproblem intermsofsolutionstosmallersubproblems

– Memoization:rememberthesolutiontosubproblems we’vealreadysolved,andre‐use• Avoidexponentials

– Guessing: ifyoudon’tknowsomething,guessit!(tryallpossibilities)

Page 5: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

HowtoDynamicProgramFiveeasysteps!1. Definesubproblems2. Guess something(partofsolution)3. Relatesubproblem solutions(recurrence)4. Recurse andmemoize (topdown)

or BuildDPtablebottomup5. Solve originalproblemviasubproblems

(usuallyeasy)

Page 6: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

HowtoAnalyzeDynamicPrograms

Fiveeasysteps!1. Definesubproblems count#subproblems2. Guesssomething count#choices3. Relatesubproblem solutions

analyzetimepersubproblem4. DPrunningtime =#subproblems

timepersubproblem5. Sometimesadditionalrunningtime

tosolveoriginalproblem

Page 7: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

FibonacciNumber

1. Subproblems: for2. Guess: nothing3. Recurrence: ;

4. DPtime =#subproblems time/subproblem

5. Originalproblem=

photobyRobobobobohttp://www.flickr.com/photos/45493477@N05/4178075187/

Page 8: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

CrazyEights

1. Subproblems: =lengthoflongesttrickendingwithcard ,for

2. Guess: previouscard in3. Recurrence:trick =1+max

trick for ifcards match}4. DPtime =#subproblems time/subproblem

5. Originalproblem=max(trick for )

7♣ 7♥ K♣ K♠ 8♥2♣

Page 9: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

7♣ 7♥ K♣ K♠ 8♥2♣CrazyEights

recurse+memoize DPtablememo={}def trick :if notinmemo:

memo 1+maxtrick forifcards match}

returnmemoreturnmax(trick for )

trick={}for from to :trick 1+max

trick forifcards match}

returnmax(trick for )

Page 10: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

hieroglyphologyMichaelangelo

SequenceAlignment(LCS,EditDistance,etc.)

1. Subproblems:for & :=costofbestalignmentof &

2. Guess: howtoalign/drop and3. Recurrence:

4. DPtime =#subproblems time/subproblem

5. Originalproblem=

hieroglyphologyMichaelangelo

Page 11: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

ChoosingSubproblems• Forstring/sequence/array :

– Suffixes– Prefixes– Substrings

Page 12: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

Bellman‐Ford(single‐sourceshortestpaths)

1. Subproblems:for & :=weightofshortest

pathusing edges2. Guess: lastedgeinthispath3. Recurrence:

4. DPtime =#subproblems time/subproblem

5. Originalproblem= | | for

Page 13: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

Floyd‐Warshall(all‐pairsshortestpaths)

1. Subproblems:for & :=weightofshortest path

usingintermediateverticesin2. Guess: isvertex inthepath?3. Recurrence:

4. DPtime =#subproblems time/subproblem

5. Originalproblem= for

Page 14: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

Bottom‐UpFloyd‐Warshall

for in :for in :

[ ifnoedge]for from to :for from to :for from to :if

Page 15: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

Parenthesization Problem• Givensequenceofmatrices ofdimensions

• Computeassociativeproductusingsequenceofnormalmatrixmultipliesintheorderthatminimizescost

• Costtomultiply with is

Page 16: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

Parenthesization Example

Page 17: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

Parenthesization DP1. Subproblems:for :

costofoptimalmultiplicationof2. Guess: lastmultiplicationtodo:

3. Recurrence:

• Prefix/suffixnotenough;usesubstrings

Page 18: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

Parenthesization DP1. Subproblems:for :

costofoptimalmultiplicationof2. Guess: lastmultiplicationtodo:

3. Recurrence:

4. DPtime =#subproblems time/subproblem

5. Originalproblem=

Page 19: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

KnapsackProblem

• Knapsackofintegersize• Items• Item hasintegersizeandvalue

• Goal: Choosesubsetofitemsofmaximumpossibletotalvalue,subjecttototalsize

photobyErikDemaine

Page 20: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

KnapsackDP1. Subproblems:for :

optimalpackingofitems2. Guess: includeitem ?3. Recurrence:

• Howtomaintainremainingspaceinknapsack?

Page 21: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

Guess!

http://3.bp.blogspot.com/_lrYZ590iyME/TA‐aqU7MPnI/AAAAAAAABf8/KXABMduUVvM/s1600/Guess+Backpack.jpg

Page 22: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

KnapsackDP1. Subproblems:for & :

optimalpackingofitemsintoknapsackofsize

2. Guess: includeitem ?3. Recurrence:

4. DPtime =#subproblems time/subproblem

5. Originalproblem=

Page 23: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

PseudopolynomialTime• runningtimeispseudopolynomial• Ingeneral: polynomialin andtheintegersintheprobleminput

• Equivalently: polynomialintheinputsizeiftheintegerswerewritteninunary

• Polynomialtimeassumesencodedinbinary• Knapsackisextremelyunlikelytohaveapolynomial‐timealgorithm(seeLecture25)

Page 24: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

TetrisTraining

• Givensequenceof pieces

• Givenboardofsmallwidthandlargerheight

• Goal: Placeeachpieceinsequencetosurvive—staywithinheight —withoutanyholes/overhang

Page 25: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

TetrisTrainingDP1. Subproblems:for :

canyousurvivegivenpieces ?2. Guess: howtoplacepiece3. Recurrence:

• Howtoknowvalidmovesforpiece ?• Guess!

Page 26: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

TetrisTrainingDP1. Subproblems:for

& :canyousurvivegivenpieces

startingfromcolumnswith heights ?

2. Guess: howtoplacepiece3. Recurrence:

Page 27: Lecture 20: Dynamic Programming III - courses.csail.mit.edu · 2011-04-21 · Lecture 20: Dynamic Programming III Prof. Erik Demaine. Today • Dynamic programming review ... polynomial‐time

What’sNext?• Dynamicprogrammingovercombinatorialstructuresotherthanarrays

• Moreexamplesofthepowerofguessing