105
Grundlagen der Dynamischen Programmierung Die klassischen DP-Probleme Aufgaben Literatur Dynamische Programmierung - wettkampforientiert Armin Krupp 11. Mai 2010 Armin Krupp Dynamische Programmierung - wettkampforientiert

Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Dynamische Programmierung - wettkampforientiert

Armin Krupp

11. Mai 2010

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 2: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Inhaltsverzeichnis

1 Grundlagen der Dynamischen ProgrammierungVorgehensweise am Beispiel des RucksackproblemsZusammenfassung

2 Die klassischen DP-ProblemeEdit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

3 Aufgaben

4 Literatur

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 3: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Basics Dynamische Programmierung

Richard Bellmann.

Programmierung → Tabelle.

Optimale Teillosungen.

Zwischenspeicherung.

Laufzeitvorteil.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 4: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Basics Dynamische Programmierung

Richard Bellmann.

Programmierung → Tabelle.

Optimale Teillosungen.

Zwischenspeicherung.

Laufzeitvorteil.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 5: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Basics Dynamische Programmierung

Richard Bellmann.

Programmierung → Tabelle.

Optimale Teillosungen.

Zwischenspeicherung.

Laufzeitvorteil.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 6: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Basics Dynamische Programmierung

Richard Bellmann.

Programmierung → Tabelle.

Optimale Teillosungen.

Zwischenspeicherung.

Laufzeitvorteil.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 7: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Basics Dynamische Programmierung

Richard Bellmann.

Programmierung → Tabelle.

Optimale Teillosungen.

Zwischenspeicherung.

Laufzeitvorteil.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 8: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Ein klassisches DP-Problem: Rucksack

Rucksackproblem

Rucksack R mit Kapazitat CR .

n Gegegenstande.

i-ter Gegenstand hat Große ci und Wert vi .

Problem

Welche Gegenstande sollen eingepackt werden, um den Wert zumaximieren?

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 9: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Ein klassisches DP-Problem: Rucksack

Rucksackproblem

Rucksack R mit Kapazitat CR .

n Gegegenstande.

i-ter Gegenstand hat Große ci und Wert vi .

Problem

Welche Gegenstande sollen eingepackt werden, um den Wert zumaximieren?

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 10: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Ein klassisches DP-Problem: Rucksack

Rucksackproblem

Rucksack R mit Kapazitat CR .

n Gegegenstande.

i-ter Gegenstand hat Große ci und Wert vi .

Problem

Welche Gegenstande sollen eingepackt werden, um den Wert zumaximieren?

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 11: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Ein klassisches DP-Problem: Rucksack

Rucksackproblem

Rucksack R mit Kapazitat CR .

n Gegegenstande.

i-ter Gegenstand hat Große ci und Wert vi .

Problem

Welche Gegenstande sollen eingepackt werden, um den Wert zumaximieren?

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 12: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Ein paar Notationen

Feste Ordnung.

val(i , k)

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 13: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Ein paar Notationen

Feste Ordnung.

val(i , k)

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 14: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Die Struktur der optimalen Losung

Schritt 1: Optimale Substruktur

Zeige, dass die optimale Losung aus optimalen Teillosungenbesteht!

Angenommen, wir haben eine optimale Rucksackbepackung.

Dann muss die Rucksackbepackung fur den Rucksack ohnedas oberste Element und mit entsprechender reduzierterKapazitat auch optimal sein.

Ware dies nicht so, dann gabe es eine Bepackung fur diereduzierte Kapazitat mit einem hoheren Wert.

Nach Hinzufugen des obersten Elementes hatten wir danneine bessere Rucksackbepackung

Widerspruch zur optimalen Rucksackbepackung!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 15: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Die Struktur der optimalen Losung

Schritt 1: Optimale Substruktur

Zeige, dass die optimale Losung aus optimalen Teillosungenbesteht!

Angenommen, wir haben eine optimale Rucksackbepackung.

Dann muss die Rucksackbepackung fur den Rucksack ohnedas oberste Element und mit entsprechender reduzierterKapazitat auch optimal sein.

Ware dies nicht so, dann gabe es eine Bepackung fur diereduzierte Kapazitat mit einem hoheren Wert.

Nach Hinzufugen des obersten Elementes hatten wir danneine bessere Rucksackbepackung

Widerspruch zur optimalen Rucksackbepackung!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 16: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Die Struktur der optimalen Losung

Schritt 1: Optimale Substruktur

Zeige, dass die optimale Losung aus optimalen Teillosungenbesteht!

Angenommen, wir haben eine optimale Rucksackbepackung.

Dann muss die Rucksackbepackung fur den Rucksack ohnedas oberste Element und mit entsprechender reduzierterKapazitat auch optimal sein.

Ware dies nicht so, dann gabe es eine Bepackung fur diereduzierte Kapazitat mit einem hoheren Wert.

Nach Hinzufugen des obersten Elementes hatten wir danneine bessere Rucksackbepackung

Widerspruch zur optimalen Rucksackbepackung!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 17: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Die Struktur der optimalen Losung

Schritt 1: Optimale Substruktur

Zeige, dass die optimale Losung aus optimalen Teillosungenbesteht!

Angenommen, wir haben eine optimale Rucksackbepackung.

Dann muss die Rucksackbepackung fur den Rucksack ohnedas oberste Element und mit entsprechender reduzierterKapazitat auch optimal sein.

Ware dies nicht so, dann gabe es eine Bepackung fur diereduzierte Kapazitat mit einem hoheren Wert.

Nach Hinzufugen des obersten Elementes hatten wir danneine bessere Rucksackbepackung

Widerspruch zur optimalen Rucksackbepackung!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 18: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Die Struktur der optimalen Losung

