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



Ähnliche Dokumente
Algorithmen und Datenstrukturen 1 Kapitel 3

Wiederholung. Divide & Conquer Strategie

Algorithmen und Datenstrukturen 2

Dynamische Programmierung

Theoretische Informatik III (Winter 2018/19) Prof. Dr. Ulrich Hertrampf. Noch einmal TSP

5.4 Das Rucksackproblem

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2

19. Dynamic Programming I

Algorithmen und Komplexität

19. Dynamic Programming I

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy

Kombinatorische Optimierung

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

Dynamische Programmierung II

Das Problem des Handlungsreisenden

Dynamische Programmierung

19. Dynamic Programming I

Formulierung mittels Dynamischer Programmierung

Algebraische und arithmetische Algorithmen

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2

Datenstrukturen & Algorithmen

Rückblick: divide and conquer

Informatik II: Algorithmen und Datenstrukturen SS 2013

ADS: Algorithmen und Datenstrukturen 2

Algebraische und arithmetische Algorithmen

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

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

Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen

19. Dynamic Programming I

Schriftlicher Test zu C (90 Minuten) VU Einführung ins Programmieren für TM. 1. Oktober 2012

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

12.4 Traveling Salesman Problem

Kap. 3: Exakte Lösungsverfahren für NPschwierige. Optimierungsprobleme VO Algorithm Engineering

Proseminar Effiziente Algorithmen

Algorithmen und Datenstrukturen (für ET/IT)

Arithmetik und Algebra

Übung Algorithmen und Datenstrukturen

12. Rekursion Grundlagen der Programmierung 1 (Java)

Entwurf und Analyse von Algorithmen

Algorithmen und Datenstrukturen (für ET/IT)

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

Algorithmen und Datenstrukturen (für ET/IT)

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Approximationsalgorithmen für NP-harte Optimierungsprobleme

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

Dynamische Programmierung. Problemlösungsstrategie der Informatik

11 Dynamisches Programmieren

Algorithmische Methoden zur Netzwerkanalyse

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Kombinatorische Optimierung Vorlesung für den Bereich Diplom/Master Informatik

Probleme aus NP und die polynomielle Reduktion

Diskrete Optimierungsverfahren zur Lösung von Sudokus

2 Rationale und reelle Zahlen

Algorithmische Graphentheorie

Informatik II, SS 2016

KLAUSUR ZUR LINEAREN ALGEBRA I MUSTERLÖSUNG

Projekt Systementwicklung

Algorithmen und Datenstrukturen (für ET/IT)

Dynamisches Programmieren - Problemstruktur

Algorithmen und Datenstrukturen in der Bioinformatik Erstes Übungsblatt WS 05/06 Musterlösung

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

Dynamische Optimierung

Grundlagen Theoretischer Informatik 3 SoSe 2012 in Trier. Henning Fernau Universität Trier

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

A = ( a 1,..., a n ) ii) Zwei Matrizen sind gleich, wenn die Einträge an den gleichen Positionen übereinstimmen. so heißt die n n Matrix

Grundlagen Theoretischer Informatik 3 SoSe 2012 in Trier. Henning Fernau Universität Trier

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

Kap. 7.1 Heuristiken Kap. 7.2 Approximative Algorithmen und Gütegarantien

Vortrag 20: Kurze Vektoren in Gittern

Klammersprache Definiere

6. Übung zur Linearen Optimierung SS08

2. Optimierungsprobleme 6

Randomisierte Algorithmen

KAPITEL 6 GANZZAHLIGE OPTIMIERUNG UND VOLLSTÄNDIG UNIMODULARE MATRIZEN

Theoretische Informatik 1

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

11. Übung Algorithmen I

Grundlagen der Algorithmen und Datenstrukturen Kapitel 12

4.5 Überbestimmte Gleichungssysteme, Gauß sche Ausgleichrechnung

Formale Grundlagen der Informatik F3: Berechenbarkeit un

Wenn wir zudem a ii = 1 für 1 i n setzen, dann gilt für A k (boolesches Produkt, A 0 = I) 0 falls es im Graphen keinen Pfad von v i nach v j,

Effizienz von Algorithmen

