Dynami mic ¡ ¡Programmi mming Jeevani ¡Goone*llake ¡ University ¡of ¡Colombo ¡School ¡of ¡Compu*ng ¡ Sri ¡Lanka ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Dynami mic ¡ ¡Programmi mming • Dynamic ¡ Programming, ¡ like ¡ the ¡ divide-‑and-‑conquer ¡ approach ¡ method, ¡ solves ¡ problems ¡ by ¡ combining ¡ the ¡ solu*ons ¡to ¡sub-‑problems. ¡ • In ¡Divide ¡and ¡Conquer, ¡the ¡sub-‑problems ¡are ¡independent ¡ of ¡each ¡other ¡ • In ¡contrast, ¡dynamic ¡programming ¡is ¡applicable ¡ when ¡the ¡ sub ¡ problems ¡ are ¡ overlapping . ¡ That ¡ is ¡ when ¡ solu*on ¡ of ¡ one ¡sub-‑problem ¡may ¡be ¡required ¡to ¡solve ¡another ¡sub-‑ problem. ¡ ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Dynami mic ¡ ¡Programmi mming Dynamic ¡Programming ¡(shortened ¡as ¡DP) ¡ ¡ • ¡A ¡programming ¡technique ¡ ¡ • ¡Can ¡drama*cally ¡reduce ¡the ¡run*me ¡of ¡some ¡algorithms ¡ (but ¡ not ¡ all ¡ problem ¡ has ¡ DP ¡ characteris*cs) ¡ from ¡ ¡ exponen*al ¡to ¡polynomial. ¡ ¡ ¡ ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Dynami mic ¡ ¡Programmi mming ¡ ¡(DP) • Dynamic ¡ Programming ¡ algorithm ¡ solves ¡ every ¡ sub ¡ sub-‑ problem ¡just ¡once ¡and ¡saves ¡its ¡answer ¡in ¡a ¡table. ¡ ¡ ¡ • This ¡ avoids ¡ the ¡ work ¡ of ¡ re-‑compu*ng ¡ the ¡ answer ¡ every ¡ *me ¡ ¡the ¡sub ¡sub-‑problem ¡is ¡encountered. ¡ ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Eleme ments ¡ ¡of ¡ ¡DP • Op#mal ¡ substructure : ¡ Dynamic ¡ Programming ¡ typically ¡ applied ¡to ¡ op#miza#on ¡problems . ¡ ¡ ¡ • In ¡such ¡problems ¡there ¡can ¡be ¡many ¡possible ¡solu*ons. ¡ ¡ • Each ¡solu*on ¡has ¡a ¡value ¡and ¡we ¡wish ¡to ¡find ¡a ¡solu*on ¡ with ¡the ¡op*mal ¡value. ¡ ¡ ¡ ¡ ¡ ¡In ¡DP ¡we ¡build ¡an ¡op*mal ¡solu*on ¡to ¡the ¡problem ¡from ¡ op*mal ¡ ¡ ¡solu*ons ¡to ¡sub-‑problems. ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Eleme ments ¡ ¡of ¡ ¡DP • Overlapping ¡ sub-‑problems : ¡ A ¡ recursive ¡ algorithm ¡ for ¡ the ¡ problem ¡ solves ¡ the ¡ same ¡ sub-‑problems ¡ over ¡ and ¡ over, ¡ rather ¡ than ¡always ¡genera*ng ¡new ¡sub-‑problems. ¡ ¡ • DP ¡algorithms ¡take ¡advantage ¡of ¡overlapping ¡sub-‑problems ¡by ¡ ¡-‑ ¡ ¡solving ¡each ¡sub-‑problem ¡once ¡and ¡ ¡ -‑ storing ¡the ¡solu*on ¡in ¡a ¡table ¡where ¡it ¡can ¡be ¡looked ¡ ¡ ¡ ¡ ¡up ¡when ¡needed, ¡using ¡constant ¡*me ¡per ¡look ¡up. ¡ ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Dynami mic ¡ ¡Programmi mming ¡ ¡ ¡ ¡ ¡Applica*ons: ¡ ¡ ¡ • Compu*ng ¡combina*ons ¡ ¡ • Assembly-‑line ¡scheduling ¡ • Matrix-‑chain ¡mul*plica*on ¡ • Longest ¡Common ¡Subsequence ¡ • …………………………………. ¡ ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Fi Fibonacci ¡ ¡Numb mbers • Consider ¡the ¡algorithm ¡for ¡calcula*ng ¡Fibonacci ¡numbers: ¡ ¡ ¡ ¡ int ¡fib( ¡int ¡n ¡) ¡{ ¡ ¡ ¡ ¡ ¡if ¡( ¡n ¡< ¡2 ¡) ¡return ¡n; ¡ ¡ ¡ ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡fib(n-‑1) ¡+ ¡fib(n-‑2); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ What ¡about ¡the ¡running ¡4me ¡of ¡this ¡algorithm? ¡ ¡ ¡ ¡ ¡ ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Fi Fibonacci ¡ ¡Numb mbers • Consider ¡the ¡algorithm ¡for ¡calcula*ng ¡Fibonacci ¡numbers: ¡ ¡ ¡ ¡ int ¡fib( ¡int ¡n ¡) ¡{ ¡ ¡ ¡ ¡ ¡if ¡( ¡n ¡< ¡2 ¡) ¡return ¡n; ¡ ¡ ¡ ¡ ¡ ¡ ¡else ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡return ¡fib(n-‑1) ¡+ ¡fib(n-‑2); ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡} ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡O(fn) ¡= ¡ O (1.6 n ) ¡ ¡ ¡ • So ¡this ¡simple ¡func*on ¡will ¡take ¡exponen*al ¡*me! ¡WHY? ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Fi Fibonacci ¡ ¡Numb mbers For ¡ example, ¡ the ¡ problem ¡ of ¡ compu*ng ¡ the ¡ Fibonacci ¡ sequence ¡ exhibits ¡overlapping ¡sub-‑problems. ¡ ¡ fib(5) ¡ fib(4) ¡ fib(3) ¡ fib(2) ¡ fib(3) ¡ fib(1) ¡ fib(2) ¡ fib(2) ¡ fib(1) ¡ fib(1) ¡ fib(0) ¡ fib(1) ¡ fib(0) ¡ fib(1) ¡ fib(0) ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Dynami ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ mic ¡ ¡Programmi mming ¡ ¡Techniques ¡? ¡ ¡? ¡ Memoization Iterative Dynamic Programming Filling a table recursively “by need”. (Filling a table “from one corner”) Memoization of results of earlier calls avoids exponential blow-up. ¡ Obtained ¡from ¡Frank ¡Drew’s ¡slides ¡on ¡Dynamic ¡Programming ¡ Jeevani ¡Goone*llake ¡(University ¡of ¡Colombo ¡-‑ ¡Sri ¡Lanka) ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ Lecture ¡6 ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡
Recommend
More recommend