Schritt 1: Optimale Substruktur

Zeige, dass die optimale Losung aus optimalen Teillosungenbesteht!

Angenommen, wir haben eine optimale Rucksackbepackung.

Dann muss die Rucksackbepackung fur den Rucksack ohnedas oberste Element und mit entsprechender reduzierterKapazitat auch optimal sein.

Ware dies nicht so, dann gabe es eine Bepackung fur diereduzierte Kapazitat mit einem hoheren Wert.

Nach Hinzufugen des obersten Elementes hatten wir danneine bessere Rucksackbepackung

Widerspruch zur optimalen Rucksackbepackung!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 19: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Die Struktur der optimalen Losung

Schritt 1: Optimale Substruktur

Zeige, dass die optimale Losung aus optimalen Teillosungenbesteht!

Angenommen, wir haben eine optimale Rucksackbepackung.

Dann muss die Rucksackbepackung fur den Rucksack ohnedas oberste Element und mit entsprechender reduzierterKapazitat auch optimal sein.

Ware dies nicht so, dann gabe es eine Bepackung fur diereduzierte Kapazitat mit einem hoheren Wert.

Nach Hinzufugen des obersten Elementes hatten wir danneine bessere Rucksackbepackung

Widerspruch zur optimalen Rucksackbepackung!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 20: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Die Struktur der optimalen Losung

Schritt 1: Optimale Substruktur

Zeige, dass die optimale Losung aus optimalen Teillosungenbesteht!

Angenommen, wir haben eine optimale Rucksackbepackung.

Dann muss die Rucksackbepackung fur den Rucksack ohnedas oberste Element und mit entsprechender reduzierterKapazitat auch optimal sein.

Ware dies nicht so, dann gabe es eine Bepackung fur diereduzierte Kapazitat mit einem hoheren Wert.

Nach Hinzufugen des obersten Elementes hatten wir danneine bessere Rucksackbepackung

Widerspruch zur optimalen Rucksackbepackung!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 21: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Rekursive Definition des Wertes der optimalen Losung

Rekursive Formulierung

Finde eine rekursive Formulierung des Optimierungsproblems!

Wir wollen val(i , k), i ∈ [n], k ∈ [CR ] berechnen.

Wir haben nun zwei Moglichkeiten:

Wir packen das i-te Element in den Rucksack ein.

Dann betragt der Wert des Rucksacks val(i − 1, k − ci ) + vi

Oder wir packen es nicht ein.

Dann betragt der Wert des Rucksacks val(i − 1, k).

Optimierungsproblem → wahlemax(val(i − 1, k − ci ) + vi , val(i − 1, k))

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 22: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Rekursive Definition des Wertes der optimalen Losung

Rekursive Formulierung

Finde eine rekursive Formulierung des Optimierungsproblems!

Wir wollen val(i , k), i ∈ [n], k ∈ [CR ] berechnen.

Wir haben nun zwei Moglichkeiten:

Wir packen das i-te Element in den Rucksack ein.

Dann betragt der Wert des Rucksacks val(i − 1, k − ci ) + vi

Oder wir packen es nicht ein.

Dann betragt der Wert des Rucksacks val(i − 1, k).

Optimierungsproblem → wahlemax(val(i − 1, k − ci ) + vi , val(i − 1, k))

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 23: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Rekursive Definition des Wertes der optimalen Losung

Rekursive Formulierung

Finde eine rekursive Formulierung des Optimierungsproblems!

Wir wollen val(i , k), i ∈ [n], k ∈ [CR ] berechnen.

Wir haben nun zwei Moglichkeiten:

Wir packen das i-te Element in den Rucksack ein.

Dann betragt der Wert des Rucksacks val(i − 1, k − ci ) + vi

Oder wir packen es nicht ein.

Dann betragt der Wert des Rucksacks val(i − 1, k).

Optimierungsproblem → wahlemax(val(i − 1, k − ci ) + vi , val(i − 1, k))

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 24: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Rekursive Definition des Wertes der optimalen Losung

Rekursive Formulierung

Finde eine rekursive Formulierung des Optimierungsproblems!

Wir wollen val(i , k), i ∈ [n], k ∈ [CR ] berechnen.

Wir haben nun zwei Moglichkeiten:

Wir packen das i-te Element in den Rucksack ein.

Dann betragt der Wert des Rucksacks val(i − 1, k − ci ) + vi

Oder wir packen es nicht ein.

Dann betragt der Wert des Rucksacks val(i − 1, k).

Optimierungsproblem → wahlemax(val(i − 1, k − ci ) + vi , val(i − 1, k))

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 25: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Rekursive Definition des Wertes der optimalen Losung

Rekursive Formulierung

Finde eine rekursive Formulierung des Optimierungsproblems!

Wir wollen val(i , k), i ∈ [n], k ∈ [CR ] berechnen.

Wir haben nun zwei Moglichkeiten:

Wir packen das i-te Element in den Rucksack ein.

Dann betragt der Wert des Rucksacks val(i − 1, k − ci ) + vi

Oder wir packen es nicht ein.

Dann betragt der Wert des Rucksacks val(i − 1, k).

Optimierungsproblem → wahlemax(val(i − 1, k − ci ) + vi , val(i − 1, k))

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 26: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Rekursive Definition des Wertes der optimalen Losung

Rekursive Formulierung

Finde eine rekursive Formulierung des Optimierungsproblems!

Wir wollen val(i , k), i ∈ [n], k ∈ [CR ] berechnen.

Wir haben nun zwei Moglichkeiten:

Wir packen das i-te Element in den Rucksack ein.

Dann betragt der Wert des Rucksacks val(i − 1, k − ci ) + vi