Diskrete Strukturen. Abgabetermin: 20. September 2011, 14 Uhr in die DS Briefkästen

Algorithmen und Datenstrukturen Laufzeitabschätzung

Schulmethode zur Multiplikation von n-stelligen Binärzahlen a und b: (evtl. fallen Zeilen weg, wenn das zugehörige Bit des Multiplikators 0 ist).

Algorithmen und Datenstrukturen

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Algorithmen und Datenstrukturen

Die Klasse NP und die polynomielle Reduktion. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Multiplikation von Matrizen

Die Klasse NP und die polynomielle Reduktion

lineare Programmierung

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

Informatik I Übung, Woche 47: Nachtrag zur dynamischen Programmierung

Experimente. Zahlenbeispiel. Cache-Optimale Algorithmen. Warum Funktionieren Caches? Cache-Oblivious Speichermodell. Characterisierung von Caches

Vektoren und Matrizen

Transkript:

Optimierung Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen Optimierung I Dynamisches Programmieren Günther Greiner Lehrstuhl für Graphische Datenverarbeitung Sommersemester 8 G. Greiner, U. Rüde FAU Erlangen-Nürnberg Optimierung ist ein Grundproblem der Informatik Diskrete Optimierung Diskrete Variablen (z.b. binär, ganzzahlig) Endlich viele Zustände zu durchsuchen Enge Beziehungen zu diskreten Strukturen, wie Bäumen, Graphen, Kontinuierliche Optimierung Kontinuierliche Variablen Unbeschränkte vs. Optimierung mit Nebenbedingungen Enge Verwandtschaft zur Nullstellensuche Bei dynamischen Systemen: Optimalsteuerung - Bezüge zur Regelungstechnik G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg Diskrete Optimierung: Dynamisches Programmieren Im Gegensatz zu Divide-and-Conquer eine Bottom-Up- Methode Idee - um ein Problem der Größe n zu optimieren: Erstelle eine Tabelle, in der alle relevanten Probleme der Größe,,,..., n- gelöst werden Greife auf diese Teil-Lösungen zurück um das Größe-n-Problem zu optimieren. Oft eingesetzt zur Optimierung Wenn Lösungen aus kleineren Teil-Lösungen zusammengesetzt Name ist historisch bedingt -- heißt eigentlich nichts anderes als tabellenbasierter Algorithmus. Rekursion mit Memorieren der Teillösungen Vermeidung von Mehrfachberechnungen Vorgehen: Dynamische Programmierung Charakterisiere den Lösungsraum Definiere rekursiv, wie sich eine optimale Lösung aus kleineren zusammensetzt Konzipiere den Algorithmus bottom-up, so dass tabellarisch optimale Teillösungen für aufsteigende Problemgrößen gefunden werden Dabei wird jeweils auf die schon existierenden Teillösungen zurückgegriffen. Wir studieren das Verfahren der dynamischen Programmierung anhand von Beispielen. Als erstes kommen wir zum Problem der Matrix-Kettenmultiplikation zurück. G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg

Matrizen-Kettenmultiplikation Beispiel zum Dynamischen Programmieren: Matrizen-Kettenmultiplikation Gegeben seien n Matrizen M, M,..., M n, die miteinander multipliziert werden sollen Dimensionen unterschiedlich: M : p p, M : p p,..., M n : p n- p n Aufwand für eine Multiplikation einer p q mit einer q r Matrix ist p q r (Mult+Add). Gesamtaufwand hängt stark von der assoziativen Klammerung ab: Beispiel: M :, M :, M : (M M ) M kostet + = Operationen M (M M ) kostet + = Operationen G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg Matrizen-Kettenmultiplikation Naiver Algorithmus: Durchprobieren aller Klammerungen Wie viele Möglichkeiten gibt es, ein Produkt mit n Faktoren zu klammern? Die Anzahl ist durch die Catalanschen Zahlen C n gegeben. Die Folge beginnt mit den Zahlen,,,,,, 9,, 8, 79,... Catalansche Zahlen Anzahl der Triangulierungen eines konvexen Polygons C = C = Herleitung siehe z.b. U. Schöning: Algorithmik, Spektrum Verlag,. Durchprobieren hat exponentielle Komplexität - ist also für größere n ungeeignet. C = G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 7 G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 8

