11 Dynamisches Programmieren



Ähnliche Dokumente
Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen Heapsort

Randomisierte Algorithmen

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Lernmodul 7 Algorithmus von Dijkstra

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Das Problem des Handlungsreisenden

Algorithmen und Datenstrukturen 2

3.3 Optimale binäre Suchbäume

19. Dynamic Programming I

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2

Lösungen von Übungsblatt 12

Algorithmen und Datenstrukturen

21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3

Berechnung von Abständen

Algorithmen und Datenstrukturen 2

Übersicht. Aktivitäten-Auswahl-Problem. Greedy Algorithmen. Aktivitäten-Auswahl-Problem. Aktivitäten-Auswahl-Problem. Datenstrukturen & Algorithmen

Algorithmen I. Tutorium Sitzung. Dennis Felsing

Algorithmen und Komplexität

Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen)

19. Dynamic Programming I

Tutoraufgabe 1 (Suchen in Graphen):

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

5. Bäume und Minimalgerüste

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Lösungen zum Aufgabenblatt Nr. 1: Konstruktion der reellen Zahlen

Algorithmik Übung 3 Prof. Dr. Heiner Klocke. Sortierfolge nach Werten: Bube Dame König As nach Farben: Karo ( ) Herz ( ) Piek ( ) Kreuz ( )

Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an.

Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 07 Beispiellösung Blatt 5

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

2. Vorlesung. Die Theorie der schwarz-weissen Ketten.

Rekursionsbäume Aufstellen eines Baumes dessen Knoten die Laufzeit auf jeder Rekursionsstufe darstellen und Aufsummieren

Abschnitt: Algorithmendesign und Laufzeitanalyse

Dynamische Programmierung II

Lineare Algebra II 5. Übungsblatt

ADS: Algorithmen und Datenstrukturen 2

11.1 Grundlagen - Denitionen

4. Kreis- und Wegeprobleme Abstände in Graphen

Dynamische Programmierung. Problemlösungsstrategie der Informatik

12. Rekursion Grundlagen der Programmierung 1 (Java)

Kürzeste-Wege-Algorithmen und Datenstrukturen

Satz 90 Sei A = (Q, Σ, δ, q 0, F ) ein DFA. Der Zeitaufwand des obigen Minimalisierungsalgorithmus ist O( Q 2 Σ ).

Algorithmen II Vorlesung am

Gliederung. Algorithmen und Datenstrukturen II. Problem: Längste gemeinsame Teilsequenz. Problem: Längste gemeinsame Teilsequenz

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Einführung in die Objektorientierte Programmierung Vorlesung 17: Dynamische Programmierung. Sebastian Küpper

Algorithmen I - Tutorium 28 Nr. 12

Algorithmen und Datenstrukturen

8 Konvergenzkriterien und Häufungswerte von Folgen in R

Dynamische Programmierung

19. Dynamic Programming I

Dynamische Programmierung

3.2. Divide-and-Conquer-Methoden

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Rechenregeln für Summen

Greedy Algorithms - Gierige Algorithmen

Graphen und Bäume. A.1 Graphen

Algorithmen und Datenstrukturen (für ET/IT)

5.4 Das Rucksackproblem

Datenstrukturen und Algorithmen (SS 2013)

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Dynamisches Programmieren - Problemstruktur

Wann sind Codes eindeutig entschlüsselbar?

b liegt zwischen a und c.

1 Einführung. 2 Grundlagen von Algorithmen. 3 Grundlagen von Datenstrukturen. 4 Grundlagen der Korrektheit von Algorithmen

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

Flüsse in Netzwerken

Übung zur Vorlesung Diskrete Mathematik (MAT.107) Blatt Beispiellösungen Abgabefrist:

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Algorithmen & Komplexität

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

Approximationsalgorithmen

Das Briefträgerproblem

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Übung zur Vorlesung Diskrete Strukturen I

Transkript:

Algorithmen und Datenstrukturen 279 11 Dynamisches Programmieren Gegenstand dieses und des nächsten Kapitels sind noch einmal Algorithmen. Zunächst beschreiben wir das sog. dynamische Programmieren. kein spezieller Algorithmus, sondern Lösungsstrategie (vgl. divide-and-conquer) Begriff stammt aus der Zeit, als Programmieren noch Tabellenmethoden bezeichnete (vgl. linear programming); gemeint ist also ein Optimierungsverfahren, nicht Computerprogrammierung. Anwendungen sind Optimierungsaufgaben, d.h. Maximal- oder Minimalstellen einer Zielfunktion zu bestimmen. 11 Dynamisches Programmieren TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 280 Die Entwicklung eines Algorithmus nach dieser Strategie kann in vier Schritte zerlegt werden: 1. Charakterisierung der Struktur einer Optimallösung 2. Rekursive Definition des Wertes einer Optimallösung 3. Berechnung des Wertes einer Optimallösung (rekursiv) 4. Konstruktion der Optimallösung aus berechneter Information (optional) Schritt 4 kann entfallen sofern nur der Wert einer Optimallösung von Interesse ist. Wir betrachten ein einführendes Beispiel... 11 Dynamisches Programmieren TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 281 11.1 Steuerung einer Fertigungsstraße Automobilfabrik mit 2 Fertigungsstraßen für Autokarosserien: Jede Straße besteht aus n Stationen: S 1,1,..., S 1,n bzw. S 2,1,..., S 2,n. Stationen S 1,j und S 2,j führen beide denselben Fertigungsschritt aus, benötigen hierfür aber unterschiedliche Zeiten a 1,j bzw. a 2,j. Anlaufzeiten e 1, e 2 ( entry ) Auslaufzeiten x 1, x 2 ( exit ) Nach Durchlaufen einer Station kann eine Karosserie entweder ohne Verzögerung auf derselben Straße bleiben oder zur anderen Straße wechseln. Hierbei tritt eine Verzögerung von t i,j ein, wenn zuletzt Station S i,j durchlaufen wurde (j = 1,..., n 1). 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 282 Aufgabe: Für diese gegebenen Kosten (=Zeiten) ist diejenige (optimale) Kombination von Stationen aus Straße 1 und 2 zu bestimmen, welche zum schnellsten Durchlauf durch die Fertigungsstraße führt. Brute force Methode: Kombinationen erschöpfend durchprüfen Jeder Lösungskandidat ist vollständig bestimmt durch Angabe der aus Straße 1 gewählten Stationen. Straße 1 besitzt n Stationen, also 2 n mögliche Teilmengen. Demnach wären also 2 n mögliche Lösungen zu vergleichen. Dies wird zu teuer für n groß. 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 283 11.1.1 Struktur einer Optimallösung Charakterisierung der Kombination, die am schnellsten durch die Fertigung führt bis einschließlich Station S 1,j : j = 1: klar, nur ein möglicher Weg j > 1: zwei mögliche Wege durch S 1,j 1 und dann direkt zu S 1,j durch S 2,j 1, dann Wechsel auf Straße 1 zu S 1,j Angenommen, der Weg durch S 1,j 1 ist der schnellere. Wesentliche Feststellung: Weg durch S 1,j 1 muß bereits optimal gewesen sein. Andernfalls könnten wir einen schnelleren Weg durch S 1,j konstruieren. Analoge Überlegung im Fall, dass schnellster Weg durch S 2,j 1 führt. 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 284 Allgemein: Eine optimale Lösung (schnellster Weg bis einschließlich Station S 1,j ) ist aufgebaut aus optimalen Lösungen von Teilproblemen (schnellster Weg bis einschließlich Station S 1,j 1 bzw. S 2,j 1 ). Mann nennt diese Eigenschaft optimale Substruktur. Damit lassen sich Optimallösungen des Ausgangsproblems aus Optimallösungen von Teilproblemen aufbauen. Hier: schnellster Weg bis einschl. S 1,j entweder schnellster Weg durch S 1,j 1, danach direkt zu S 1,j, oder schnellster Weg durch S 2,j 1, danach Straßenwechsel zu S 1,j Aus Symmetriegründen analog bei Vertauschung von 1 und 2. Strategie daher: konstruiere schnellsten Weg durch S 1,j bzw. S 2,j mit Hilfe der Teillösungen durch S 1,j 1 bzw. S 2,j 1. 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 285 11.1.2 Rekursive Lösung Setze f i [j] := kürzeste Zeit durch S i,j, i = 1, 2, j = 1,..., n. Gesucht: f := kürzeste Zeit durch gesamte Fertigung Es gilt f = min{f 1 [n] + x 1, f 2 [n] + x 2 }, (11.1a) f 1 [1] = e 1 + a 1,1, (11.1b) f 2 [1] = e 2 + a 2,1, (11.1c) f 1 [j] = a 1,j + min{f 1 [j 1], f 2 [j 1] + t 2,j 1 }, (j = 2,..., n), (11.1d) f 2 [j] = a 2,j + min{f 2 [j 1], f 1 [j 1] + t 1,j 1 }, (j = 2,..., n). (11.1e) 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 286 Aufbau der Optimallösung: f i [j] gibt lediglich den Wert der optimalen Teillösung an (Auswertung der Zielfunktion). Die Teillösung selbst kann wie folgt konstruiert werden: Sei l i [j] die Nummer der Fertigungsstraße (1 oder 2) deren (j 1)-te Station im schnellsten Weg durch S i,j benutzt wurde. M.a.W. S li [j],j 1 wurde vor S i,j durchlaufen. Definiert für i = 1, 2 und j = 2,..., n. l := Straßennummer, deren Station n benutzt wird. 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 287 11.1.3 Berechnung der Optimalwerte Naiver Ansatz: Rekursive Berechnung gemäß Gleichungen (11.1). Dies erfordert aber exponentiellen Aufwand. Sei r i (j) die Anzahl des Auftretens von f i [j] in diesen Rekursionen. Es gilt r 1 (n) = r 2 (n) = 1. Aus (11.1d), (11.1e) folgt r 1 (j) = r 2 (j) = r 1 (j + 1) + r 2 (j + 1), (j = 1,..., n 1). 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 288 Behauptung: Es gilt r i (j) = 2 n j. Beweis: Induktion über j von n abwärts Anfang (j = n): hier ist 2 n j = s 0 = 1 = r i (n). Induktionsschritt: Angenommen r i (j + 1) = 2 n (j+1). Es folgt r i (j) = r 1 (j + 1) + r 2 (j + 1) = 2 n (j+1) + 2 n (j+1) = 2 n (j+1)+1 = 2 n j. Damit tritt allein schon f 1 [1] bereits 2 n 1 Mal auf. Diese Reihenfolge ( top-down ) also nicht geeignet. Beobachtung: f i [j] hängt nur ab von f 1 [j 1] und f 2 [j 1] (j 2). Somit könnte man auch in umgekehrter Reihenfolge (j aufsteigend) rechnen. 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 289 FASTEST-WAY(a, t, e, x, n) 1 f 1 [1] e 1 + a 1,1 ; f 2 [1] e 2 + a 2,1 2 for j 2 to n 3 do if f 1 [j 1] + a 1,j f 2 [j 1] + t 2,j 1 + a 1,j 4 then f 1 [j] f 1 [j 1] + a 1,j 5 l 1 [j] 1 6 else f 1 [j] f 2 [j 1] + t 2,j 1 + a 1,j 7 l 1 [j] 2 8 if f 2 [j 1] + a 2,j f 1 [j 1] + t 1,j 1 + a 2,j 9 then f 2 [j] f 2 [j 1] + a 2,j 10 l 2 [j] 2 11 else f 2 [j] f 1 [j 1] + t 1,j 1 + a 2,j 12 l 2 [j] 1 13 if f 1 [n] + x 1 f 2 [n] + x 2 14 then f f 1 [n] + x 1 15 l 1 16 else f f 2 [n] + x 2 17 l 2 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 290 11.1.4 Rekonstruktion der Optimallösung PRINT-STATIONS(l, n) 1 i l 2 Ausgabe Straße i Station n 3 for j n downto 2 4 do i l i [j] 5 Ausgabe Straße i, Station j 1 Laufzeit: Θ(n). 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 291 S 1,1 S 1,2 S 1,3 S 1,4 S 1,5 S 1,6 Straße 1 7 9 3 4 8 4 2 2 3 1 3 4 3 4 2 1 2 2 1 2 Straße 2 8 5 6 4 5 7 S 2,1 Beispiel für Fertigungsstraße mit n = 6 S 2,2 S 2,3 S 2,4 S 2,5 S 2,6 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 292 In diesem Fall erhalten wir für die Größen f i [j] j 1 2 3 4 5 6 f 1 [j] 9 18 20 24 32 35 f 2 [j] 12 16 22 25 30 37 und somit f = 38. Für die l i [j] ergibt sich j 1 2 3 4 5 l 1 [j] 1 2 1 1 2 l 2 [j] 1 2 1 2 2 und somit l = 1. 11.1 Steuerung einer Fertigungsstraße TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 293 11.2 Längste gemeinsame Teilfolge Eine (endliche) Folge Z = z 1,..., z k heißt Teilfolge einer Folge X = x 1,..., x m, falls es eine aufsteigende Folge verschiedener Indizes i 1, i 2,..., i k gibt, sodass z j = x ij für j = 1,..., k. Beispiel: Z = B, C, D, B ist Teilfolge von X = A, B, C, B, D, A, B mit Indices i 1 = 2, i 2 = 3, i 3 = 5, i 4 = 7. Eine Folge Z ist eine gemeinsame Teilfolge zweier Folgen X und Y, falls Z sowohl Teilfolge von X als auch von Y ist. Beispiel: Z = B, C, A ist gemeinsame Teilfolge von X = A, B, C, B, D, A, B und Y = B, D, C, A, B, A. 11.2 Längste gemeinsame Teilfolge TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 294 Aufgabe: Zu zwei gegebenen Folgen X = x 1,..., x m und Y = y 1,..., y n bestimme man eine gemeinsame Teilfolge (lgt) maximaler Länge. a Im obigen Beispiel ist die gemeinsame Teilfolge Z von X und Y nicht maximal. Eine maximale gemeinsame Teilfolge ist B, D, A, B. Anwendung: Charakterisierung der Ähnlichkeit zweier DNA-Sequenzen (Folge über dem Alphabet {A,C,G,T}). Ist eine Teilfolge der anderen? Ist eine durch geringe Modifikationen in die andere überführbar? Besitzen beide eine (möglichst lange) gemeinsame Teilfolge? a Diese Aufgabe findet man in der Literatur auch als LCS Problem (longest common subsequence) bezeichnet. 11.2 Längste gemeinsame Teilfolge TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 295 Brute-Force Strategie: Man prüfe für jede Teilfolge von X nach, ob sie auch Teilfolge von Y ist und merke sich die längste. Jede Teilfolge von X entspricht einer Teilmenge der Indizes {1,..., m}, davon gibt es 2 m. Prüfen auf Teilfolgeneigenschaft erfordert Aufwand O(n). Insgesamt also O(n2 m ), zu teuer. 11.2 Längste gemeinsame Teilfolge TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 296 11.2.1 Optimale Substruktur Wir zeigen: das LCS-Problem besitzt die optimale Substruktureigenschaft, ist also durch dynamisches Programmieren lösbar. Wir charakterisieren hierzu zunächst die Struktur einer lgt. Bezeichnung: Zu einer Folge X = x 1, x 2,..., x m bezeichnen wir für i = 0, 1,..., m die nach i Gliedern abgebrochene Teilfolge X i = x 1, x 2,..., x i als i-ten Präfix von X. Satz 11.1 Ist die Folge Z = z 1,, z 2,..., z k eine lgt von X = x 1, x 2,..., x m und Y = y 1, y 2,..., y n, so gilt: (a) Aus x m = y n folgt z k = x m = y n und Z k 1 ist lgt von X m 1 und Y n 1. (b) Ist x m y n, so folgt aus z k x m dass Z lgt von X m 1 und Y ist. (c) Ist x m y n, so folgt aus z k y m dass Z lgt von X und Y n 1 ist. 11.2 Längste gemeinsame Teilfolge TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 297 Fazit: Eine lgt zweier Folgen enthält (als Präfix) eine lgt von Präfixen dieser beiden Folgen. Zwei Fälle: ein oder zwei Teilprobleme x m = y n : hier ist eine lgt von X m 1 und Y n 1 zu bestimmen; Anfügen von x m an diese lgt liefert lgt von X, Y. x m y n : bestimme lgt von X, Y n 1 und lgt von X m 1, Y. Die längere von beiden ist eine lgt von X, Y. Da alle möglichen Fälle betrachtet wissen wir: eine dieser Teillösungen muß in lgt von X, Y vorkommen. 11.2 Längste gemeinsame Teilfolge TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 298 11.2.2 Rekursive Formulierung Bezeichnet c[i, j] die Länge der lgt von X i und Y j, so gilt es, c[m, n] zu bestimmen. Rekursive Formulierung: c[i, j] = 0 falls i = 0 oder j = 0, c[i 1, j 1] + 1 falls i, j > 0 und x i = y j, max{c[i 1, j], c[i, j 1]} falls i, j > 0 und x i y j. Der hierdurch nahegelegte rekursive Algorithmus zur Bestimmung der Länge einer lgt zweier Folgen besitzt wieder exponentielle Laufzeit. Da es aber nur Θ(mn) Teilprobleme gibt, fürt dynamisches Programmieren zu einem schnelleren Algorithmus. Die Werte c[i, j] werden einmal berechnet und in einer Tabelle der Größe (m + 1) (n + 1) gespeichert. 11.2 Längste gemeinsame Teilfolge TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 299 LCS-LENGTH(X, Y ) 1 m length[x] 2 n length[y ] 3 for i 1 to m 4 do c[i, 0] 0 5 for j 1 to n 6 do c[0, j] 0 7 for i 1 to m 8 do for j 1 to n 9 do if x i = y j 10 then c[i, j] c[i 1, j 1] + 1; b[i, j] 11 else if c[i 1, j] c[i, j 1] 12 then c[i, j] c[i 1, j]; b[i, j] 13 else c[i, j] c[i, j 1]; b[i, j] 14 return c, b 11.2 Längste gemeinsame Teilfolge TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 300 Rekonstruktion einer Optimallösung Hierzu wird die zweite in LCS-LENGTH erzeugte Tabelle b verwendet. Bei b[m, n] beginnen. b[i, j] enthält den Tabelleneintrag des Teilproblems, welches zur Bestimmung der lgt von X i und Y j verwendet wurde. Wann immer ein auftritt, heißt dies x i = y j ist Element der lgt. PRINT-LCS(b, X, i, j) 1 if i = 0 oder j = 0 2 then return 3 if b[i, j] = 4 then PRINT-LCS(b, X, i 1, j) 5 Drucke x i 6 elseif b[i, j] = 7 then PRINT-LCS(b, X, i 1, j) 8 else PRINT-LCS(b, X, i, j 1) Laufzeit: O(m + n). 11.2 Längste gemeinsame Teilfolge TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 301 11.3 Elemente des dynamischen Programmierens Die Haupmerkmale dieser Entwurfsstrategie sollen hier noch einmal herausgestellt werden. 11.3 Elemente des dynamischen Programmierens TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 302 11.3.1 Optimale Substruktur Zeige: die Lösung eines Teilproblems besteht aus einer Auswahl, durch die sich ein oder mehrere weitere Teilprobleme ergeben. Annahme: optimale Auswahl sei bekannt (zunächst hypothetisch) Bestimme damit die resultierenden Teilprobleme und charakterisiere deren Struktur. Zeige: die Teillösungen der optimalen Lösung müssen selbst wieder optimal sein. Oft funktioniert ein Cut-and-Paste -Beweis: Annahme: eine der Teillösungen nicht optimal. Entferne diese Teillösung (cut). Ersetze sie durch eine optimale Teillösung (paste). Leite daraus eine bessere Lösung des ursprünglichen Problems und damit einen Widerspruch her. 11.3 Elemente des dynamischen Programmierens TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 303 Optimale Substruktur variiert von Problem zu Problem. 1. Anzahl Teilprobleme erforderlich für eine optimale Lösung 2. Anzahl Wahlmöglichkeiten bei der Weiterverfolgung von Teilproblemen Fertigungsstraße 1 Teilproblem 2 Wahlmöglichkeiten (für S i,j zwischen S 1,j 1 und S 2,j 1. Längste gemeinsame Teilfolge 1 Teilproblem Entweder 1 Wahlmöglichkeit falls x i = y j : lgt von X i 1, Y j 1 2 Wahlmöglichkeiten falls x i y j : zwischen lgt von X i 1,Y und lgt von X, Y j 1. 11.3 Elemente des dynamischen Programmierens TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 304 Grob: Laufzeit ergibt sich aus (# Teilprobleme insgesamt) (# Wahlmöglichkeiten ). Fertigungsstraße: Θ(n) Teilprobleme, 2 Wahlmöglichkeiten, Laufzeit Θ(n). Längste gemeinsame Teilfolge: Θ(mn) Teilprobleme, 2 Wahlmöglichkeiten, Laufzeit Θ(mn). 11.3 Elemente des dynamischen Programmierens TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 305 Beim dynamischen Programmieren wird die optimale Substruktur in einer Bottom-Up -Vorgehensweise ausgenutzt. Zuerst wird eine Optimallösung von Teilproblemen bestimmt Danach Auswahl einer der optimalen Teillösungen zur Konstruktion einer Lösung der ursprünglichen Problems. Im Gegensatz hierzu gehen die im nächsten Kapitel zu behandelnden Greedy-Algorithmen in Top-Down -Manier vor: Zuerst Auswahl einer vielversprechenden Alternative Danach Lösung der resultierenden Teilprobleme 11.3 Elemente des dynamischen Programmierens TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 306 Nicht jedes Problem besitzt die optimale Substruktureigenschaft. Wir betrachten hierzu zwei ähnlich anmutende Probleme. Gegeben sei ein ungewichteter gerichteter Graph G = (V, E) und gesucht seien spezielle Wege (Folgen adjazenter Knoten). Kürzester Weg: Bestimme einen Weg u v mit minimaler Kantenzahl. Dieser Muß einfach sein (ohne Zyklen), da andernfalls durch Entfernen der Zyklen kürzere Wege entstünden. Längster einfacher Weg: Bestimme einfachen Weg u v mit maximaler Kantenzahl. (Ohne Forderung der Einfachheit könnte man beliebig lange Wege zurch Hinzunahme von Zyklen erzeugen.) 11.3 Elemente des dynamischen Programmierens TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 307 Das Problem des kürzesten Weges besitzt die optimale Substruktureigenschaft: Sei p der kürzeste Weg u v. Sei w ein beliebiger Knoten längs p. Sei p 1 der Teilweg u w. Dann ist p 1 ein kürzester Weg u w. Beweis: Gäbe es einen kürzeren Weg p 1: u w, so erhielte man durch Ersetzen von p 1 durch p 1 einen Weg u p 1 w p 2 v mit weniger Kanten als p. Wir können also einen kürzesten Weg u v bestimmen, indem wir zu allen Zwischenknoten w kürzeste Wege u w und w v bestimmen. 11.3 Elemente des dynamischen Programmierens TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 308 Das Problem des längsten Weges besitzt die optimale Substruktureigenschaft nicht [Beispiel] 11.3 Elemente des dynamischen Programmierens TU Bergakademie Freiberg, WS 2005/06

Algorithmen und Datenstrukturen 309 11.3.2 Überlappende Teilprobleme Diese treten dann auf, wenn ein rekursiver Algorithmus immer wieder dieselben Teilprobleme aufsucht. Gute divide-and-conquer Algorithmen erzeugen auf jeder Rekursionsstufe neue Teilprobleme. Beispiel: Merge-Sort. Im Fertigungsstraßen-Beispiel: rekursive Lösung verwendet 2 n j Mal f i [j] (j 1,..., n). Der Tabellenalgorithmus reduziert den Aufwand von exponentiell zu linear. Alternativer Ansatz: Memoisierung. Top-Down Variante mit der Effizienz von dynamischem Programmieren. Verwendet den (eigentlich naiven) Rekursiven Ansatz, merkt sich aber Lösungen zu bereits behandelten Teilproblemen. 11.3 Elemente des dynamischen Programmierens TU Bergakademie Freiberg, WS 2005/06