Oder wir packen es nicht ein.

Dann betragt der Wert des Rucksacks val(i − 1, k).

Optimierungsproblem → wahlemax(val(i − 1, k − ci ) + vi , val(i − 1, k))

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 27: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Rekursive Definition des Wertes der optimalen Losung

Rekursive Formulierung

Finde eine rekursive Formulierung des Optimierungsproblems!

Wir wollen val(i , k), i ∈ [n], k ∈ [CR ] berechnen.

Wir haben nun zwei Moglichkeiten:

Wir packen das i-te Element in den Rucksack ein.

Dann betragt der Wert des Rucksacks val(i − 1, k − ci ) + vi

Oder wir packen es nicht ein.

Dann betragt der Wert des Rucksacks val(i − 1, k).

Optimierungsproblem → wahlemax(val(i − 1, k − ci ) + vi , val(i − 1, k))

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 28: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Rekursive Definition des Wertes der optimalen Losung

Rekursive Formulierung

Finde eine rekursive Formulierung des Optimierungsproblems!

Wir wollen val(i , k), i ∈ [n], k ∈ [CR ] berechnen.

Wir haben nun zwei Moglichkeiten:

Wir packen das i-te Element in den Rucksack ein.

Dann betragt der Wert des Rucksacks val(i − 1, k − ci ) + vi

Oder wir packen es nicht ein.

Dann betragt der Wert des Rucksacks val(i − 1, k).

Optimierungsproblem → wahlemax(val(i − 1, k − ci ) + vi , val(i − 1, k))

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 29: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Berechnung der optimalen Losung

C++ Code:

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 30: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Analyse

Laufzeit

Pro Rekusionsschritt werden zwei neue Funtionsaufrufe getatigt!Laufzeit: O(2n)

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 31: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Der DP-Ansatz

val(i − 1, k) wird bei val(i , k), val(i + 1, k), . . . val(n, k)(indirekt) aufgerufen!

Wenn wir den Wert von val(i − 1, k) kennen, konnen wir unszeitaufwendige Rechnungen ersparen.

Top-Down → Memoization

Bottom-Up→ Tabelle

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 32: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Der DP-Ansatz

val(i − 1, k) wird bei val(i , k), val(i + 1, k), . . . val(n, k)(indirekt) aufgerufen!

Wenn wir den Wert von val(i − 1, k) kennen, konnen wir unszeitaufwendige Rechnungen ersparen.

Top-Down → Memoization

Bottom-Up→ Tabelle

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 33: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Der DP-Ansatz

val(i − 1, k) wird bei val(i , k), val(i + 1, k), . . . val(n, k)(indirekt) aufgerufen!

Wenn wir den Wert von val(i − 1, k) kennen, konnen wir unszeitaufwendige Rechnungen ersparen.

Top-Down → Memoization

Bottom-Up→ Tabelle

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 34: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Der DP-Ansatz

val(i − 1, k) wird bei val(i , k), val(i + 1, k), . . . val(n, k)(indirekt) aufgerufen!

Wenn wir den Wert von val(i − 1, k) kennen, konnen wir unszeitaufwendige Rechnungen ersparen.

Top-Down → Memoization

Bottom-Up→ Tabelle

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 35: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Der DP-Ansatz

val(i − 1, k) wird bei val(i , k), val(i + 1, k), . . . val(n, k)(indirekt) aufgerufen!

Wenn wir den Wert von val(i − 1, k) kennen, konnen wir unszeitaufwendige Rechnungen ersparen.

Top-Down → Memoization

Bottom-Up→ Tabelle

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 36: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Losung des Problems - mit DP

Berechnung der Losung

Lose das Problem effizient, indem die Zwischenlosungen in einerentsprechenden Datenstruktur abgespeichert werden.

Wir haben zwei “Laufvariablen”, i und k.

Erstelle eine n×CR Tabelle, der (i , j)-Eintrag enthalt val(i , j).

Oder: Erstelle eine map, in der die val(i , j) memoisiertwerden.

Die optimale Losung findet sich dann in (n, CR).

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 37: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Losung des Problems - mit DP

Berechnung der Losung

Lose das Problem effizient, indem die Zwischenlosungen in einerentsprechenden Datenstruktur abgespeichert werden.

Wir haben zwei “Laufvariablen”, i und k.

Erstelle eine n×CR Tabelle, der (i , j)-Eintrag enthalt val(i , j).

Oder: Erstelle eine map, in der die val(i , j) memoisiertwerden.

Die optimale Losung findet sich dann in (n, CR).

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 38: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Losung des Problems - mit DP

Berechnung der Losung

Lose das Problem effizient, indem die Zwischenlosungen in einerentsprechenden Datenstruktur abgespeichert werden.

Wir haben zwei “Laufvariablen”, i und k.

Erstelle eine n×CR Tabelle, der (i , j)-Eintrag enthalt val(i , j).

Oder: Erstelle eine map, in der die val(i , j) memoisiertwerden.

Die optimale Losung findet sich dann in (n, CR).

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 39: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Losung des Problems - mit DP

Berechnung der Losung

Lose das Problem effizient, indem die Zwischenlosungen in einerentsprechenden Datenstruktur abgespeichert werden.

Wir haben zwei “Laufvariablen”, i und k.

Erstelle eine n×CR Tabelle, der (i , j)-Eintrag enthalt val(i , j).

Oder: Erstelle eine map, in der die val(i , j) memoisiertwerden.

Die optimale Losung findet sich dann in (n, CR).

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 40: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Losung des Problems - mit DP

Berechnung der Losung

Lose das Problem effizient, indem die Zwischenlosungen in einerentsprechenden Datenstruktur abgespeichert werden.