Matrizen-Kettenmultiplikation Definiere m(i,j) - die minimale Zahl von Multiplikationen, mit der man bei optimaler Klammerung das Teilprodukt M i... M j mit der Dimensionsfolge p i-, p i,..., p j berechnen kann. Es gilt m(i,i) =. Nehmen wir an, die optimale (äußere) Klammerung des Produkts M i... M j sei (M i... M k ) (M k+... M j ) mit i k < j. Es gilt dann m(i, j) = min (m(i, k) + m(k+, j) + p i- p k p j : i k<j ) Optimaler Aufwand: Rekursionsformel Im Algorithmus verwenden wir deshalb eine Tabelle (d.h einen D- array) m(i,j), von dem allerdings nur das obere Dreieck benötigt wird. Algorithmus errechnet die Tabellenwerte (i, j) in der Reihenfolge j-i =,,,..., n- und unter Verwendung der bereits errechneten Tabelleneinträge. G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 9 G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg Algorithmus for i=,..., n: m[i,i]= for r=,..., n-: for i=,..., n-r: j= i+r m[i,j] = for k= i,..., j-: q= m[i,k] + m[k+,j] + p[i-]*p[k]*p[j] if q < m [i,j] then m[i,j]= q Am Ende steht in m[,n] die optimale Anzahl an Operationen Die optimale Klammerung kann man bestimmen, in dem man sich bei jedem Tabelleneintrag zusätzlich merkt, für welches k das Minimum zu Stande kam. Algorithmus for i=..n: m[i,i]= for r=..n-: for i=..n-r: j= i+r r= r= r= r=n- m[i,j] = for k= i..j-: q= m[i,k] + m[k+,j] + p[i-i]*p[k]*p[j] if q < m [i,j] then m[i,j]= q m ij = min(m ik +m k+j +p i- *p k *p j i<=k<j) i= n-r G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg

Algorithmus for i=..n: m[i,i]= for r=..n-: for i=..n-r: j= i+r m[i,j] = for k= i..j-: q= m[i,k] + m[k+,j] + p[i-i]*p[k]*p[j] if q < m [i,j] then m[i,j]= q m ij = min(m ik +m k+j +p i- *p k *p j i<=k<j) r= r= Algorithmus for i=..n: m[i,i]= for r=..n-: for i=..n-r: j= i+r r= r= r= m ij = min(m ik +m k+j +p i- *p k *p j i<=k<j) r= r= G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg Beispiel Matrizenmultiplikation M : x M : x M : x M : x M : x (p i )= (,,,,, ) 7 8 7 7 G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 7 m Komplexität Aufwand = O((Größe der Tabelle) (Aufwand pro Eintrag)). Hier konkret: O(n n) = O(n ) Vergleich mit dem Aufwand, wenn man die Rekursionsformel direkt in einen Divide-et-Impera-Algorithmus umsetzt: Proc mat(i,j) if i=j then return else r= for k=i to j- q= mat(i,k) + mat(k+,j) + p i- * p k * p j if q < r then r= q return r Hier werden innerhalb der Rekursion wiederholt die gleichen Optimierungsprobleme gelöst, deshalb wächst der Aufwand exponentiell. G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 8

Traveling Sales Person (TSP) Beispiel zum Dynamischen Programmieren: Traveling Salesperson Das Problem des Handlungsreisenden: Ein berühmtes NP-vollständiges Problem der Informatik Problem: Finde die optimale Rundreise durch n gegebene Städte, so dass jede Stadt genau einmal besucht wird, und die zurückgelegte Strecke (oder Kosten, oder Zeit) minimal wird. Entfernungstabelle m i,j ist Nicht notwendig symmetrisch, Erfüllt nicht unbedingt die Dreiecksungleichung, Kann Einträge von haben. Gesucht also eine Permutation G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 9 G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg Traveling Sales Person (TSP) Es kann (wegen der -Einträge) durchaus vorkommen, dass keine Lösung existiert. Ein naiver Algorithmus würde alle Permutationen durchspielen, also Komplexität O(n!) - also sehr schnell exponentiell wachsend. Da es ein NP-vollständiges Problem ist, können wir nicht erwarten, dass wir (wie bei der Kettenmultiplikation) einen polynomialen Algorithmus finden. Trotzdem kann man den naiven Algorithmus mit Hilfe der dynamischen Programmierung wesentlich verbessern. TSP - Beispiellösung zufällig plazierte Städte im Einheitsquadrat. Kostenfunktion: Euklidische Entfernung Lösung mit heuristischem Verfahren bestimmt. Optimalität nicht sichergestellt G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg

Dynamische Programmierung für das TSP-Problem Grundidee: Wenn eine optimale Rundreise (obda) bei Stadt beginnt und dann die Stadt k besucht, dann muss der Weg von k zurück nach durch die Städte {,..., n} - {k} ebenfalls optimal sein. Deshalb sei g(i,s) die Länge des kürzesten Weges, der bei der Stadt i beginnt, dann durch jede Stadt der Menge S genau einmal geht, um dann bei Stadt zu enden. Dynamische Programmierung für das TSP-Problem for i=,..., n do: g[i, ] = m i, for k=,..., n-: for S, S =k, S: for i {,..., n} \ S: Berechne g[i,s] nach obiger Formel. Berechne g[,{,..., n}] nach obiger Formel. G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg TSP Beispiel () TSP Beispiel () Hannover Berlin Frankfurt Nürnberg München G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 8

TSP Beispiel () TSP Beispiel () G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 9 G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg Dynamische Programmierung für das TSP-Problem Komplexität = O((Größe Tabelle) (Aufwand pro Eintrag)). Hier konkret: O(n n n) = O(n n ) Der Aufwand ist immer noch exponentiell (darüber sollten wir uns nicht wundern), aber weniger schnell anwachsend exponentiell als im naiven Algorithmus Die optimale Tour erhält man, wenn man mitverfolgt, über welche Minimumsbildung die Tabelle aufgebaut wurde. Man beachte, wie der Aufwand mit größeren n wächst. Beispiel zum Dynamischen Programmieren: Rucksackproblem G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg

Das /-Rucksackproblem Eingabe: n+ Zahlen: v,..., v n : Wert von n Objekten g,..., g n : Gewicht der n Objekte G: Größe des Rucksacks Gesucht: ein Vektor (a,..., a n ) aus -en und -en, so dass Dynamische Programmierung: Rucksackproblem Wenn der Rucksack der Größe G mit einer Auswahl I {,..., n} optimal gepackt ist, so gilt für jedes i I, dass ein (G-g i )-großer Rucksack optimal mit einer Auswahl aus den Objekten {,,..., n}-{i} gepackt ist, wenn man die Auswahl I-{i} annimmt. Sei w(i,h) der optimale Wert beim Packen eines Rucksacks h G mit einer Auswahl der Objekte,..., i; i n, also Wir suchen nach einem Optimalitätsprinzip, das uns einen Ansatz mit dynamischer Programmierung erlaubt G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg Algorithmus für das Rucksackproblem Beispiel - Rucksackproblem Reihenfolge g ν oder for i=,..., n: for h=,..., G: Berechne w[i,h] nach obiger Formel Die optimale Auswahl ergibt sich wiederum daraus, welcher Fall bei der Berechnung der w[n,g] jeweils aufgetreten ist. Komplexität = O((Größe der Tabelle) (Aufwand pro Eintrag)). Hier konkret: O(n G) O() = O(nG) 7 8 9 8 G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 7

Beispiel - Rucksackproblem Zusammenfassung: Dynamische Programmierung g ν Dynamische Programmierung ist ein nützliches Prinzip um diskrete Optimierungsprobleme zu lösen 7 8 9 Grundprinzip: Rekursion bottom-up Memorieren, d.h. Speichern der Zwischenergebnisse in einer Tabelle Implementierung: Bottom-up-Aufbau der Tabelle. G= :, g = ν = G=7 :,, g = 7 ν = G= :,,, g = 8 ν = G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 8 G. Greiner, U. Rüde Algorithmik III, Sommer 8 FAU Erlangen-Nürnberg 9