Marco Thomas - IOI 99 -. Treffen n Bonn - Dynamsches Programmeren - Unverstät Potsdam - 8.02.999 Dynamsches Programmeren 957 R. Bellmann: Dynamc Programmng für math. Optmerungsprobleme Methode für Probleme,. de rekursv beschrebbar snd, 2. de dem Optmaltätsprnzp genügen, d. h. ene optmale Lösung für das Ausgangsproblem setzt sch aus optmalen Lösungen für de kleneren Probleme, auf de rekurrert wrd, zusammen, und 3. deren Berechnung mehrfach gleche Tellösungen benötgt
Marco Thomas - IOI 99 -. Treffen n Bonn - Dynamsches Programmeren - Unverstät Potsdam - 8.02.999 2 Fbonacc-Zahlen. Rekursve Beschrebung des Problems: f(n- ) + f( ) f( 2 ) f(n) f(n-2 ), falls n > 3 f(n-) f(n) + f(n-2) f(3) Komplextät: O( 2 n ) f(3) f(2) f() Idee! Spare möglchst vele Mehrfach-Berechnungen f(2) f() 2. Bestmme de Menge R der kleneren Probleme, auf de be Lösung enes Problems P (drekt oder ndrekt) rekurert wrd: her: für das Problem n ergbt sch R {,..., n-} 3. Bestmme ene mt der Aufrufrehenfolge kompatble Rehenfolge P,..., P r der Probleme n R, so dass be der Lösung von Problemen P x, x r, nur auf Probleme P y mt Index y klener als x rekurrert wrd. her: Rehenfolge, 2,..., n- 4. Sukzessves Berechnen und Spechern von Lösungen für P,..., P r n deser Rehenfolge (wobe berechnete Lösungen solange gespechert bleben, we se noch benötgt werden). f() 2 3 f(2)+f()2 4 f(3)+f(2)3 > O(n) Anm.: Aus der Tabelle st erschtlch, dass nur zwe Hlfsvarablen benötgt werden.
Marco Thomas - IOI 99 -. Treffen n Bonn - Dynamsches Programmeren - Unverstät Potsdam - 8.02.999 3 Gegeben: Rucksackproblem (Optmerungsproblem) n Gegenstände mt enem Wert w und enem Gewcht g Rucksack, der maxmal das Gewcht G fassen kann (n, w, g, G aus ) Gesucht: Füllung des Rucksacks mt maxmalem Wert. Rekursve Beschrebung des Problems: p(n,g) max p(n-,g) p(n-, G-g n ) p(n-2,g) p(n-2,g-g n- ) p(n-2, G-g n ) p(n-2, G-g n -g n- ) p(0,g)... p(0,0) p(0, g) 0 max p(, g) p(, g) ( p(, g), p(, g g ) + w ) wenn sonst g g 0 Mt p(,g) : max. Wert für de Fassungskapaztät g unter Berückschtgung der ersten Gegenstände > O(2 n ), aber: es gbt nur n*g verschedene Telprobleme! 2. Menge R der kleneren Probleme, auf de rekurert wrd: her: R {(0,0),..., (n-,0), (,0),...,..., (n-, G), (n, 0),..., (n, G-)} 3. Aufrufrehenfolge der Probleme n R her: für 0,,..., n: für g,..., G!! (n,g) wrd zuletzt berechnet
Marco Thomas - IOI 99 -. Treffen n Bonn - Dynamsches Programmeren - Unverstät Potsdam - 8.02.999 4 4a. Sukzessves Berechnen und Spechern von Lösungen n deser Rehenfolge Bsp. p(4,7) mt 2 3 4 g 3 4 6 w 3 2 2 p(,g) g 0 2 3 4 5 6 7 0 0 0 0 0 0 0 0 0 0 2 0 3 4 4 4 4 3 0 3 4 4 4 5 4 0 3 4 4 4 5. 2. > O(n*G) 4b. Konstrukton des "Weges" von p(0,0) nach p(n,g) falls p(-,g) p(,g) Gegenstand st ncht n der Lösung, be p(-,g) fortfahren sonst Gegenstand st n der Lösung, be p(-,g-g ) fortfahren Anm. Der Index wrd so gewählt, dass de g aufstegend sortert snd.
Marco Thomas - IOI 99 -. Treffen n Bonn - Dynamsches Programmeren - Unverstät Potsdam - 8.02.999 5 Matrxmultplkaton Gegeben: n Matrzen M,..., M n mt den Dmensonen p 0 p, p p 2,..., p n- p n Gesucht: We muss M... M n geklammert werden, so dass de Anzahl der erforderlchen Multplkatonen mnmal st (Beschränkung auf de Ausgabe der Anzahl der erforderlchen Multplkatonen)?. Rekursve Beschrebung des Problems: Matrx hat de Dmenson p - p m(,j) : mnmale Anzahl an Multplkatonen für de Matrzen bs j ( j) m(,n) mn k m(,k) m(k+, n) m(, 2) m(2, 3)... m(n-, n) m(, j) mn( m(, k) + m( k p p p+ +, j) + p pk p < k < j 2) falls j > sonst + 2. Menge R der kleneren Probleme R {(,j) j- < n- } 3. Aufrufrehenfolge for abstand : to n-: for : to n-abstand j:+abstand 4. Sukzessve Berechnung und Specherung der Lösungen m(,j) j 2 3 4 Anm. - das jewelge k für m(,j) wrd durch Proberen ermttelt 2 - - < k < j 3 - - - 4 - - - - > O(n 2 )
Marco Thomas - IOI 99 -. Treffen n Bonn - Dynamsches Programmeren - Unverstät Potsdam - 8.02.999 6 Wetere Bespele Longest Common Subsequence Problem Gegeben: Zwe Folgen X und Y Gesucht: De längste Telfolge, de ncht notwendgerwese zusammenhängend n beden Folgen enthalten st. Edterdstanz Gegeben: zwe Zechenketten u, v mt den Operatonen Löschen enes Symbols aus ener Zechenkette Enfügen enes Symbols n ene Zechenkette Ersetzen enes Symbols n ener Zechenkette Gesucht: Edtersequenz s mt mnmaler Edterdstanz D(u,v) mnmale Anzahl der obgen Operatonen um de obge Zechenkette u n de Zechenkette v zu überführen Wettbewerbsaufgaben IOI95: Shop-Aufgabe BWInf 3..3: Rätselecke BWInf 5.2.3: Ähnlchket von Zechenketten
Marco Thomas - IOI 99 -. Treffen n Bonn - Dynamsches Programmeren - Unverstät Potsdam - 8.02.999 7 Dynamsche Programmerung m Verglech zu Tele-und-Herrsche Gemensamket: Lösen enes Problems durch separates Lösen klenerer Telprobleme Untersched: be Tele-und-Herrsche snd de Telproblem typscherwese nur halb so groß we das Ausgangsproblem > typsche Laufzet O(n*log(n)) des glt be Dynamscher Programmerung ncht, daher müssen Mehrfachberechnungen vermeden werden.