Wir haben zwei “Laufvariablen”, i und k.

Erstelle eine n×CR Tabelle, der (i , j)-Eintrag enthalt val(i , j).

Oder: Erstelle eine map, in der die val(i , j) memoisiertwerden.

Die optimale Losung findet sich dann in (n, CR).

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 41: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Implementierung in C++

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 42: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Optional - die Losung

Konstruktion der Losung

Wenn nicht nur der Wert der Losung zahlt, muss die Losungmitgeschrieben werden.

Rucksackbepackung ist von Interesse.

Ablesen aus der Tabelle:

val(i , k) = val(i − 1, k)→ i − te Element nicht enthalten.

Separate Tabelle:

tab[i ][k] = kvorher

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 43: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Optional - die Losung

Konstruktion der Losung

Wenn nicht nur der Wert der Losung zahlt, muss die Losungmitgeschrieben werden.

Rucksackbepackung ist von Interesse.

Ablesen aus der Tabelle:

val(i , k) = val(i − 1, k)→ i − te Element nicht enthalten.

Separate Tabelle:

tab[i ][k] = kvorher

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 44: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Optional - die Losung

Konstruktion der Losung

Wenn nicht nur der Wert der Losung zahlt, muss die Losungmitgeschrieben werden.

Rucksackbepackung ist von Interesse.

Ablesen aus der Tabelle:

val(i , k) = val(i − 1, k)→ i − te Element nicht enthalten.

Separate Tabelle:

tab[i ][k] = kvorher

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 45: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Optional - die Losung

Konstruktion der Losung

Wenn nicht nur der Wert der Losung zahlt, muss die Losungmitgeschrieben werden.

Rucksackbepackung ist von Interesse.

Ablesen aus der Tabelle:

val(i , k) = val(i − 1, k)→ i − te Element nicht enthalten.

Separate Tabelle:

tab[i ][k] = kvorher

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 46: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Optional - die Losung

Konstruktion der Losung

Wenn nicht nur der Wert der Losung zahlt, muss die Losungmitgeschrieben werden.

Rucksackbepackung ist von Interesse.

Ablesen aus der Tabelle:

val(i , k) = val(i − 1, k)→ i − te Element nicht enthalten.

Separate Tabelle:

tab[i ][k] = kvorher

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 47: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Optional - die Losung

Konstruktion der Losung

Wenn nicht nur der Wert der Losung zahlt, muss die Losungmitgeschrieben werden.

Rucksackbepackung ist von Interesse.

Ablesen aus der Tabelle:

val(i , k) = val(i − 1, k)→ i − te Element nicht enthalten.

Separate Tabelle:

tab[i ][k] = kvorher

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 48: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Zusammenfassung der Schritte

1 Nachweis optimale Substruktur.

2 Rekursive Formulierung.

3 Top-Down oder Bottom up.

4 Konstruktion der Losung

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 49: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Zusammenfassung der Schritte

1 Nachweis optimale Substruktur.

2 Rekursive Formulierung.

3 Top-Down oder Bottom up.

4 Konstruktion der Losung

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 50: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Zusammenfassung der Schritte

1 Nachweis optimale Substruktur.

2 Rekursive Formulierung.

3 Top-Down oder Bottom up.

4 Konstruktion der Losung

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 51: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Zusammenfassung der Schritte

1 Nachweis optimale Substruktur.

2 Rekursive Formulierung.

3 Top-Down oder Bottom up.

4 Konstruktion der Losung

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 52: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Checkliste: Wann DP angewenden?

Optimierungsproblem oder Aufzahlproblem.

Probleminstanzen sind ganzzahlig.

Laufzeit der naiven Losung uberschlagen!

Eingabegroße:1 O(n)→ Wertebereich!2 O(n2)→≈ 10003 O(n3)→≈ 100

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 53: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Checkliste: Wann DP angewenden?

Optimierungsproblem oder Aufzahlproblem.

Probleminstanzen sind ganzzahlig.

Laufzeit der naiven Losung uberschlagen!

Eingabegroße:1 O(n)→ Wertebereich!2 O(n2)→≈ 10003 O(n3)→≈ 100

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 54: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Checkliste: Wann DP angewenden?

Optimierungsproblem oder Aufzahlproblem.

Probleminstanzen sind ganzzahlig.

Laufzeit der naiven Losung uberschlagen!

Eingabegroße:

1 O(n)→ Wertebereich!2 O(n2)→≈ 10003 O(n3)→≈ 100

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 55: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Checkliste: Wann DP angewenden?

Optimierungsproblem oder Aufzahlproblem.

Probleminstanzen sind ganzzahlig.

Laufzeit der naiven Losung uberschlagen!

Eingabegroße:1 O(n)→ Wertebereich!

2 O(n2)→≈ 10003 O(n3)→≈ 100

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 56: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Checkliste: Wann DP angewenden?

Optimierungsproblem oder Aufzahlproblem.

Probleminstanzen sind ganzzahlig.

Laufzeit der naiven Losung uberschlagen!

Eingabegroße:1 O(n)→ Wertebereich!2 O(n2)→≈ 1000

3 O(n3)→≈ 100

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 57: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Checkliste: Wann DP angewenden?

Optimierungsproblem oder Aufzahlproblem.

Probleminstanzen sind ganzzahlig.

Laufzeit der naiven Losung uberschlagen!

Eingabegroße:1 O(n)→ Wertebereich!2 O(n2)→≈ 10003 O(n3)→≈ 100

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 58: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Vorgehensweise am Beispiel des RucksackproblemsZusammenfassung

Checkliste: Wann DP angewenden?

Optimierungsproblem oder Aufzahlproblem.

