8. Dynamsches Programmeren Dynamsche Programmerung we gerge Algorthmen ene Algorthmenmethode, um Optmerungsprobleme zu lösen. We Dvde&Conquer berechnet Dynamsche Programmerung Lösung enes Problems aus Lösungen zu Telproblemen. Lösungen zu Telproblemen werden ncht rekursv gelöst. Lösungen zu Telproblemen werden teratv begnnend mt den Lösungen der klensten Telprobleme berechnet (bottom-up). Datenstrukturen und Algorthmen 8. Dynamsches Programmeren
Dynamsches Programmeren (2) Wrd häufg angewandt, wenn rekursver Ansatz Lösungen zu mmer weder denselben Telproblemen lösen wrd. Lernen dre Bespele kennen: Längste gemensame Telfolge, optmale Suchbäume, Rucksackproblem. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 2
Längste gemensame Telfolge () Seen X ( x, K,x ) und Y = ( y, K, ) = m yn zwe Telfolgen, wobe x,y A für en endlches Alphabet A. Dann hesst Y Telfolge von X, wenn es aufstegend sorterte Indzes, K, gbt mt x = y für =, K, n. n Bespel: Y=(B,C,A,C) st Telfolge von,,, X=(A,B,A,C,A,B,C). Wähle ( ) ( 2,4,5,7 ). 2 3 4 = Snd X,Y,Z Folgen über A, so hesst Z gemensame Telfolge von X und Y, wenn Z Telfolge sowohl von X als auch von Y st. Bespel: Z=(B,C,A,C) st gemensame Telfolge von X=(A,B,A,C,A,B,C) und Y=(B,A,C,C,A,B,B,C). Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 3
Längste gemensame Telfolge (2) Z hesst längste gemensame Telfolge von X und Y, wenn Z gemensame Telfolge von X und Y st und es kene andere gemensame Telfolge von X und Y gbt, de größere Länge als Z bestzt. Bespel: Z=(B,C,A,C) st ncht längste gemensame Telfolge von X=(A,B,A,C,A,B,C) und Y=(B,A,C,C,A,B,B,C). Denn (B,A,C,A,C) st ene längere gemensame Telfolge von X und Y. Bem Problem Längste-Gemensame-Telfolge (LCS) snd als Engabe zwe Telfolgen X = ( x, K,xm ) und Y = ( y, K, yn ) gegeben. Gesucht st dann ene längste gemensame Telfolge von X und Y. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 4
Bespel längste gemensame Telfolge Folge X A B C B D A B Folge Y B D C A B A Folge X A B C B D A B Folge Y B D C A B A Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 5
Struktur von LCS = K m ene belebge Folge. Für = 0,, K,m st der -te Präfx von X defnert als X = ( x, K, x ). Der -te Präfx von besteht also aus den ersten Symbolen von X. Der 0-te Präfx st de leere Folge. Defnton 8.: Se X ( x,,x ) Satz 8.2: Seen X ( x, K,xm ) und Y = ( y, K, yn ) Folgen und se Z ( z, K, ) = belebge = z k ene längste gemensame Telfolge von X und Y. Dann glt. Ist x m = yn, dann st z k = xm = yn und Zk st ene längste gemensame Telfolge von Xm und Yn. 2. Ist xm yn und zk xm, dann st Z ene längste gemensame Telfolge von X m und Y. 3. Ist xm yn und zk yn, dann st Z ene längste gemensame Telfolge von X und Y. n Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 6
Rekurson für Länge von LCS Lemma 8.3: Se [, ] c de Länge ener längsten gemensamen Telfolge des -ten Präfx X von X und des -ten Präfx Y von Y. Dann glt: c [, ] = c[, ] +, max{ c[, ],c[, ] } 0,, falls = 0 oder falls, > 0 und x falls, > 0 und x = 0 = y y. [ ] Beobachtung: Rekursve Berechnung der c, würde zu Berechnung mmer weder derselben Werte führen. Deses st neffzent. Berechnen daher de Werte c[, ] teratv, nämlch zelenwese. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 7
Berechnung der Werte c[,] ( X,Y) ( X) ( Y) LCS Length m length 2 n length 3 for 0 to m 4 do c[,0] 0 5 for 0 to n 6 do c[ 0, ] 0 7 for to m 8 do for to n 9 do f x = y 0 then c b, 2 else f 3 4 5 6 7 return b,c [, ] c[, ] + [ " " c[ -, ] c[, ] then c[, ] c[, ] b[, ] " " else c[, ] c[, ] b[, " " [ ] b, spechert Informatonen zur späteren Berechnung ener längsten gemensamen Telfolge. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 8
Bespeltabellen c[,] und b[,] 0 2 3 4 5 6 y B D C A B A 0 x 0 0 0 0 0 0 0 A 2 B 3 C 4 B 5 D 6 A 7 B 0 0 0 0 0 2 2 0 2 2 2 2 0 2 2 3 3 0 2 2 2 3 3 0 2 2 3 3 4 0 2 2 3 4 4 Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 9
Berechnung von LCS aus c und b ( ) Prnt - LCS b,x,, f = 0 = 0 2 then return 3 f b[, ] = " " 4 then Prnt - LCS b,x, 5 prnt x 6 else f b[, ] = " " 7 then Prnt - LCS b,x, 8 else Prnt - LCS b,x,, ( -, -) ( -, ) ( -) Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 0
Laufzet von LCS-Length und LCS-Prnt Lemma 8.4: Algorthmus LCS-Length hat Laufzet O(nm), wenn de Folgen X,Y Länge n und m haben. Lemma 8.5: Algorthmus LCS-Prnt hat Laufzet O(n+m), wenn de Folgen X,Y Länge n und m haben. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren
Berechnung von LCS aus c,b - Illustraton 0 2 3 4 5 6 y B D C A B A 0 x 0 0 0 0 0 0 0 A 2 B 3 C 4 B 5 D 6 A 7 B 0 0 0 0 0 2 2 0 2 2 2 2 0 2 2 3 3 0 2 2 2 3 3 0 2 2 3 3 4 0 2 2 3 4 4 Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 2
Dynamsches Programmeren - Struktur. Bestmme rekursve Struktur ener optmalen Lösung. 2. Entwerfe rekursve Methode zur Bestmmung des Werts ener optmalen Lösung. 3. Transformere rekursv Methode n ene teratve (bottom-up) Methode zur Bestmmung des Werts ener optmalen Lösung. 4. Bestmmen aus dem Wert ener optmalen Lösung und n 3. ebenfalls berechneten Zusatznformatonen ene optmale Lösung. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 3
Optmale bnäre Suchbäume () Gegeben st Folge K ( k, K, ) k < = k n mt k < kn, K,pn; q0,q, K,qn mt sowe Werte p 0 < L, Bedeutung der p, q : Nach Schlüssel k wrd mt Wahrschenlchket p gesucht. Nach enem ncht, k wrd mt Wahrschenlchket q gesucht. Dabe se k und =. k + exsterenden Schlüssel m offenen Intervall ( ) 0 = k n + Repräsenteren ncht exsterende Schlüssel m k, + durch dummy Schlüssel, = 0,, K, n. Intervall ( ) k n = n + p q =. = 0 d Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 4
Optmale bnäre Suchbäume (2) Gesucht st bnärer Suchbaum Aufwand pro Suche mnmert. n [ ] = ( depth ( k ) + ) p + ( depth ( d ) + ) E Suchaufwand = T, der erwarteten Hat k oder d Tefe t m Suchbaum T, so st der Aufwand für ene Suche nach k bzw. d genau t+. depth ( ) ( ) Se T k, depth T d Tefe von Schlüssel k bzw. n enem Suchbaum T. Dann st erwarteter Aufwand ener Suche n T gegeben durch T n = 0 T d q = + n = depth T n ( k ) p + deptht ( d ) = 0 q Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 5
Nützlche Verallgemenerung Verlangen ncht mehr, dass de Werte p, K,p ; q,q, K,q 0 ene Wahrschenlchketsver- n 0 n telung blden. Erlauben also p q. n = n + Wollen aber weterhn Suchbaum für de Schlüssel k, K,, so dass de Summe k n n = mnmert wrd. Nennen dese Summe trotzdem erwarteten Suchaufwand. = 0 ( deptht ( k ) + ) p + ( deptht ( d ) + ) n = 0 q Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 6
Erwarteter Suchaufwand Bespele () 0 2 3 4 5 p 0,5 0,0 0,05 0,0 0,20 q 0,05 0,0 0,05 0,05 0,05 0,0 k 2 k k 4 d0 d k3 k5 d2 d3 d d 4 5 Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 7
Erwarteter Suchaufwand Bespele (2) Knoten k k 2 k 3 k 4 k 5 d 0 d d 2 d 3 d 4 d 5 Tefe 0 2 2 2 2 3 3 3 3 Wahrschenlchket 0,5 0,0 0,05 0,0 0,20 0,05 0,0 0,05 0,05 0,05 0,0 Betrag 0,30 0,0 0,5 0,20 0,60 0,5 0,30 0,20 0,20 0,20 0,40 Erwarteter Suchaufwand: 2,80 Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 8
Erwarteter Suchaufwand Bespele (3) 0 2 3 4 5 p 0,5 0,0 0,05 0,0 0,20 q 0,05 0,0 0,05 0,05 0,05 0,0 k 2 Erwarteter Suchaufwand: 2,75 k k 5 d0 d k 4 d 5 k 3 d 4 d d 2 3 Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 9
Struktur optmaler Lösung Satz 8.5: Se T en optmaler Suchbaum für de Schlüsselfolge K = ( k, K, k n ) mt Wahrschenlchketen p, K,pn; q0,q, K, qn. Enthält T den Telbaum T mt den Schlüsseln k, K, k, dann st T n optmaler Suchbaum für de Schlüssel k, K, k. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 20
Se [, ] Rekursve optmale Lösung () e der erwartete Suchaufwand für enen optmalen Suchbaum mt Schlüsseln k, K, k. Ist k r Wurzel enes optmalen Suchbaums für de Schlüssel k, K, k, so glt [, ] = p + e[,r ] + w[,r ] + e[ r +, ] + w[ r, ]. e r + Dabe st [, ] : = + w p k q. k= k= k Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 2
Rekursve optmale Lösung (2) Es glt : [ ] = p + w[,r ] + w[ r +, ] w, [ ] = p + q + w[, ]. w, Damt dann r [, ] = e[,r ] + e[ r +, ] w[, ]. e + Schleßlch folgt [ ] e, = mn r q, { e[,r ] + e[ r +, ] + w[, ] }, falls falls = -. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 22
Berechnung der Werte e[,] ( p,q,n) Optmal BST for to n + 2 do e[, -] q 3 w[, -] q 4 for l to n 5 do for to n - l + 6 do + l 7 e, 8 w, 9 for r to 0 do t e,r f t < 2 then 3 4 return e, root [ ] [ ] w[, ] + p [ ] root, spechert Informatonen zur späteren Berechnung enes optmalen Suchbaums + q [ ] + e[ r +, ] + w[, ] e[, ] e [, ][ t root, ] r Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 23
Laufzet von Optmal-BST Satz 8.7: Optmal-BST hat be ener Folge von n 3 Schlüsseln Laufzet O n. ( ) Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 24
Bespel für Optmal-BST 0 2 3 4 5 p 0,5 0,0 0,05 0,0 0,20 q 0,05 0,0 0,05 0,05 0,05 0,0 e w 5 5 4 2,75 2 4,00 2,75 2,00 3 3 3 0,70 0,80 3,25,20,30 2 4 2 0,55 0,50 0,60 4 0,90 0,70 0,60 0,90 5 0,45 0,35 0,30 0,50 5 0 0,45 0,40 0,25 0,30 0,50 0,30 0,25 0,5 0,20 0,35 6 0 0,05 0,0 0,05 0,05 0,05 0,0 0,05 0,0 0,05 0,05 0,05 0,0 6 root 5 4 2 2 3 2 4 3 2 2 2 5 4 2 4 5 2 3 4 5 5 Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 25
Dynamsches Programmeren - Struktur. Bestmme rekursve Struktur ener optmalen Lösung. 2. Entwerfe rekursve Methode zur Bestmmung des Werts ener optmalen Lösung. 3. Transformere rekursv Methode n ene teratve (bottom-up) Methode zur Bestmmung des Werts ener optmalen Lösung. 4. Bestmmen aus dem Wert ener optmalen Lösung und n 3. ebenfalls berechneten Zusatznformatonen ene optmale Lösung. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 26
0/-Rucksackproblem und dynamsches Programmeren Gegeben snd n Gegenstände g, K, g n mt Werten v, K, v n und Gewchten w, K, wn. Außerdem st ene Gewchtsschranke G gegeben. Zulässge Lösungen snd Zahlen a, K,a 0, mt D.h. eder Gegenstand muss entweder vollständg oder überhaupt ncht genommen werden. Gesucht st ene zulässge Lösung mt möglchst großem Gesamtwert n = a w G. n = a v n. { } Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 27
Struktur ener optmalen Lösung Defneren für =,,n und Z den Wert g, x als das mnmale Gesamtgewcht ener Telmenge der ersten Gegenstände mt Gesamtwert mndestens x. x [ ] Lemma 8.8: Der optmale Wert opt für ene Instanz des 0/-Rucksackproblems st gegeben durch max { x : g[ n, x] G} Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 28
Rekursve optmale Lösung Lemma 8.9: Für alle =0,,n und alle ganzzahlgen x glt: g[, x] : = mn 0,, { g[, x], w + g[, x v ]}, falls x 0 falls x > 0, = falls, x > 0 0 Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 29
Berechnung der Werte g[,v] bs zum Optmum Optmal Knapsack 2 3 4 5 6 7 x 0 for 0 to n whle [ ] [ ] do g,x g n,x 0 G do x x + g 0,x [ ] 8 do g,x 9 f 0 return x - ( w, v, G) for to n [ ] g[, x] w + g[,max{x - v,0} ] < g[,x] then g[,x] w + g[,max{x - v,0}] Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 30
Bespel für Optmal-Knapsack v w 2 2 2 3 3 4 3 x 0 2 3 4 5 6 0 0 0 2 2 0 2 3 5 3 0 3 4 6 4 0 2 4 5 Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 3
Laufzet von Optmal-Knapsack Lemma 8.9: Be n Gegenständen hat Optmal-Knapsack Laufzet O ( n opt), wobe opt der Wert ener optmalen Lösung st. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 32
Dynamsches Programmeren - Struktur. Bestmme rekursve Struktur ener optmalen Lösung. 2. Entwerfe rekursve Methode zur Bestmmung des Werts ener optmalen Lösung. 3. Transformere rekursv Methode n ene teratve (bottom-up) Methode zur Bestmmung des Werts ener optmalen Lösung. 4. Bestmmen aus dem Wert ener optmalen Lösung und n 3. ebenfalls berechneten Zusatznformatonen ene optmale Lösung. Datenstrukturen und Algorthmen 8. Dynamsches Programmeren 33