Datenstrukturen & Algorithmen

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

Algorithmen und Datenstrukturen 2

Dynamische Programmierung

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

19. Dynamic Programming I

3.3 Optimale binäre Suchbäume

Algorithmen und Datenstrukturen

ÜBUNGSKLAUSUR Studienhalbjahr: 2. Semester. Datum: 20. Juli 2016 Bearbeitungszeit: 90 Minuten. Modul: T2INF Dozent: Stephan Schulz

Algorithmen und Komplexität

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

20. Dynamic Programming II

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

20. Dynamic Programming II

Wiederholung. Divide & Conquer Strategie

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

Datenstrukturen & Algorithmen

2. Klausur Datenstrukturen und Algorithmen SS 2014

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 1 Kapitel 3

19. Dynamic Programming I

Klausur Algorithmentheorie

19. Dynamic Programming I

Datenstrukturen und Algorithmen (SS 2013)

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

Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen

11 Dynamisches Programmieren

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Das Problem des Handlungsreisenden

Klausur Algorithmentheorie

Klausur Algorithmen und Datenstrukturen

Methoden für den Entwurf von Algorithmen

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen & Algorithmen

Dynamische Programmierung

Algorithmen I. Tutorium Sitzung. Dennis Felsing

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

Randomisierte Algorithmen 2. Erste Beispiele

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Algorithmen für schwierige Probleme

Datenstrukturen & Algorithmen

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

Dynamische Programmierung II

Effiziente Algorithmen 2

Klausur Algorithmen und Datenstrukturen

Auswählen nach Rang (Selektion)

Algorithmen I - Tutorium 28 Nr. 12

6. Algorithmen auf Zeichenketten

Lernmodul 7 Algorithmus von Dijkstra

Hallo Welt für Fortgeschrittene

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Dynamische Programmierung. Problemlösungsstrategie der Informatik

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

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

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Globalübungsaufgabe1 (Rucksackproblem):

Datenstrukturen und Algorithmen

Sortieren II / HeapSort Heaps

Algorithmische Bioinformatik 1

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Übersicht. Rot-schwarz Bäume. Rot-schwarz Bäume. Beispiel. Eigenschaften. Datenstrukturen & Algorithmen. Rot-schwarz Bäume Eigenschaften Einfügen

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

Algorithmen auf Sequenzen

16. All Pairs Shortest Path (ASPS)

Klausur Algorithmentheorie

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Dynamische Programmierung

Algorithmen und Datenstrukturen 1

Suchen in Texten. Naives Suchen Verfahren von Knuth-Morris-Pratt Verfahren von Boyer-Moore Ähnlichkeitssuchen Editierdistanz

2. Effizienz von Algorithmen

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Übung Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen D-INFK

Transkript:

Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010

Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale binäre Suchbäume Eigenschaften der dynammischen Programmierung 2

Dynamische Programmierung Entwurfsstrategie, wie divide-and-conquer (teile-und-beherrsche) Programmierung bedeutet Tabellieren (historischer Hintergrund) Teile-und-beherrsche: Teilprobleme sind unabhängig Dynamische Programmierung: Teilprobleme bestehen ihrerseits aus gemeinsamen Teilproblemen 3

Dynamische Programmierung Lösung von Optimierungsproblemen Finde eine Lösung mit optimalen Eigenschaften Kleinster oder grösster Wert (Minimierung oder Maximierung) 4

Dynamische Programmierung Vier Schritte, um Algorithmus zu entwickeln 1. Beschreibe Struktur einer optimalen Lösung 2. Definiere Wert der optimalen Lösung rekursiv 3. Berechne Wert der optimalen Lösung bottom-up up 4. Konstruiere optimale Lösung basierend auf den vorherigen Berechnungen 5

Dynamische Programmierung Begriffe Optimale Teilstruktur Überlappende Teilprobleme Memoisierung 6

Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale binäre Suchbäume Eigenschaften der dynammischen Programmierung 7

