19. Dynamic Programming I

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

Datenstrukturen & Algorithmen

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester

16. All Pairs Shortest Path (ASPS)

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Algorithmen und Datenstrukturen 1 Kapitel 3

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

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

Dynamische Programmierung

Algorithmische Bioinformatik 1

5.4 Das Rucksackproblem

Datenstrukturen & Algorithmen

Dynamisches Programmieren - Problemstruktur

Randomisierte Algorithmen 2. Erste Beispiele

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

Dynamische Programmierung

Algorithmentheorie Randomisierung. Robert Elsässer

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

Abschnitt: Algorithmendesign und Laufzeitanalyse

Datenstrukturen und Algorithmen

Kostenmaße. F3 03/04 p.188/395

13. Binäre Suchbäume

Datenstrukturen und Algorithmen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Suchen und Sortieren Sortieren. Heaps

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Binäre lineare Optimierung mit K*BMDs p.1/42

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Teile und Herrsche Teil 2

Vorlesung 5: DATENSTRUKTUREN UND ALGORITHMEN

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Algorithmen II Vorlesung am

Universität des Saarlandes

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Kombinatorische Optimierung

Algorithmen und Datenstrukturen

23. November Betweenness Centrality Closeness Centrality. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 108

DATENSTRUKTUREN UND ALGORITHMEN

Geometrische Algorithmen

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Vorlesung 4 BETWEENNESS CENTRALITY

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

Resolutionsalgorithmus

11 Dynamisches Programmieren

Copyright, Page 1 of 5 Die Determinante

Datenstrukturen und Algorithmen

Konzepte und Methoden der Programmierung Lösungen P. Fierz / FS 2012

Polygontriangulierung

Algorithmen II Vorlesung am

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Algorithmen und Datenstrukturen

( ) Lineare Gleichungssysteme

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

3 Elementare Umformung von linearen Gleichungssystemen und Matrizen

10 Dynamische Programmierung

Geometrische Algorithmen

Informatik II, SS 2014

Kapitel 6 Elementare Sortieralgorithmen

Sortierte Folgen 250

Einführung in die Informatik 2

Algorithmen und Datenstrukturen

11.1 Grundlagen - Denitionen

Lineares Programmieren

Binary Decision Diagrams (Einführung)

37 Gauß-Algorithmus und lineare Gleichungssysteme

JAVA - Suchen - Sortieren

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Entwurf von Algorithmen - Kontrollstrukturen

WS 2009/10. Diskrete Strukturen

SS11 Effiziente Algorithmen 5. Kapitel: Dynamische Programmierung

Randomisierte Algorithmen

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Effizienz von Algorithmen

Algorithmen und Datenstrukturen

Optimierung. Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen. Vorgehen: Dynamische Programmierung

Komplexität von Algorithmen

Programmiertechnik II

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Algorithmische Bioinformatik

4. Kreis- und Wegeprobleme Abstände in Graphen

LL(k)-Analyse. (y) folgt α = β. (x) = start k. (=l> ist ein Linksableitungsschritt)

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Lineare Algebra für D-ITET, D-MATL, RW. Beispiellösung für Serie 10. Aufgabe ETH Zürich D-MATH. Herbstsemester Dr. V. Gradinaru D.

Sequenzen-Alignierung in der Bioinformatik

GI Vektoren

Algorithmen und Datenstrukturen Suchbaum

Transkript:

Fibonacci Zahlen 9. Dynamic Programming I Fibonacci, Längste aufsteigende Teilfolge, längste gemeinsame Teilfolge, Editierdistanz, Matrixettenmultipliation, Matrixmultipliation nach Strassen [Ottman/Widmayer, Kap..2.3, 7., 7.4, Cormen et al, Kap. 5] (schon wieder) F n := { wenn n < 2 F n + F n 2 wenn n 3. Analyse: warum ist der reursive Algorithmus so langsam. 495 496 Algorithmus FibonacciRecursive(n) Analyse Input : n 0 Output : n-te Fibonacci Zahl if n 2 then f else f FibonacciRecursive(n ) + FibonacciRecursive(n 2) return f T (n): Anzahl der ausgeführten Operationen. n =, 2: T (n) = Θ() n 3: T (n) = T (n 2) + T (n ) + c. T (n) = T (n 2) + T (n ) + c 2T (n 2) + c 2 n/2 c = ( 2) n c Algorithmus ist exponentiell (!) in n. 497 498

Grund, visualisiert Memoization F 47 Memoization (sic) Abspeichern von Zwischenergebnissen. F 46 F 45 F 44 F 44 F 43 F 43 F 42 F 45 F 44 F 43 F 43 F 42 F 42 F 4 Bevor ein Teilproblem gelöst wird, wird Existenz eines entsprechenden Zwischenergebnis geprüft. Existiert ein gespeichertes Zwischenergebnis bereits, so wird dieses verwendet. Andernfalls wird der Algorithmus ausgeführt und das Ergebnis wird entsprechend gespeichert. Knoten mit denselben Werten werden oft ausgewertet. 499 500 Memoization bei Fibonacci Algorithmus FibonacciMemoization(n) F 47 Input : n 0 Output : n-te Fibonacci Zahl F 45 F 44 F 43 F 46 F 44 F 45 if n 2 then f else if memo[n] then f memo[n] else f FibonacciMemoization(n ) + FibonacciMemoization(n 2) memo[n] f return f Rechtecige Knoten wurden bereits ausgewertet. 50 502

Analyse Genauer hingesehen... Berechnungsaufwand: T (n) = T (n ) + c =... = O(n). Algorithmus benötigt Θ(n) Speicher. 24... berechnet der Algorithmus der Reihe nach die Werte F, F 2, F 3,... verleidet im Top-Down Ansatz der Reursion. Kann den Algorithmus auch gleich Bottom-Up hinschreiben. Man spricht dann auch von dynamischer Programmierung. 24 Allerdings benötigt der naive Algorithmus auch Θ(n) Speicher für die Reursionsverwaltung. 503 504 Algorithmus FibonacciDynamicProgram(n) Dynamic Programming: Vorgehen Input : n 0 Output : n-te Fibonacci Zahl F [] F [2] for i 3,..., n do F [i] F [i ] + F [i 2] return F [n] Verwalte DP-Tabelle mit Information zu den Teilproblemen. Dimension der Tabelle? Bedeutung der Einträge? 2 Berechnung der Randfälle. Welche Einträge hängen nicht von anderen ab? 3 Berechnungsreihenfolge bestimen. In welcher Reihenfolge önnen Einträge berechnet werden, so dass benötigte Einträge jeweils vorhanden sind? 4 Auslesen der Lösung. Wie ann sich Lösung aus der Tabelle onstruieren lassen? Laufzeit (typisch) = Anzahl Einträge der Tabelle mal Aufwand pro Eintrag. 505 506

Dynamic Programming: Vorgehen am Beispiel Längste aufsteigende Teilfolge (LAT) Dimension der Tabelle? Bedeutung der Einträge? Tabelle der Grösse n. n-ter Eintrag enthält n-te Fibonacci Zahl. 2 3 4 5 6 7 2 3 4 5 6 7 2 3 4 Welche Einträge hängen nicht von anderen ab? Werte F und F 2 sind unabhängig einfach berechenbar. In welcher Reihenfolge önnen Einträge berechnet werden, so dass benötigte Einträge jeweils vorhanden sind? F i mit aufsteigenden i. Wie ann sich Lösung aus der Tabelle onstruieren lassen? F n ist die n-te Fibonacci-Zahl. 3 2 4 6 5 7 3 2 4 6 5 7 Verbinde so viele passende Anschlüsse wie möglich, ohne dass sich die Anschlüsse reuzen. 507 508 Formalisieren Erster Entwurf Betrachte Folge A = (a,..., a n ). Suche eine längste aufsteigende Teilfolge von A. Beispiele aufsteigender Teilfolgen: (3, 4, 5), (2, 4, 5, 7), (3, 4, 5, 7), (3, 7). A 2 3 4 5 6 7 3 2 4 6 5 7 Verallgemeinerung: Lasse Zahlen ausserhalb von,..., n zu, auch mit Mehrfacheinträgen. Lasse nur strit aufsteigende Teilfolgen zu. Beispiel: (2,3,3,3,5,) mit aufsteigender Teilfolge (2,3,5). Annahme: LAT L für beannt. Wollen nun LAT L + für + berechnen. Wenn a + zu L passt, dann L + = L a + Gegenbeispiel: A 5 = (, 2, 5, 3, 4). Sei A 3 = (, 2, 5) mit L 3 = A. Bestimme L 4 aus L 3? So ommen wir nicht weiter: önnen nicht von L auf L + schliessen. 509 50

Zweiter Entwurf Dritter Entwurf Annahme: eine LAT L j für alle j beannt. Wollen nun LAT L + für + berechnen. Betrachte alle passenden L + = L j a + (j ) und wähle eine längste solche Folge. Gegenbeispiel: A 5 = (, 2, 5, 3, 4). Sei A 4 = (, 2, 5, 3) mit L = (), L 2 = (, 2), L 3 = (, 2, 5), L 4 = (, 2, 5). Bestimme L 5 aus L,..., L 4? So ommen wir nicht weiter: önnen nicht von jeweils nur einer beliebigen Lösung L j auf L + schliessen. Wir müssten alle möglichen LAT betrachten. Zu viel! Annahme: die LAT L j, welche mit leinstem Element endet sei für alle Längen j beannt. Betrachte nun alle passenden L j a + (j ) und atualisiere die Tabelle der längsten aufsteigenden Folgen, welche mit leinstem Element enden. Beispiel: A = (, 000, 00, 2, 3, 4,..., 999) A LAT () () (, 000) (), (, 000) (, 000, 00) (), (, 000), (, 000, 00) (, 000, 00, 2) (), (, 2), (, 000, 00) (, 000, 00, 2, 3) (), (, 2), (, 2, 3) 5 52 DP Table Dynamic Programming Algorithmus LAT Idee: speichere jeweils nur das letzte Element der aufsteigenden Folge am Slot j. Beispielfolge: 3 2 5 6 4 Problem: Tabelle enthält zum Schluss nicht die Folge, nur den letzten Wert. Lösung: Zweite Tabelle mit den Vorgängern. Index 2 3 4 5 6 Wert 3 2 5 6 4 Vorgänger 2 5 0 2 3 4... - - 3-2 - 2 5-5 - 5 6-4 6 2 Dimension der Tabelle? Bedeutung der Einträge? Zwei Tabellen T [0,..., n] und V [,..., n]. Zu Beginn T [0], T [i] i > Berechnung eines Eintrags Einträge in T aufsteigend sortiert. Für jeden Neueintrag a + binäre Suche nach l, so dass T [l] < a < T [l + ]. Setze T [l + ] a +. Setze V [] = T [l]. 53 54

Dynamic Programming Algorithmus LAT Analyse 3 4 Berechnungsreihenfolge Beim Traversieren der Liste werden die Einträge T [] und V [] mit aufsteigendem berechnet. Wie ann sich Lösung aus der Tabelle onstruieren lassen? Suche das grösste l mit T [l] <. l ist der letzte Index der LAT. Suche von l ausgehend den Index i < l, so dass V [l] = A[i], i ist der Vorgänger von l. Repetiere mit l i bis T [l] = Berechnung Tabelle: Initialisierung: Θ(n) Operationen Berechnung -ter Eintrag: Binäre Suche auf Positionen {,..., } plus onstante Anzahl Zuweisungen. n (log + O()) = O(n) + = n log() = Θ(n log n). = Reonstrution: Traversiere A von rechts nach lins: O(n). Somit Gesamtlaufzeit Θ(n log n). 55 56 Längste Gemeiname Teilfolge Teilfolgen einer Zeichenette: Problem: Teilfolgen(KUH): (), (K), (U), (H), (KU), (KH), (UH), (KUH) Eingabe: Zwei Zeichenetten A = (a,..., a m ), B = (b,..., b n ) der Längen m > 0 und n > 0. Gesucht: Eine längste gemeinsame Teilfolge (LGT) von A und B. Sinnvolle Anwendung: Ähnlicheit von DNA-Sequenzen in der Biologie. Längste Gemeiname Teilfolge Beispiele: LGT(IGEL,KATZE)=E, LGT(TIGER,ZIEGE)=IGE Ideen zur Lösung? T I G E R Z I E G E 57 58

Reursives Vorgehen Reursion Annahme: Lösungen L(i, j) beannt für A[,..., i] und B[,..., j] für alle i m und j n, jedoch nicht für i = m und j = n. L(m, n) max {L(m, n ) + δ mn, L(m, n ), L(m, n)} T I G E R Z I E G E Betrachten Zeichen a m, b n. Drei Möglicheiten: A wird um ein Leerzeichen erweitert. L(m, n) = L(m, n ) 2 B wird um ein Leerzeichen erweitert. L(m, n) = L(m, n) 3 L(m, n) = L(m, n ) + δ mn mit δ mn = wenn a m = b n und δ mn = 0 sonst für m, n > 0 und Randfälle L(, 0) = 0, L(0, ) = 0. Z I E G E 0 0 0 0 0 0 T 0 0 0 0 0 0 I 0 0 G 0 0 2 2 E 0 0 2 2 3 R 0 0 2 2 3 59 520 Dynamic Programming Algorithmus LGT Dynamic Programming Algorithmus LGT Dimension der Tabelle? Bedeutung der Einträge? Tabelle L[0,..., m][0,..., n]. L[i, j]: Länge einer LGT der Zeichenetten (a,..., a i ) und (b,..., b j ) 3 Berechnungsreihenfolge Abhängigeiten berücsichtigen: z.b. Zeilen aufsteigend und innerhalb von Zeilen Spalten aufsteigend. 2 Berechnung eines Eintrags L[0, i] 0 0 i m, L[j, 0] 0 0 j n. Berechnung von L[i, j] sonst mit L[i, j] = max(l[i, j ] + δ ij, L[i, j ], L[i, j]). 4 Wie ann sich Lösung aus der Tabelle onstruieren lassen? Beginne bei j = m, i = n. Falls a i = b j gilt, gib a i aus, sonst falls L[i, j] = L[i, j ] fahre mit j j fort, sonst falls L[i, j] = L[i, j] fahre mit i i fort. Terminiere für i = 0 oder j = 0. 52 522

Analyse LGT Anzahl Tabelleneinträge: (m + ) (n + ). Berechnung jeweils mit onstanter Anzahl Zuweisungen und Vergleichen. Anzahl Schritte O(mn) Bestimmen der Lösung: jeweils Verringerung von i oder j. Maximal O(n + m) Schritte. Laufzeit insgesamt: O(mn). Editierdistanz Editierdistanz von zwei Zeichenetten A = (a,..., a m ), B = (b,..., b m ). Editieroperationen: Einfügen eines Zeichens Löschen eines Zeichens Änderung eines Zeichens Frage: Wie viele Editieroperationen sind mindestens nötig, um eine gegebene Zeichenette A in eine Zeichenette B zu überführen. TIGER ZIGER ZIEGER ZIEGE 523 Editierdistanz= Levenshtein Distanz 524 Vorgehen? Zweidimensionale Tabelle E[0,..., m][0,..., n] mit Editierdistanzen E[i, j] zwischen Worten A i = (a,..., a i ) und B j = (b,..., b j ). Betrachte die jeweils letzten Zeichen von A i und B j. Drei mögliche Fälle: Lösche letztes Zeichen von A i : 25 E[i, j] +. 2 Füge Zeichen zu A i hinzu: 26 E[i, j ] +. 3 Ersetze A i durch B j : E[i, j ] + δ ij. E[i, j] min { E[i, j]+, E[i, j ]+, E[i, j ]+ δ ij } DP Tabelle E[i, j] min { E[i, j] +, E[i, j ] +, E[i, j ] + δ ij } Z I E G E 0 2 3 4 5 T 2 3 4 5 I 2 2 2 3 4 G 3 3 2 2 2 3 E 4 4 3 2 3 2 R 5 5 4 3 3 3 25 oder füge Zeichen zu B j hinzu 26 oder lösche letztes Zeichen von B j 525 Algorithmus: Übung! 526

Matrix-Kettenmultipliation Macht das einen Unterschied? Aufgabe: Berechnung des Produtes A A 2... A n von Matrizen A,..., A n. = = Matrizenmultipliation ist assoziativ, d.h. Klammerung ann beliebig gewählt. A A 2 A 3 A A 2 A 3 2 Operationen! A A 2 A 3 Ziel: möglichst effiziente Berechnung des Produtes. Annahme: Multipliation einer (r s)-matrix mit einer (s u)-matrix hat Kosten r s u. = Operationen! = A A 2 A 3 A A 2 A 3 A A 2 A 3 527 528 Reursion Berechnung der DP-Tabelle Annahme, dass die bestmögliche Berechnung von (A A 2 A i ) und (A i+ A i+2 A n ) für jedes i bereits beannt ist. Bestimme bestes i, fertig. n n-tabelle M. Eintrag M[p, q] enthält Kosten der besten Klammerung von (A p A p+ A q ). M[p, q] min (M[p, i] + M[i +, q] + Kosten letzte Multipliation) p i<p Randfälle: M[p, p] 0 für alle p n. Berechnung von M[p, q] hängt ab von M[i, j] mit p i j q, (i, j) (p, q). Insbesondere hängt M[p, q] höchstens ab von Einträgen M[i, j] mit i j < q p. Folgerung: Fülle die Tabelle von der Diagonale ausgehend. 529 530

Analyse Exurs: Matrixmultipliation Betrachten Multipliation zweier n n-matrizen. DP-Tabelle hat n 2 Einträge. Berechung eines Eintrages bedingt Betrachten von bis zu n anderen Einträgen. Gesamtlaufzeit O(n 3 ). Seien dann A = (a ij ) i,j n, B = (b ij ) i,j n, C = (c ij ) i,j n, C = A B Auslesen der Reihenfolge aus M: Übung! c ij = n a i b j. = 53 Naiver Algorithmus benötigt Θ(n 3 ) elementare Multipliationen. 532 Divide and Conquer Divide and Conquer B a c b d Annahme n = 2. Anzahl elementare Multipliationen: M(n) = 8M(n/2), M() =. a c b d A C = AB e f ea + fc eb + fd Ergibt M(n) = 8 log 2 n = n log 2 8 = n 3. Kein Gewinn e g f h ea + fc ga + hc eb + fd gb + hd g h ga + hc gb + hd 533 534

Strassens Matrixmultipliation Nichttriviale Beobachtung von Strassen (969): Es genügt die Berechnung der sieben Produte A = (e + h) (a + d), B = (g + h) a, C = e (b d), D = h (c a), E = (e + f) d, F = (g e) (a + b), G = (f h) (c + d). Denn: ea + fc = A + D E + G, eb + fd = C + E, ga + hc = B + D, gb + hd = A B + C + F. Damit ergibt sich M (n) = 7M(n/2), M () =. Also M (n) = 7 log 2 n = n log 2 7 n 2.807. e g f h a c ea + fc ga + hc b d eb + fd gb + hd Schnellster beannter Algorithmus: O(n 2.37 ) 535