Probleminstanzen sind ganzzahlig.

Laufzeit der naiven Losung uberschlagen!

Eingabegroße:1 O(n)→ Wertebereich!2 O(n2)→≈ 10003 O(n3)→≈ 100

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 59: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Uberblick

In einigen UVA/ACM Aufgaben sind klassische DP-Probleme“versteckt”.

Problem erkannt, Problem gebannt.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 60: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Uberblick

In einigen UVA/ACM Aufgaben sind klassische DP-Probleme“versteckt”.

Problem erkannt, Problem gebannt.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 61: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Klassische DP-Probleme

1 Rucksack

2 Levenshtein/Edit - Distance

3 Longest Common Subsequence

4 Cocke - Younger - Kasami (CYK)

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 62: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Klassische DP-Probleme

1 Rucksack

2 Levenshtein/Edit - Distance

3 Longest Common Subsequence

4 Cocke - Younger - Kasami (CYK)

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 63: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Klassische DP-Probleme

1 Rucksack

2 Levenshtein/Edit - Distance

3 Longest Common Subsequence

4 Cocke - Younger - Kasami (CYK)

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 64: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Klassische DP-Probleme

1 Rucksack

2 Levenshtein/Edit - Distance

3 Longest Common Subsequence

4 Cocke - Younger - Kasami (CYK)

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 65: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Edit/Levenshtein - Distance

Gegeben seien zwei Zeichenketten P = p1 . . . pn undT = t1 . . . tm.

Wir konnen folgende Operationen auf diesen Kettendurchfuhren:

1 Ersetzen: meer → mehr2 Einfugen: dof → doof3 Loschen: interressant → interessant

Alle Operationen sind gleich teuer.

Die Levenshtein-Distance bezeichnet die minimale Anzahl anOperationen, um P in T umzuwandeln.

Aufgabe: Berechne die Levenshtein-Distance!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 66: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Edit/Levenshtein - Distance

Gegeben seien zwei Zeichenketten P = p1 . . . pn undT = t1 . . . tm.

Wir konnen folgende Operationen auf diesen Kettendurchfuhren:

1 Ersetzen: meer → mehr2 Einfugen: dof → doof3 Loschen: interressant → interessant

Alle Operationen sind gleich teuer.

Die Levenshtein-Distance bezeichnet die minimale Anzahl anOperationen, um P in T umzuwandeln.

Aufgabe: Berechne die Levenshtein-Distance!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 67: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Edit/Levenshtein - Distance

Gegeben seien zwei Zeichenketten P = p1 . . . pn undT = t1 . . . tm.

Wir konnen folgende Operationen auf diesen Kettendurchfuhren:

1 Ersetzen: meer → mehr2 Einfugen: dof → doof3 Loschen: interressant → interessant

Alle Operationen sind gleich teuer.

Die Levenshtein-Distance bezeichnet die minimale Anzahl anOperationen, um P in T umzuwandeln.

Aufgabe: Berechne die Levenshtein-Distance!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 68: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Edit/Levenshtein - Distance

Gegeben seien zwei Zeichenketten P = p1 . . . pn undT = t1 . . . tm.

Wir konnen folgende Operationen auf diesen Kettendurchfuhren:

1 Ersetzen: meer → mehr2 Einfugen: dof → doof3 Loschen: interressant → interessant

Alle Operationen sind gleich teuer.

Die Levenshtein-Distance bezeichnet die minimale Anzahl anOperationen, um P in T umzuwandeln.

Aufgabe: Berechne die Levenshtein-Distance!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 69: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Edit/Levenshtein - Distance

Gegeben seien zwei Zeichenketten P = p1 . . . pn undT = t1 . . . tm.

Wir konnen folgende Operationen auf diesen Kettendurchfuhren:

1 Ersetzen: meer → mehr2 Einfugen: dof → doof3 Loschen: interressant → interessant

Alle Operationen sind gleich teuer.

Die Levenshtein-Distance bezeichnet die minimale Anzahl anOperationen, um P in T umzuwandeln.

Aufgabe: Berechne die Levenshtein-Distance!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 70: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Edit/Levenshtein - Distance

Gegeben seien zwei Zeichenketten P = p1 . . . pn undT = t1 . . . tm.

Wir konnen folgende Operationen auf diesen Kettendurchfuhren:

1 Ersetzen: meer → mehr2 Einfugen: dof → doof3 Loschen: interressant → interessant

Alle Operationen sind gleich teuer.

Die Levenshtein-Distance bezeichnet die minimale Anzahl anOperationen, um P in T umzuwandeln.

Aufgabe: Berechne die Levenshtein-Distance!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 71: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Berechnung der Levenshtein - Distance

Klar: Optimierungsproblem

Bezeichne mit LD(i , j) die minimale Anzahl an Operationen,um p1 . . . pi in t1 . . . tj umzuwandeln.

Optimale Substruktur und rekursive Formulierung

Angenommen wir wollen LD(i , j) berechnen:1 Ubereinstimmung oder Ersetzen: LD(i , j) = LD(i − 1, j − 1)

oder LD(i , j) = LD(i − 1, j − 1) + 12 Einfugen: LD(i , j) = LD(i − 1, j) + 13 Loschen: LD(i , j) = LD(i , j − 1) + 1

Mit diesem Wissen lasst sich nun eine DP Formulierungfinden.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 72: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Berechnung der Levenshtein - Distance

Klar: Optimierungsproblem

Bezeichne mit LD(i , j) die minimale Anzahl an Operationen,um p1 . . . pi in t1 . . . tj umzuwandeln.

Optimale Substruktur und rekursive Formulierung

Angenommen wir wollen LD(i , j) berechnen:

1 Ubereinstimmung oder Ersetzen: LD(i , j) = LD(i − 1, j − 1)oder LD(i , j) = LD(i − 1, j − 1) + 1

2 Einfugen: LD(i , j) = LD(i − 1, j) + 13 Loschen: LD(i , j) = LD(i , j − 1) + 1

Mit diesem Wissen lasst sich nun eine DP Formulierungfinden.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 73: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Berechnung der Levenshtein - Distance

Klar: Optimierungsproblem

Bezeichne mit LD(i , j) die minimale Anzahl an Operationen,um p1 . . . pi in t1 . . . tj umzuwandeln.

Optimale Substruktur und rekursive Formulierung

Angenommen wir wollen LD(i , j) berechnen:1 Ubereinstimmung oder Ersetzen: LD(i , j) = LD(i − 1, j − 1)

oder LD(i , j) = LD(i − 1, j − 1) + 1

2 Einfugen: LD(i , j) = LD(i − 1, j) + 13 Loschen: LD(i , j) = LD(i , j − 1) + 1

Mit diesem Wissen lasst sich nun eine DP Formulierungfinden.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 74: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Berechnung der Levenshtein - Distance

Klar: Optimierungsproblem

Bezeichne mit LD(i , j) die minimale Anzahl an Operationen,um p1 . . . pi in t1 . . . tj umzuwandeln.

Optimale Substruktur und rekursive Formulierung

Angenommen wir wollen LD(i , j) berechnen:1 Ubereinstimmung oder Ersetzen: LD(i , j) = LD(i − 1, j − 1)

oder LD(i , j) = LD(i − 1, j − 1) + 12 Einfugen: LD(i , j) = LD(i − 1, j) + 1

3 Loschen: LD(i , j) = LD(i , j − 1) + 1

Mit diesem Wissen lasst sich nun eine DP Formulierungfinden.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 75: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Berechnung der Levenshtein - Distance

Klar: Optimierungsproblem

Bezeichne mit LD(i , j) die minimale Anzahl an Operationen,um p1 . . . pi in t1 . . . tj umzuwandeln.

Optimale Substruktur und rekursive Formulierung

Angenommen wir wollen LD(i , j) berechnen:1 Ubereinstimmung oder Ersetzen: LD(i , j) = LD(i − 1, j − 1)

oder LD(i , j) = LD(i − 1, j − 1) + 12 Einfugen: LD(i , j) = LD(i − 1, j) + 13 Loschen: LD(i , j) = LD(i , j − 1) + 1

Mit diesem Wissen lasst sich nun eine DP Formulierungfinden.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 76: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Berechnung der Levenshtein - Distance

Klar: Optimierungsproblem

Bezeichne mit LD(i , j) die minimale Anzahl an Operationen,um p1 . . . pi in t1 . . . tj umzuwandeln.

Optimale Substruktur und rekursive Formulierung

Angenommen wir wollen LD(i , j) berechnen:1 Ubereinstimmung oder Ersetzen: LD(i , j) = LD(i − 1, j − 1)

oder LD(i , j) = LD(i − 1, j − 1) + 12 Einfugen: LD(i , j) = LD(i − 1, j) + 13 Loschen: LD(i , j) = LD(i , j − 1) + 1

Mit diesem Wissen lasst sich nun eine DP Formulierungfinden.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 77: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Berechnung der Levenshtein - Distance

Klar: Optimierungsproblem

Bezeichne mit LD(i , j) die minimale Anzahl an Operationen,um p1 . . . pi in t1 . . . tj umzuwandeln.

Optimale Substruktur und rekursive Formulierung

Angenommen wir wollen LD(i , j) berechnen:1 Ubereinstimmung oder Ersetzen: LD(i , j) = LD(i − 1, j − 1)

oder LD(i , j) = LD(i − 1, j − 1) + 12 Einfugen: LD(i , j) = LD(i − 1, j) + 13 Loschen: LD(i , j) = LD(i , j − 1) + 1

Mit diesem Wissen lasst sich nun eine DP Formulierungfinden.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 78: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Beispiel

A C M

0 1 2 3

I 1

C 2

P 3

C 4

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 79: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Beispiel

A C M

0 1 2 3

I 1 1 2 3

C 2 2

1 2

P 3 3 2 2

C 4 4 3 3

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 80: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Beispiel

A C M

0 1 2 3

I 1 1 2 3

C 2 2 1

2

P 3 3 2 2

C 4 4 3 3

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 81: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Beispiel

A C M

0 1 2 3

I 1 1 2 3

C 2 2 1 2

P 3 3 2 2

C 4 4 3 3

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 82: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Beispiel

A C M

0 1 2 3

I 1 1 2 3

C 2 2 1 2

P 3 3 2 2

C 4 4 3 3

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 83: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Beispiel

A C M

0 1 2 3

I 1 1 2 3

C 2 2 1 2

P 3 3 2 2

C 4 4 3 3

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 84: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Longest-Common-Subsequence

LCS - Problemstellung

Gegeben seien zwei Strings P und T , finde die langste gemeinsameSubsequenz. (Bsp. Zitrone und Zisterne)

Dieses Problem ist der Levenshtein-Distance sehr ahnlich:

Wenn wir das Ersetzen nicht zulassen (sehr teuer machen),erhalten wir die minimale Anzahl an Einfuge- undLoschoperationen.

Die langste gemeinsame Sequenz bleibt dabei erhalten!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 85: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Longest-Common-Subsequence

LCS - Problemstellung

Gegeben seien zwei Strings P und T , finde die langste gemeinsameSubsequenz. (Bsp. Zitrone und Zisterne)

Dieses Problem ist der Levenshtein-Distance sehr ahnlich:

Wenn wir das Ersetzen nicht zulassen (sehr teuer machen),erhalten wir die minimale Anzahl an Einfuge- undLoschoperationen.

Die langste gemeinsame Sequenz bleibt dabei erhalten!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 86: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Longest-Common-Subsequence

LCS - Problemstellung

Gegeben seien zwei Strings P und T , finde die langste gemeinsameSubsequenz. (Bsp. Zitrone und Zisterne)

Dieses Problem ist der Levenshtein-Distance sehr ahnlich:

Wenn wir das Ersetzen nicht zulassen (sehr teuer machen),erhalten wir die minimale Anzahl an Einfuge- undLoschoperationen.

Die langste gemeinsame Sequenz bleibt dabei erhalten!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 87: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Longest-Common-Subsequence

LCS - Problemstellung

Gegeben seien zwei Strings P und T , finde die langste gemeinsameSubsequenz. (Bsp. Zitrone und Zisterne)

Dieses Problem ist der Levenshtein-Distance sehr ahnlich:

Wenn wir das Ersetzen nicht zulassen (sehr teuer machen),erhalten wir die minimale Anzahl an Einfuge- undLoschoperationen.

Die langste gemeinsame Sequenz bleibt dabei erhalten!

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 88: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Cocke-Younger-Kasami Algorithmus

CYK - Algorithmus

Der Algorithmus von Casami-Younger-Kocke lost das Problem, obein Wort w zu einer vorgegebenen kontextfreien Sprache L gehort.Dabei muss die Gramatik G der Sprache L(G ) inChomsky-Normalform vorliegen.

1 Es sei ein Wort w = w1 . . . wn gegeben. Wenn w in L(G )liegt, dann gibt es eine Folge von Produktionen, sodassS → AB → . . .→ w gilt.

2 Damit existiert insbesondere ein Index i ∈ [1, n − 1], sodassw1 . . . wi ein Produkt von A und wi+1 . . . wn ein Produkt vonB ist.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 89: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Cocke-Younger-Kasami Algorithmus

CYK - Algorithmus

Der Algorithmus von Casami-Younger-Kocke lost das Problem, obein Wort w zu einer vorgegebenen kontextfreien Sprache L gehort.Dabei muss die Gramatik G der Sprache L(G ) inChomsky-Normalform vorliegen.

1 Es sei ein Wort w = w1 . . . wn gegeben. Wenn w in L(G )liegt, dann gibt es eine Folge von Produktionen, sodassS → AB → . . .→ w gilt.

2 Damit existiert insbesondere ein Index i ∈ [1, n − 1], sodassw1 . . . wi ein Produkt von A und wi+1 . . . wn ein Produkt vonB ist.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 90: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Cocke-Younger-Kasami Algorithmus

CYK - Algorithmus

Der Algorithmus von Casami-Younger-Kocke lost das Problem, obein Wort w zu einer vorgegebenen kontextfreien Sprache L gehort.Dabei muss die Gramatik G der Sprache L(G ) inChomsky-Normalform vorliegen.

1 Es sei ein Wort w = w1 . . . wn gegeben. Wenn w in L(G )liegt, dann gibt es eine Folge von Produktionen, sodassS → AB → . . .→ w gilt.

2 Damit existiert insbesondere ein Index i ∈ [1, n − 1], sodassw1 . . . wi ein Produkt von A und wi+1 . . . wn ein Produkt vonB ist.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 91: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Fortsetzung CYK

1 Daraus lasst sich ein rekursiver Ansatz ableiten.

2 Wir fuhren eine boolsche Funktion M(i , j , X ) ein, die genaudann wahr ist, wenn sich wi . . . wj aus X ableiten lasst.

3 Um M(i , j , X ) zu berechnen, werten wir alle Produktionen vonX aus M(i , j , X ) =

∨(X→YZ∈G)(

∨ji=k M(i , k , Y ) ∧M(k , j , Z ))

4 Wenn M(1, n, S) wahr ist, liegt w in L(G ).

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 92: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Fortsetzung CYK

1 Daraus lasst sich ein rekursiver Ansatz ableiten.

2 Wir fuhren eine boolsche Funktion M(i , j , X ) ein, die genaudann wahr ist, wenn sich wi . . . wj aus X ableiten lasst.

3 Um M(i , j , X ) zu berechnen, werten wir alle Produktionen vonX aus M(i , j , X ) =

∨(X→YZ∈G)(

∨ji=k M(i , k , Y ) ∧M(k , j , Z ))

4 Wenn M(1, n, S) wahr ist, liegt w in L(G ).

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 93: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Fortsetzung CYK

1 Daraus lasst sich ein rekursiver Ansatz ableiten.

2 Wir fuhren eine boolsche Funktion M(i , j , X ) ein, die genaudann wahr ist, wenn sich wi . . . wj aus X ableiten lasst.

3 Um M(i , j , X ) zu berechnen, werten wir alle Produktionen vonX aus M(i , j , X ) =

∨(X→YZ∈G)(

∨ji=k M(i , k , Y ) ∧M(k , j , Z ))

4 Wenn M(1, n, S) wahr ist, liegt w in L(G ).

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 94: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Fortsetzung CYK

1 Daraus lasst sich ein rekursiver Ansatz ableiten.

2 Wir fuhren eine boolsche Funktion M(i , j , X ) ein, die genaudann wahr ist, wenn sich wi . . . wj aus X ableiten lasst.

3 Um M(i , j , X ) zu berechnen, werten wir alle Produktionen vonX aus M(i , j , X ) =

∨(X→YZ∈G)(

∨ji=k M(i , k , Y ) ∧M(k , j , Z ))