Ablaufkoord. von Montagebändern Autofabrik mit zwei Montagebändern Bänder haben dieselben Stationen, aber unterschiedliche Bearbeitungszeiten Autos können von einem zum anderen Band verschoben werden Problem: bestimme optimalen Ablauf durch die Bänder Bestimme, welche Stationen von welchem Band verwendet werden sollen 8

Optimaler Ablauf Alle Möglichkeiten ausprobieren? Jeder Ablauf gegeben durch Menge der Stationen von Band 1 (oder Band 2) Bänder haben n Stationen 2 n Teilmengen Exponentielle Anzahl Kandidaten Unpraktisch wenn n gross 9

1. Struktur der optimalen Lösung Betrachte schnellsten Weg zur Station S 1,j j=1: einfach Zeit zu S 1,1 j>=2: zwei Möglichkeiten zu S 1,j Via S 1,j-1 j 1, dann direkt zu S 1,j j Via S 2,j-1, dann Transfer zu zu S 1,j 10

1. Struktur der optimalen Lösung Annahme: Schnellster Weg zu S 1,j ist durch S 1,j-1 Beobachtung Müssen schnellsten Weg zu S 1,j-1 genommen haben Falls es einen schnelleren Weg zu S 1,j-1 gäbe, hätten wir diesen verwendet um einen noch schnelleren Weg zu S 1,j zu erhalten 11

1. Struktur der optimalen Lösung Annahme: Schnellster Weg zu S 1,j ist durch S 1,j-1 Beobachtung Müssen schnellsten Weg zu S 1,j-1 genommen haben Falls es einen schnelleren Weg zu S 1,j-1 gäbe, hätten wir diesen verwendet um einen noch schnelleren Weg zu S 1,j zu erhalten Selbes Argument für Weg zu S 1,j über S 2,j-1 12

1. Struktur der optimalen Lösung Optimale Teilstruktur: Optimale Lösung für ein Problem (Weg zu S 1,j ) enthält optimale Lösung zu Teilproblemen (Weg zu S 1,j-1 oder S 1,j-2 ) Benütze optimale Teilstruktur um optimale Lösung zu einem Problem aus optimalen Lösungen von Unterproblemen zu finden Um schnellsten Pfad zu S 1,j j zu finden, bestimme schnellsten Pfad zu S 1,j-1 und S 2,j-1 13

2. Rekursive Lösung Sei f i [j] kürzeste Zeit um S i,j zu durchlaufen Ziel: finde kürzeste Zeit f * durch alle Stationen 14

Analyse der rekursiven Lösung Anzahl Zugriffe auf f i [j] ist 2 n-j Gesamtzahl der Zugriffe auf alle f i [j] ist 2 n+1-2 Siehe Übung Exponentielle Laufzeit! 15

3. Bottom-up Algorithmus Speichere Zusatzinformation, um später Lösung rekonstruieren zu können Sei l i [j] = Band 1 oder 2, dessen Station j-1 auf dem Weg durch S i,j verwendet wird S li[j],j-1j 1 ist vor S ij i,j Beispiel 16

3.Bottom-up Algorithmus 17

4. Rekonstruktion der Lösung Verwende Zusatzinformation l i [j], um Lösung zu rekonstruieren 18

Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale binäre Suchbäume Eigenschaften der dynammischen Programmierung 19

Längste gemeinsame Teilsequenz Gegeben zwei Sequenzen X=<x 1,...,x m > und Y=<y 1,...,y n >. Finde eine Sequenz von maximaler Länge, die in X und Y vorkommt Elemente der Sequenz müssen nicht konsekutiv, jedoch in korrekter Reihenfolge in X und Y vorkommen Longest common subsequence (LCS) Beispiele 20

