lausthal Iformatik II Dyamische Programmierug. Zachma lausthal Uiversity, ermay zach@i.tu-clausthal.de Zweite Techik für de Algorithmeetwurf Zum Name: "Dyamische " hat ichts mit "Dyamik" zu tu, soder mit Tabulierug " Programmierug" hat ichts mit "Programmiere" zu tu, soder mit "Verfahre" Vergleiche "lieares Programmiere", "Iteger-Programmiere" (alles Begriffe aus der Optimierugstheorie) Typische Awedug für dyamisches Programmiere: Optimierug. Zachma Iformatik 2 SS Dyamische Programmierug 2
Matrix hai Multiplicatio Problem (MMP) egebe: eie Folge (Kette) A, A 2,, A vo Matrize mit verschiedee Dimesioe esucht: das Produkt A. A. 2. A Aufgabe: Orgaisiere die Multiplikatioe so, daß möglichst weig skalare Multiplikatioe ausgeführt werde. eerelle Idee hier: utze Assoziativität aus. Defiitio: Ei Matrizeprodukt heißt vollstädig geklammert, we es etweder eie eizele Matrix oder das geklammerte Produkt zweier vollstädig geklammerter Matrizeprodukte ist.. Zachma Iformatik 2 SS Dyamische Programmierug Multiplikatio zweier Matrize p A q q B r = r p # Eigabe: p q Matrix A, q r Matrix B # Ausgabe: p r Matrix = A B for i i rage(,p ): for j i rage(,r ): [i,j] = for k i rage(,q ): [i,j] += A[i,k] * B[k,j] Azahl der Muliplikatioe ud Additioe = p q r Bem: für 2 -Matrize werde hier Multiplikatioe beötigt, es geht auch mit O( 2.78 ). Zachma Iformatik 2 SS Dyamische Programmierug 4 2
Beispiel Berechug des Produkts vo A, A 2, A mit A : Matrix A 2 : 5 Matrix A : 5 5 Matrix. Klammerug ((A A 2 )A ) erfordert 2. Klammerug (A (A 2 A )) erfordert A' = (A A 2 ) 5 Mult. A' A 25 Mult. A'' = (A 2A ) 25 Mult. A A'' 5 Mult. Summe: 75 Mult. Summe: 75 Mult.. Zachma Iformatik 2 SS Dyamische Programmierug 5 Problemstellug egebe: Folge vo Matrize A, A 2,, A ud die Dimesioe p, p,, p, wobei Matrix A i Dimesio p i- p i hat esucht: eie Multiplikatiosreihefolge, die die Azahl der Multiplikatioe miimiert Beachte: der Algorithmus führt die Multiplikatioe icht aus, er bestimmt ur die optimale Reihefolge! Verallgemeierug: ermittle die optimale Ausführugsreihefolge für eie Mege vo Operatioe Z.B. im ompilerbau: ode-optimierug Bei Datebake: Afrageoptimierug. Zachma Iformatik 2 SS Dyamische Programmierug 6
Beispiel für A A 2 A Alle vollstädig geklammerte Matrizeprodukte der Folge A, A 2, A, A 4 sid: Klammeruge etspreche strukturell verschiedee Auswertugsbäume: A A 4 A A 4 etc A A 2 A A 4 A A 2 A A 4 A 4 A 2 A A 4 A 4 A 2 A A A 2 A A 4 A A A 4 A 2 A A A 2. Zachma Iformatik 2 SS Dyamische Programmierug 7 Azahl der verschiedee Klammeruge P() sei die Azahl der verschiedee Klammeruge vo A A k A k + A : Defiitio: P( +)=: = -te atala'sche Zahl Es gilt (o. Bew.): P( +)= 2 4 4 + π + O 5 Folge: Fide der optimale Klammerug durch Ausprobiere aller Möglichkeite ist silos. Zachma Iformatik 2 SS Dyamische Programmierug 8 4
Die Struktur der optimale Klammerug Sei A i j das Produkt der Matrize i bis j; A i j ist eie p i- p j -Matrix Behauptug: Jede optimale Lösug des MMP ethält optimale Lösuge vo Teilprobleme Aders gesagt: Jede optimale Lösug des MMP setzt sich zusamme aus optimale Lösuge vo bestimmte Teilprobleme. Zachma Iformatik 2 SS Dyamische Programmierug 9 Beweis (durch Widerspruch) Sei eie optimale Lösug so geklammert A i j = (A i k ) (A k+ j ), i k < j Behauptug: die Klammerug ierhalb A i k muß ihrerseits optimal sei A.: die Klammerug vo A i k ierhalb der optimale Lösug zu A i j sei icht optimal Es gibt bessere Klammerug vo A i k mit gerigere Koste Setze diese Teillösug i Lösug zu A i j = (A i k ) (A k+ j ) ei Ergibt eie bessere Lösug Widerspruch zur Aahme der Optimalität der ursprügliche Lösug zu A i j. Zachma Iformatik 2 SS Dyamische Programmierug 5
Eie rekursive Lösug Auf der höchste Stufe werde 2 Matrize multipliziert, d.h., für jedes k, k -, ist (A ) = ((A k ) (A k+ )) Die optimale Koste köe beschriebe werde als i = j Folge ethält ur eie Matrix, keie Koste i < j ka geteilt werde, idem jedes k, i k < j betrachtet wird: Koste für ei bestimmtes k = "Koste liks" + "Koste rechts" Koste für die Matrix-Multiplikatio (A i k ). (A k+ j ) Daraus lässt sich die folgede rekursive Regel ableite: m[i,j] sei die miimale Azahl vo Operatioe zur Berechug des Teilprodukts A i j. Zachma Iformatik 2 SS Dyamische Programmierug Ei aiver rekursiver Algorithmus # Iput p = Vektor der Array-röße # Output m[i,j] = optimale Koste für die # Multiplikatio der Arrays i,.., j def mcm_rek( p, i, j ): if i = j: retur m = for k i rage( i,j ): q = p[i-]*p[k]*p[j] + \ mcm_rek( p, i, k ) + \ mcm_rek( p, k+, j ) if q < m: m = q retur m Aufruf für das gesamte Problem: mcm_rek( p,, ). Zachma Iformatik 2 SS Dyamische Programmierug 2 6
Laufzeit des aive rekursive Algorithmus Sei T() die Azahl der Schritte zur Berechug vo mcm_rek für Eigabefolge der Läge Expoetielle Laufzeit!. Zachma Iformatik 2 SS Dyamische Programmierug Formulierug mittels Dyamischer Programmierug Beobachtug: die Azahl der Teilprobleme A i j (+) mit i j ist ur Θ 2 2 Folgerug: der aive rekursive Algo berechet viele Teilprobleme mehrfach! Idee: Bottom-up-Berechug der optimale Lösug: Speichere Teillösuge i eier Tabelle j i Daher "dyamische Programmierug" Welche Tabelleeiträge werde für m[i,j] beötigt? Hier: bottom-up = vo der Diagoale ach "rechts obe". Zachma Iformatik 2 SS Dyamische Programmierug 4 7
Berechugsbeispiel A : 5 A 2 : 5 5 A : 5 5 A 4 : 5 A 5 : 2 A 6 : 2 25 p = (, 5, 5, 5,, 2, 25) j 2 4 5 6 575 7875 975 2625 475 2 75 2 i m 5 5 4 5 6. Zachma Iformatik 2 SS Dyamische Programmierug 5 ewiug der optimale Reihefolge Speichere die Positio für die beste Treug, d.h., dejeige Wert k, der zum miimale Wert vo m[i,j] führt Speichere dazu i eiem zweite Array s[i,j] dieses optimale k: s[i,j] wird ur für Folge mit midestes 2 Matrize ud j > i beötigt m s s[i,j] gibt a, welche Multiplikatio zuletzt ausgeführt werde soll Für s[i,j] = k ud die Teilfolge A i j ist es optimal, zuerst A i k, daach A k+ j ud zum Schluss die beide Teilergebisse zu multipliziere:. Zachma Iformatik 2 SS Dyamische Programmierug 6 8
Algorithmus mittels dyamischer Programmierug = le(p) - for i i rage(, + ): # assume m has dim (+). (+) m[i,i] = for L i rage( 2,+ ): # cosider chais of legth L for i i rage(,-l ): j = i+l- # le = L j-i = L- m[i,j] = for k i rage( i,j ): q = m[i,k] + m[k+,j] + p[i-]*p[k]*p[j] if q < m[i,j]: m[i,j] = q s[i,j] = k Komplexität: es gibt geschachtelte Schleife, die jeweils höchstes -mal durchlaufe werde, die Laufzeit beträgt also O( ). Zachma Iformatik 2 SS Dyamische Programmierug 7 Beispiel egebe: die Folge vo Dimesioe (5, 4, 6, 2, 7) Multiplikatio vo A (5 4), A 2 (4 6), A (6 2) ud A 4 (2 7) Optimale Folge ist ((A (A 2 A ))A 4 ) j 2 4 j 2 4 5 2 88 58 A 4 A 2 6 48 4 84 2 i s[i,j] 2 2 i 2 m[i,j] A 2 A 4 7 4 A A 2 A 2 A 2 optimale Folge. Zachma Iformatik 2 SS Dyamische Programmierug 8 9
Die Techik der dyamische Programmierug Rekursiver Asatz: Löse eies Problems durch Löse mehrerer kleierer Teilprobleme, aus dee sich die Lösug für das Ausgagsproblem zusammesetzt Häufiger Effekt: Mehrfachberechuge vo Lösuge Bottom-up-Berechug: fügt Lösuge kleierer Uterprobleme zusamme, um größere Uterprobleme zu löse ud liefert so eie Lösug für das gesamte Problem Methode: iterative Erstellug eier Tabelle. Zachma Iformatik 2 SS Dyamische Programmierug 9 Wichtige Begriffe Optimale Uterstruktur (optimal substructure): Ei Problem besitzt die (Eigeschaft der) optimale Substruktur, bzw. gehorcht dem Prizip der Optimalität : :. Die Lösug eies Problems setzt sich aus de Lösuge vo Teilprobleme zusamme - Bsp. MMP: gesuchte Klammerug vo A A setzt sich zusamme aus der Klammerug eier (bestimmte) Teilkette A A k ud eier Teilkette A k+ A 2. We die Lösug optimal ist, da müsse auch die Teillösuge optimal sei! - Bsp. MMP: wir habe folgede Behauptug bewiese: Falls Klammerug zu A A k icht optimal Klammerug zu A A (die gemäß A. Teillsg zu A A k ethält) ka icht optimal sei. Zachma Iformatik 2 SS Dyamische Programmierug 2
Achtug: die zweite Bedigug (Teillösuge müsse optimal sei) ist machmal icht erfüllt: Beispiel: lägster Pfad durch eie raphe a b Aufgabe hier: bestimme lägste Pfad vo a ach c d c Im Beispiel rechts: Lösug besteht aus Teilpfade a b ud b c Aber diese sid icht optimale(!) Lösuge der etspr. Teilprobleme - Optimale (d.h., lägste) Lösug für a b = a d c b. Zachma Iformatik 2 SS Dyamische Programmierug 2 Uabhägigkeit der Teillösuge: Die Teilprobleme heiße (im Sie der Dy. Progr.) uabhägig : : die Optimierug des eie Teilproblems beeiflußt icht die Optimierug des adere (z.b. bei der Wahl der Uterteilug) - Bsp. MMP: die Wahl der Klammerug für A A k ist völlig uabhägig vo der Klammerug für A k+ A - egebsp. "lägster Pfad": die optimale Lsg für a b (ämlich a d c b) immt der optimale Lsg für b c Elemete weg a d b c. Zachma Iformatik 2 SS Dyamische Programmierug 22
Überlappede Teilprobleme: Ei Problem wird zerlegt i Uterprobleme, diese wieder i Uter- Uterprobleme, usw. Ab irgedeiem rad müsse dieselbe Uter-Uterprobleme mehrfach vorkomme, sost ergibt das DP wahrscheilich keie effiziete Lösug - Bsp. MMP: Rekursiosbaum ethält viele überlappede Teilprobleme 4 2 4 2 4 4 4 2 2 4 2 4 4 2 2 4 4 2 2 4 4 2 2 2 2 2 2. Zachma Iformatik 2 SS Dyamische Programmierug 2 Rekostruktio der optimale Lösug: Optimale Lösug für esamtproblem beihaltet Schritte:. Etscheidug treffe zur Zerlegug des Problems i Teile 2. Optimale Wert für Teilprobleme bereche. Optimale Wert für esamtproblem "zusammesetze" Dyamische Programmierug berechet zuächst oft ur de "Weg" zur optimale Lösug, aber - im zweite Schritt wird da die optimale Lösug mittels diese Weges berechet; - dazu Etscheiduge eifach i Phase speicher ud i Phase 2 da "abspiele" m s - Beispiel: MMP Speichere Idex k, der zum optimale Wert führt i zweitem Array s. Zachma Iformatik 2 SS Dyamische Programmierug 24 2
Schritte bei der dyamische Programmierug. harakterisiere die (rekursive) Struktur der optimale Lösug (Prizip der optimale Substruktur) 2. Defiiere de Wert eier optimale Lösug rekursiv. Trasformiere die rekursive Methode i eie iterative bottom-up Methode, bei der alle Zwischeergebisse i eier Tabelle gespeichert werde. Zachma Iformatik 2 SS Dyamische Programmierug 25 Das Rucksack-Problem (Kapsack Problem) Das Problem: "Die Qual der Wahl" Beispiel: ei Dieb raubt eie Lade aus; um möglichst flexibel zu sei, hat er für die Beute ur eie Rucksack dabei Im Lade fidet er egestäde; der i-te egestad hat de Wert v i ud das ewicht w i Sei Rucksack ka höchstes das ewicht c trage w i ud c sid gaze Zahle (die v i köe aus sei) Aufgabe: welche egestäde sollte für de maximale Profit gewählt werde?. Zachma Iformatik 2 SS Dyamische Programmierug 8
Beispiel 2 2 5 2 + 2 + 2 + 6 6 6 2 Rucksack = 6 = 8 = 22 Fazit: es ist keie gute Strategie, das Objekt mit dem beste Verhältis Profit:ewicht als erstes zu wähle. Zachma Iformatik 2 SS Dyamische Programmierug 9 Eiige Variate des Kapsack-Problems Fractioal Kapsack Problem: Der Dieb ka Teile der egestäde mitehme Lösugsalgo später (mit reedy-strategie) - Kapsack Problem: Biäre Etscheidug zwische ud : jeder egestad wird vollstädig geomme oder gar icht Formale Problemstellug: x i = / : egestad i ist (icht) im Rucksack. Zachma Iformatik 2 SS Dyamische Programmierug 4 4
Die rekursive Lösug Betrachte de erste egestad i=; es gibt zwei Möglichkeite:. Der egestad wird i de Rucksack gepackt (x =) Rest-Problem: 2. Der egestad wird icht i de Rucksack gepackt (x =) Rest-Problem: Bereche beide Fälle, wähle de bessere. Zachma Iformatik 2 SS Dyamische Programmierug 4 Der Rekursiosbaum vorhadee Rest-Kapazität Wert des Rucksacks c Objekt c c - w v 2 c c - w 2 v 2 c - w v c - w - w 2 v + v 2 c c - w v c - w v c - w - w v + v. Zachma Iformatik 2 SS Dyamische Programmierug 42 5