4 Wenn M(1, n, S) wahr ist, liegt w in L(G ).

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 95: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Beispiel: Self-Replicating Worms

Ein Stuck Quantonium fiel auf einige Erdwurmer, die dadurch inmehrere Teile zerlegt wurden. Die einzelnen Korperteile derWurmer fingen kurz darauf an, sich zu reproduzieren, wobei sichmanche Korperteile nicht mehr verandern, andere jedoch. EineReproduktion lauft immer nach folgendem Schema ab:K → AB.Alle Wurmer, die uber eine Kette von Reproduktionen aus demKorperteil “bowel” entstanden sind, sind bose, die anderen nicht.General W.R. Monger mochte nun wissen, ob ein gegebener Wurmbose ist oder nicht.Aufgabe: Finde aus den gegebenen Reproduktionsmechanismenheraus, ob ein Wurm gut oder bose ist.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 96: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Edit / Levenshtein - DistanceLongest-Common-SubsequenceCYK

Fragen

Noch Fragen?

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 97: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Zum Warmwerden: Welcome to Code Jam (Google CodeJam 2009)

Eingabe

Ein String mit maximal 500 Zeichen (Kleinbuchstaben undLeerzeichen)

Ausgabe

Wie oft ist der String welcome to code jam (mit Leerzeichen) alsSubsequence vor? Dabei sollen nur die letzten 4 Ziffern der Zahlausgegeben werden.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 98: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Beispieleingabe

Input Outputelcomew elcome to code jam Case 1: 0001

wweellccoommee to code qps jam Case 2: 0256welcome to codejam Case 3: 0000

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 99: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Aufgabe 2: Is bigger smarter (UVA 10131)

Problem

Einige Leute behaupten, je schwerer ein Elefant ist, desto klugersei er. Um diese Theorie zu widerlegen, sollen aus einer gegebenenListe von Elefanten (mit Gewicht und IQ) moglichst viele Elefantengefunden werden, sodass alle Gewichte und IQs der Elefantenverschieden und der IQ eines schwereren Elefanten geringer als dereines leichteren ist.

Input

Eine Liste mit dem Gewicht und IQ des jeweiligen Elefanten.

Output

Die großte Anzahl der Elefanten, die diesem Kriterium entsprechensowie deren Indizes in der Anfangsreihenfolge.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 100: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Aufgabe 2: Is bigger smarter (UVA 10131)

Problem

Einige Leute behaupten, je schwerer ein Elefant ist, desto klugersei er. Um diese Theorie zu widerlegen, sollen aus einer gegebenenListe von Elefanten (mit Gewicht und IQ) moglichst viele Elefantengefunden werden, sodass alle Gewichte und IQs der Elefantenverschieden und der IQ eines schwereren Elefanten geringer als dereines leichteren ist.

Input

Eine Liste mit dem Gewicht und IQ des jeweiligen Elefanten.

Output

Die großte Anzahl der Elefanten, die diesem Kriterium entsprechensowie deren Indizes in der Anfangsreihenfolge.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 101: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Aufgabe 2: Is bigger smarter (UVA 10131)

Problem

Einige Leute behaupten, je schwerer ein Elefant ist, desto klugersei er. Um diese Theorie zu widerlegen, sollen aus einer gegebenenListe von Elefanten (mit Gewicht und IQ) moglichst viele Elefantengefunden werden, sodass alle Gewichte und IQs der Elefantenverschieden und der IQ eines schwereren Elefanten geringer als dereines leichteren ist.

Input

Eine Liste mit dem Gewicht und IQ des jeweiligen Elefanten.

Output

Die großte Anzahl der Elefanten, die diesem Kriterium entsprechensowie deren Indizes in der Anfangsreihenfolge.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 102: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Aufgabe 3: Ferryloading (UVA 10261)

Problem

Um uber eine Fluss zu gelangen, warten n Autos in einerWarteschlange vor einer Fahre. Der Kapitan der zweispurigenFahre teilt die Autos auf die linke oder rechte Fahrseite ein. Dabeiist die Reihenfolge der Autos fest vorgegeben und die Gesamtlangeder Autoschlangen auf beiden Seiten der Fahre darf die Lange derFahre nicht uberschreiten. Aufgrund seiner Erfahrung kann derKapitan die Langen der einzelnen Autos abschatzen.Mit dieser Information soll nun ein Programm geschrieben werden,welches fur eine gegebene Schlange von Autos die optimaleZuteilung bestimmt.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 103: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Fortsetzung zu Ferryloading

Input

Die Anzahl der Autos sowie die einzelnen Langen.

Output

Die Anzahl der Autos, die auf die Fahre passen, dazu fur jedesAuto entweder ein “Left” oder “Right”, je nach dem, auf welcheSeite der Fahre das Auto geschickt wird.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 104: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Fortsetzung zu Ferryloading

Input

Die Anzahl der Autos sowie die einzelnen Langen.

Output

Die Anzahl der Autos, die auf die Fahre passen, dazu fur jedesAuto entweder ein “Left” oder “Right”, je nach dem, auf welcheSeite der Fahre das Auto geschickt wird.

Armin Krupp Dynamische Programmierung - wettkampforientiert

Page 105: Grundlagen der Dynamischen Programmierung Die klassischen ...€¦ · Die klassischen DP-Probleme Aufgaben Literatur Vorgehensweise am Beispiel des Rucksackproblems Zusammenfassung

Grundlagen der Dynamischen ProgrammierungDie klassischen DP-Probleme

AufgabenLiteratur

Literatur

T. Cormen et. al.Introduction to AlgorithmsMIT Press 2007

Steven S. SkienaThe Algorithm Design ManualSpringer 2008

Armin Krupp Dynamische Programmierung - wettkampforientiert