Naive Lösung Für jede Teilsequenz von X, prüfe ob sie in Y vorkommt Aufwand Θ(n2( m ) 2 m Teilsequenzen in X Jeder Bitvektor der Länge m definiert eine Teilsequenz Überprüfen jeder Teilsequenz braucht Θ(n) Gesamte Sequenz Y muss durchlaufen werden Exponentiell! 21

Optimale Teilstruktur Notation X i bezeichnet Präfix <x 1,...,x i > Y i bezeichnet Präfix <y 1,...,y i > i y 1 y i Theorem Sei Z=<z 1,...,z k > LCS von X m und Y n 1. Falls x m=yy n, dann z k=x m=yy n und Z k-1 1 ist LCS von X m-1 und Y n-1 2. Falls x m y y n, dann bedeutet z k x x m, dass Z LCS von X m-1 und Y n 3. Falls x m y n, dann bedeutet z k y n, dass Z LCS von X m und Y n-1 22

Beweis Theorem 23

Optimale Teilstruktur Ein LCS von zwei Reihen hat ein Präfix, welches ein LCS von Präfixen der Reihen ist Jeder Präfix eines LCS von zwei Reihen ist ein LCS von Präfixen der Reihen => Das Problem erfüllt das Kriterium der optimalen Substruktur 24

Rekursive Formulierung Idee Berechne zuerst nur Länge der LCS Rekonstruiere nachher die LCS selbst Sei c[i,j] Länge LCS von X und Y Gesucht c[m,n] 25

Rekursive Formulierung Worst-case: x[i]=y[i] Evaluiere zwei Teilprobleme, je nur ein Parameter dekrementiert 26

Rekursionsbaum 27

Überlappende Unterprobleme Rekursive Lösung enthält eine kleine Anzahl verschiedener Unterprobleme, die wiederholt gelöst werden Anzahl verschiedener Unterprobleme für das LCS Problem mit Reihen der Länge m und n ist nur mn Dynamisches Programmieren stützt sich auf optimale Substruktur und überlappende Unterprobleme 28

Memoisierung Speichere Lösung von Teilproblemen in einer Tabelle Bei wiederholten Aufrufen des Teilproblems, lese Lösung aus Tabelle 29

Memoisierung Speichere Lösung von Teilproblemen in einer Tabelle c[ij] c[i,j] Bei wiederholten Aufrufen des Teilproblems, lese Lösung aus Tabelle Wie vorher! Aufwand Θ(mn) (Zeit und Platz) 30

Beispiel s a p a n k i n g a m p u t a t i o n 31

Rekonstruktion der LCS Jeder Eintrag c[i,j] hängt nur von drei anderen Einträgen c[i-1,j-1], 1 1] c[i-1,j], 1 und c[i,j-1] ab Gegeben c[ij] c[i,j], können in konstanter Zeit bestimmen, welcher vorhergehende Eintrag zur Berechnung verwendet wurde 32

Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale binäre Suchbäume Eigenschaften der dynammischen Programmierung 33

Optimale binäre Suchbäume Gegeben Sequenz K=<k 1,k 2,..,k n > von Schlüsseln, sortiert nach k 1 <k 2 <... Wahrscheinlichkeit p i für Suche nach k i Problem: konstruiere binären Suchbaum mit minimalem erwartetem Aufwand für Suche Anwendung: Wörterbuch für automatische Übersetzungen Worthäufigkeiten bekannt 34

Erwartete Suchkosten Tatsächliche Kosten = #untersuchter Knoten Für k i, Kosten = depth(k i)+1 Erwartete Kosten 35

Beispiel 36

Beobachtungen Optimaler BST hat nicht unbedingt kleinste Höhe hat nicht unbedingt Schlüssel mit grösster Suchwahrscheinlichkeit an der Wurzel Naive Konstruktion Teste alle Möglichkeiten Aufwand exponentiell 37

Optimale Teilstruktur Gegeben ein optimaler BST T mit Teilbaum T Behauptung: Falls T ein optimaler BST ist, muss T auch optimal sein Beweis durch Widerspruch Falls T nicht optimal wäre, könnten wir ihn durch einen optimalen Teilbaum T ersetzen Dies würde die Gesamtkosten von T reduzieren, und somit wäre T nicht optimal 38

Teilprobleme Problem : gegeben Schlüssel k i,..,k j Sei k r Wurzel von k i,..,k j Teilprobleme Linker Teilbaum k i,..,k r-1 < k r Rechter Teilbaum k r+1,..,k j >k r Mögliche Lösung Für jedes Problem k i,..,k j, untersuche alle möglichen Wurzeln Bestimme jeweils optimale BST für linke und rechte Teilbäume 39

Rekursive Lösung Sei e[i,j] = erwartete Suchkosten für k i,..,k j Falls j=i-1, dann e[i,j]=0 Sei k r Wurzel für optimalen BST von k i,..,k j wobei Beachte Somit Rekursionsgleichung 40

Dynamische Programmierung Berechne Tabellen e[i,j] erwartete Kosten w[i,j] [ Wahrscheinlichkeit für Suche root[i,j] Wurzel Bottom-up Strategie, drei Schleifen Über alle Teilbäume mit l=i-j Schlüsseln, beginnend bei l=1 Über alle Teilbäume [i,j] der Grösse l Über alle möglichen Wurzeln jedes Teilbaums» Evaluiere Kosten, berechne Tabelleneinträge 41

Dynamische Programmierung 42

Beispiel 43

Rekonstruktion der Lösung Mittels einfachem rekursivem Algorithmus aus der root Tabelle Übung 44

Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale binäre Suchbäume Eigenschaften der dynammischen Programmierung 45

Dynamische Programmierung Optimale Teilstruktur Überlappende Teilprobleme Memoisierung Rekonstruktion der optimalen Lösung 46

Optimale Substruktur Optimale Lösung eines Problems beinhaltet optimale Lösungen von Teilproblemen Rezept um zu zeigen, dass Problem Eigenschaft der optimalen Substruktur besitzt 1. Zeige, dass Problem gelöst werden kann, indem Teilprobleme ausgewählt werden können (Annahme, dass Teilprobleme bekannt sind, welche Teil der optimalen Lösung sind) 2. Zeige, dass Lösung der Teilprobleme optimal sein muss, um Optimale Lösung des Problems zu erhalten 47

Optimale Substruktur Wieviele Teilprobleme werden in einer optimalen Lösung benutzt? Wieviele Kandidaten für Teilprobleme gibt es? Fliessbänder 1 Teilproblem (um eins kürzeres Band) 2 Kandidaten (Teilproblem das auf Band 1 oder 2 endet) LCS 1 Teilproblem (LCS für Reihen, wo mindestens eine um eins kürzer ist) 1 oder 2 Kandidaten (welche Reihe wird um eins gekürzt) 48

Optimale Substruktur Dynamisches Programmieren verwendet optimale Teilstruktur bottom up Zuerst: finde Lösungen zu Teilproblemen Dann: wähle welche Teilprobleme zur optimalen Lösung des Problems gehören e Greedy Algorithmen arbeiten top down Nächstes Mal Nicht alle Optimierungsprobleme haben Eigenschaft der optimalen Substruktur! 49

Überlappende Teilprobleme Treten auf, wenn rekursiver Algorithmus dasselbe Problem mehrmals löst Effiziente Teile-und-beherrsche Algorithmen generieren ein neues Teilproblem in jedem Aufruf (Merge Sort, Quicksort) 50

Memoisierung Varianteder Reihenfolge, in welcher die Tabelle mit Lösung von Teilproblemen gefüllt wird Bevorzugter Ansatz im dynamischen Programmieren: bottom-up Berechnung der Teilprobleme ohne Rekursion Memoisierung Verwende Rekursiven Algorithmus Speichere Lösung von Teilproblemen in Tabelle Verfolge Rekursion nur dann weiter, wenn Lösung des Teilproblems in Tabelle noch nicht gespeichert LCS Problem Buch hat bottom up Algorithmus ohne Memoisierung 51

Nächstes Mal Greedy Algorithmen 52