Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische...

65
Vorlesungstermin 10: Dynamische Programmierung II Markus Püschel David Steurer talks2.dsteurer.org/dp2.pdf Algorithmen und Datenstrukturen, Herbstsemester 2018, ETH Zürich

Transcript of Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische...

Page 1: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Vorlesungstermin 10:

DynamischeProgrammierung II

Markus PüschelDavid Steurer

talks2.dsteurer.org/dp2.pdf

Algorithmen und Datenstrukturen, Herbstsemester 2018, ETH Zürich

Page 2: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Plan für heute

Dynamische Programmierung (DP)(Bezeichnung hat lediglich historische Gründe)

[Richard Bellman 1953]

• allgemeine Methode

• weitere Beispiele:

Matrixkettenmultiplikation (fortgesetzt von letztem Mal)

Teilsummenproblem (Englisch: ������ ���)

Rucksackproblem (Englisch: ��������)

Page 3: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

DP: allgemeine Methode

Page 4: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

DP: allgemeine Methode1. Zerlegung in Teilprobleme und Aufstellung einer Rekurrenzzwischen (optimalen) Lösungen dieser Teilprobleme

Page 5: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

DP: allgemeine Methode1. Zerlegung in Teilprobleme und Aufstellung einer Rekurrenzzwischen (optimalen) Lösungen dieser Teilprobleme

= längste gem. Teilfolge von und T (m, n) a ⋯ a1 m b ⋯ b1 n

T (m, n) = {T (m − 1, n − 1) + 1max{T (m − 1, n), T (m, n − 1)}

falls a = bm m

sonst

Page 6: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

DP: allgemeine Methode1. Zerlegung in Teilprobleme und Aufstellung einer Rekurrenzzwischen (optimalen) Lösungen dieser Teilprobleme

= längste gem. Teilfolge von und

2. Effiziente Berechnung dieser Rekurrenz in einer Tabelle(initialisiere “einfache” Einträge und bestimme geeigneteReihenfolge aller anderen Einträge)

T (m, n) a ⋯ a1 m b ⋯ b1 n

T (m, n) = {T (m − 1, n − 1) + 1max{T (m − 1, n), T (m, n − 1)}

falls a = bm m

sonst

Page 7: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

DP: allgemeine Methode1. Zerlegung in Teilprobleme und Aufstellung einer Rekurrenzzwischen (optimalen) Lösungen dieser Teilprobleme

= längste gem. Teilfolge von und

2. Effiziente Berechnung dieser Rekurrenz in einer Tabelle(initialisiere “einfache” Einträge und bestimme geeigneteReihenfolge aller anderen Einträge)

T (m, n) a ⋯ a1 m b ⋯ b1 n

T (m, n) = {T (m − 1, n − 1) + 1max{T (m − 1, n), T (m, n − 1)}

falls a = bm m

sonst

Page 8: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

DP: allgemeine Methode1. Zerlegung in Teilprobleme und Aufstellung einer Rekurrenzzwischen (optimalen) Lösungen dieser Teilprobleme

2. Effiziente Berechnung dieser Rekurrenz in einer Tabelle(initialisiere “einfache” Einträge und bestimme geeigneteReihenfolge aller anderen Einträge)

3. Rekonstruktion einer (opt.) Lösung anhand der Tabelle

Page 9: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

DP: allgemeine Methode1. Zerlegung in Teilprobleme und Aufstellung einer Rekurrenzzwischen (optimalen) Lösungen dieser Teilprobleme

2. Effiziente Berechnung dieser Rekurrenz in einer Tabelle(initialisiere “einfache” Einträge und bestimme geeigneteReihenfolge aller anderen Einträge)

3. Rekonstruktion einer (opt.) Lösung anhand der Tabelle

Page 10: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Matrixkettenmultiplikationgegeben: Matrizen

gesucht: Produkt

A , … , A1 n

A ⋯ A1 n

Page 11: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Matrixkettenmultiplikationgegeben: Matrizen

gesucht: Produkt

Matrixmultiplikation zwar nicht kommutativ, aber assoziativ

je nach Klammerung haben wir unterschiedliche Kosten

A , … , A1 n

A ⋯ A1 n

Page 12: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Matrixkettenmultiplikationgegeben: Matrizen

gesucht: Produkt

Matrixmultiplikation zwar nicht kommutativ, aber assoziativ

je nach Klammerung haben wir unterschiedliche Kosten

braucht Schritte

A , … , A1 n

A ⋯ A1 n

⋅ ⋅⎝⎜⎛

⎣⎢⎡a1

⋮ak

⎦⎥⎤

[b1 ⋯ bk]⎠⎟⎞

⎣⎢⎡c1

⋮ck

⎦⎥⎤

Θ(k )2

Page 13: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Matrixkettenmultiplikationgegeben: Matrizen

gesucht: Produkt

Matrixmultiplikation zwar nicht kommutativ, aber assoziativ

je nach Klammerung haben wir unterschiedliche Kosten

braucht Schritte

braucht Schritte

A , … , A1 n

A ⋯ A1 n

⋅ ⋅⎝⎜⎛

⎣⎢⎡a1

⋮ak

⎦⎥⎤

[b1 ⋯ bk]⎠⎟⎞

⎣⎢⎡c1

⋮ck

⎦⎥⎤

Θ(k )2

⋅⎣⎢⎡a1

⋮ak

⎦⎥⎤

⋅⎝⎜⎛

[b1 ⋯ bk] ⎣⎢⎡c1

⋮ck

⎦⎥⎤

⎠⎟⎞

Θ(k)

Page 14: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Matrixkettenmultiplikationgegeben: Matrizen

gesucht: Produkt

Matrixmultiplikation zwar nicht kommutativ, aber assoziativ

je nach Klammerung haben wir unterschiedliche Kosten

braucht Schritte

braucht Schritte

gesucht: Klammerung mit minimalen Kosten

A , … , A1 n

A ⋯ A1 n

⋅ ⋅⎝⎜⎛

⎣⎢⎡a1

⋮ak

⎦⎥⎤

[b1 ⋯ bk]⎠⎟⎞

⎣⎢⎡c1

⋮ck

⎦⎥⎤

Θ(k )2

⋅⎣⎢⎡a1

⋮ak

⎦⎥⎤

⋅⎝⎜⎛

[b1 ⋯ bk] ⎣⎢⎡c1

⋮ck

⎦⎥⎤

⎠⎟⎞

Θ(k)

Page 15: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

gegeben: Matrizen

gesucht: Klammerung mit minimalen Kosten

Einsicht: optimale Klammerung von besteht auseiner Multiplikation von mit und denoptimalen Klammerungen von und

A , … , A1 n

A ⋯ A1 n

A ⋯ A1 i A ⋯ Ai+1 n

A ⋯ A1 i A ⋯ Ai+1 n

Page 16: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

gegeben: Matrizen

gesucht: Klammerung mit minimalen Kosten

Einsicht: optimale Klammerung von besteht auseiner Multiplikation von mit und denoptimalen Klammerungen von und

Zerlegung in Teilprobleme:

minimale Kosten einer Klammerung von

A , … , A1 n

A ⋯ A1 n

A ⋯ A1 i A ⋯ Ai+1 n

A ⋯ A1 i A ⋯ Ai+1 n

T (p, q) := A ⋯ Ap q

Page 17: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

gegeben: Matrizen

gesucht: Klammerung mit minimalen Kosten

Einsicht: optimale Klammerung von besteht auseiner Multiplikation von mit und denoptimalen Klammerungen von und

Zerlegung in Teilprobleme:

minimale Kosten einer Klammerung von

Rekurrenz zwischen Teilproblemen:

,wobei Kosten der Mult. von mit

A , … , A1 n

A ⋯ A1 n

A ⋯ A1 i A ⋯ Ai+1 n

A ⋯ A1 i A ⋯ Ai+1 n

T (p, q) := A ⋯ Ap q

T (p, q) = min T (p, i) + T (i + 1, q) + Cp⩽i<q { p,i,q}C =p,i,q A ⋯ Ap i A ⋯ Ai+1 q

Page 18: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

gegeben: Matrizen

gesucht: Klammerung mit minimalen Kosten

minimale Kosten einer Klammerung von

,wobei Kosten der Mult. von mit

Algorithmus: initialisiere für alle ; dannverwende Rekurrenz zur Berechnung alle Einträge der Form

; danach alle Einträge der Form ; usw.

A , … , A1 n

T (p, q) := A ⋯ Ap q

T (p, q) = min T (p, i) + T (i + 1, q) + Cp⩽i<q { p,i,q}C =p,i,q A ⋯ Ap i A ⋯ Ai+1 q

T (p, p) = 0 p

T (p, p + 1) T (p, p + 2)

Page 19: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

gegeben: Matrizen

gesucht: Klammerung mit minimalen Kosten

minimale Kosten einer Klammerung von

,wobei Kosten der Mult. von mit

Algorithmus: initialisiere für alle ; dannverwende Rekurrenz zur Berechnung alle Einträge der Form

; danach alle Einträge der Form ; usw.

Laufzeit: Schritte pro Eintragder Tabelle; Tabelleneinträge

Laufzeit

A , … , A1 n

T (p, q) := A ⋯ Ap q

T (p, q) = min T (p, i) + T (i + 1, q) + Cp⩽i<q { p,i,q}C =p,i,q A ⋯ Ap i A ⋯ Ai+1 q

T (p, p) = 0 p

T (p, p + 1) T (p, p + 2)

O(n)O(n )2

⇝ O(n )3

Page 20: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

source: https://xkcd.com/287/

Page 21: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Teilsummenproblemgegeben: natürliche Zahlen und gesucht: eine Teilmenge so dass

a , … , a1 n b

S ⊆ [n] a =∑i∈S i b

Page 22: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Teilsummenproblemgegeben: natürliche Zahlen und gesucht: eine Teilmenge so dass

Beispiel: ist eine Teilsumme von ?

a , … , a1 n b

S ⊆ [n] a =∑i∈S i b

9 1, 1, 4, 5, 7

Page 23: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Teilsummenproblemgegeben: natürliche Zahlen und gesucht: eine Teilmenge so dass

Beispiel: ist eine Teilsumme von ?

naiver Algorithmus: alle Teilmengen durchprobieren;exponentielle Laufzeit ☹

a , … , a1 n b

S ⊆ [n] a =∑i∈S i b

9 1, 1, 4, 5, 7

2n

Page 24: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

gegeben: natürliche Zahlen und gesucht: eine Teilmenge so dass

Einsicht: falls Lösung existiert, dann muss oder eineTeilsumme von sein

a , … , a1 n b

S ⊆ [n] a =∑i∈S i b

b b − an

a , … , a1 n−1

Page 25: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

gegeben: natürliche Zahlen und gesucht: eine Teilmenge so dass

Einsicht: falls Lösung existiert, dann muss oder eineTeilsumme von sein

Zerlegung in Teilprobleme: Wahrheitswert derAussage “ ist Teilsumme von ”

a , … , a1 n b

S ⊆ [n] a =∑i∈S i b

b b − an

a , … , a1 n−1

T (k, s) :=s a , … , a1 k

Page 26: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

gegeben: natürliche Zahlen und gesucht: eine Teilmenge so dass

Einsicht: falls Lösung existiert, dann muss oder eineTeilsumme von sein

Zerlegung in Teilprobleme: Wahrheitswert derAussage “ ist Teilsumme von ”

Rekurrenz zwischen Teilproblemen:

a , … , a1 n b

S ⊆ [n] a =∑i∈S i b

b b − an

a , … , a1 n−1

T (k, s) :=s a , … , a1 k

T (k, s) = T (k − 1, s) ∨ T (k − 1, s − a )k

Page 27: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

“ ist Teilsumme von ” ?

Berechnung: betrachte ; initialisiere ;verwende Rekurrenz um Einträge der Form zuberechnen; danach Einträge der Form ; usw.

T (k, s) := s a , … , a1 k

T (k, s) = T (k − 1, s) ∨ T (k − 1, s − a )k

s ∈ {0, … , b} T (0, s)T (1, s)

T (2, s)

Page 28: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

“ ist Teilsumme von ” ?

Berechnung: betrachte ; initialisiere ;verwende Rekurrenz um Einträge der Form zuberechnen; danach Einträge der Form ; usw.

Laufzeit:n Schritte pro Eintrag;

Tabelleneinträge Laufzeit

T (k, s) := s a , … , a1 k

T (k, s) = T (k − 1, s) ∨ T (k − 1, s − a )k

s ∈ {0, … , b} T (0, s)T (1, s)

T (2, s)

O(1)O(b ⋅ n)⇝ O(b ⋅ n)

Page 29: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

“ ist Teilsumme von ” ?

Pseudocode: (mit nur Speicher)

für alle und für :

für :falls und , dann

T (k, s) := s a , … , a1 k

T (k, s) = T (k − 1, s) ∨ T (k − 1, s − a )k

O(b)

T [s] ← 0 s ∈ {1, … , b} T [0] ← 1k = 1 … n

s = b … 0s ⩾ ak T [s − a ] =k 1 T [s] ← 1

Page 30: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Effizienzgerade gesehen: wir können in Schritten ent-scheiden, ob eine Teilsumme von ist

O(b ⋅ n)b ∈ N a , … , a ∈1 n N

Page 31: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Effizienzgerade gesehen: wir können in Schritten ent-scheiden, ob eine Teilsumme von ist

ist diese Laufzeit “effizient”?

O(b ⋅ n)b ∈ N a , … , a ∈1 n N

Page 32: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Effizienzgerade gesehen: wir können in Schritten ent-scheiden, ob eine Teilsumme von ist

ist diese Laufzeit “effizient”?

unser Effizienzbegriff: Laufzeit soll polynomiell im Verhältniszur Eingabegrösse sein

O(b ⋅ n)b ∈ N a , … , a ∈1 n N

Page 33: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Effizienzgerade gesehen: wir können in Schritten ent-scheiden, ob eine Teilsumme von ist

ist diese Laufzeit “effizient”?

unser Effizienzbegriff: Laufzeit soll polynomiell im Verhältniszur Eingabegrösse sein

was ist die Eingabegrösse beim Teilsummenproblem?

O(b ⋅ n)b ∈ N a , … , a ∈1 n N

Page 34: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

unser Effizienzbegriff: Laufzeit soll polynomiell im Verhältniszur Eingabegrösse sein

was ist die Eingabegrösse beim Teilsummenproblem?

wir können annehmen; dann ist dieEingabegrösse zwischen und (wenn wir Zahlen vernünftig codieren, z.B. im Binärsystem)

a , … , a ⩽1 n b

Ω(n + log b) O(n ⋅ log b)

Page 35: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

unser Effizienzbegriff: Laufzeit soll polynomiell im Verhältniszur Eingabegrösse sein

was ist die Eingabegrösse beim Teilsummenproblem?

wir können annehmen; dann ist dieEingabegrösse zwischen und (wenn wir Zahlen vernünftig codieren, z.B. im Binärsystem)

z.B. für ist die Laufzeit des Teilsummen-algorithmus exponentiell in der Eingabegrösse! geht es besser?

a , … , a ⩽1 n b

Ω(n + log b) O(n ⋅ log b)

b = 2n O(b ⋅ n)

Page 36: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

unser Effizienzbegriff: Laufzeit soll polynomiell im Verhältniszur Eingabegrösse sein

was ist die Eingabegrösse beim Teilsummenproblem?

wir können annehmen; dann ist dieEingabegrösse zwischen und (wenn wir Zahlen vernünftig codieren, z.B. im Binärsystem)

z.B. für ist die Laufzeit des Teilsummen-algorithmus exponentiell in der Eingabegrösse! geht es besser?

wahrschneinlich nicht—ein polynomieller Algorithmus würdeder Vermutung widersprechen

a , … , a ⩽1 n b

Ω(n + log b) O(n ⋅ log b)

b = 2n O(b ⋅ n)

P = NP

Page 37: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

unser Effizienzbegriff: Laufzeit soll polynomiell im Verhältniszur Eingabegrösse sein

was ist die Eingabegrösse beim Teilsummenproblem?

wir können annehmen; dann ist dieEingabegrösse zwischen und (wenn wir Zahlen vernünftig codieren, z.B. im Binärsystem)

z.B. für ist die Laufzeit des Teilsummen-algorithmus exponentiell in der Eingabegrösse! geht es besser?

wahrschneinlich nicht—ein polynomieller Algorithmus würdeder Vermutung widersprechen

Zusatz: Laufzeit wird pseudo-polynomiell genannt, dasie polynomiell in ist, wenn alle Zahlen derEingabe polynomiell in sind

a , … , a ⩽1 n b

Ω(n + log b) O(n ⋅ log b)

b = 2n O(b ⋅ n)

P = NP

O(b ⋅ n)n a , … , a , b1 n

n

Page 38: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman
Page 39: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Rucksackproblemgegeben: Gegenstände mit Gewichten undNutzwerten , Gewichtsschranke gesucht: Teilmenge mit Gewicht undgrösstmöglichem Nutzwert

n w , … , w ∈1 n Nv , … , v ∈1 n N W

S w ⩽∑i∈S i W

v∑i∈S i

Page 40: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Rucksackproblemgegeben: Gegenstände mit Gewichten undNutzwerten , Gewichtsschranke gesucht: Teilmenge mit Gewicht undgrösstmöglichem Nutzwert

������ Algorithmus:sortiere Gegenstände absteigend nach “Profitabilität” ;wähle in dieser Reihenfolge solange Gewichtsschranke erfüllt

n w , … , w ∈1 n Nv , … , v ∈1 n N W

S w ⩽∑i∈S i W

v∑i∈S i

v /wi i

Page 41: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Rucksackproblemgegeben: Gegenstände mit Gewichten undNutzwerten , Gewichtsschranke gesucht: Teilmenge mit Gewicht undgrösstmöglichem Nutzwert

������ Algorithmus:sortiere Gegenstände absteigend nach “Profitabilität” ;wähle in dieser Reihenfolge solange Gewichtsschranke erfüllt

schlechter Fall für ������: Gegenstände und

n w , … , w ∈1 n Nv , … , v ∈1 n N W

S w ⩽∑i∈S i W

v∑i∈S i

v /wi i

(v , w ) =1 1 (1, 1)(v , w ) =2 2 (W − 1, W )

Page 42: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Rucksackproblemgegeben: Gegenstände mit Gewichten undNutzwerten , Gewichtsschranke gesucht: Teilmenge mit Gewicht undgrösstmöglichem Nutzwert

������ Algorithmus:sortiere Gegenstände absteigend nach “Profitabilität” ;wähle in dieser Reihenfolge solange Gewichtsschranke erfüllt

schlechter Fall für ������: Gegenstände und ������ liefert !

n w , … , w ∈1 n Nv , … , v ∈1 n N W

S w ⩽∑i∈S i W

v∑i∈S i

v /wi i

(v , w ) =1 1 (1, 1)(v , w ) =2 2 (W − 1, W ) ⇝ S = {1}

Page 43: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Rucksackproblemgegeben: Gegenstände mit Gewichten undNutzwerten , Gewichtsschranke gesucht: Teilmenge mit Gewicht undgrösstmöglichem Nutzwert

Einsicht: opt. Lösung besteht aus opt. Lösung für die ersten Gegenstände mit Gewichtsschranke oder

n w , … , w ∈1 n Nv , … , v ∈1 n N W

S w ⩽∑i∈S i W

v∑i∈S i

n − 1 W W − wn

Page 44: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Rucksackproblemgegeben: Gegenstände mit Gewichten undNutzwerten , Gewichtsschranke gesucht: Teilmenge mit Gewicht undgrösstmöglichem Nutzwert

Einsicht: opt. Lösung besteht aus opt. Lösung für die ersten Gegenstände mit Gewichtsschranke oder

Zerlegung in Teilprobleme: maximaler Nutzwertvon mit Gewichtsschranke

n w , … , w ∈1 n Nv , … , v ∈1 n N W

S w ⩽∑i∈S i W

v∑i∈S i

n − 1 W W − wn

T (i, w) :=S ⊆ {1, … , i} w

Page 45: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Rucksackproblemgegeben: Gegenstände mit Gewichten undNutzwerten , Gewichtsschranke gesucht: Teilmenge mit Gewicht undgrösstmöglichem Nutzwert

Einsicht: opt. Lösung besteht aus opt. Lösung für die ersten Gegenstände mit Gewichtsschranke oder

Zerlegung in Teilprobleme: maximaler Nutzwertvon mit Gewichtsschranke

Rekurrenz zwischen Teilproblemen:

n w , … , w ∈1 n Nv , … , v ∈1 n N W

S w ⩽∑i∈S i W

v∑i∈S i

n − 1 W W − wn

T (i, w) :=S ⊆ {1, … , i} w

T (i, w) = max{T (i − 1, w), v +i T (i − 1, w − w )}i

Page 46: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

maximaler Nutzwert von mitGewichtsschranke

Berechnung: betrachte und ;berechne Tabelle gemäss Rekurrenz ähnlich wie beimTeilsummenproblem

T (i, w) := S ⊆ {1, … , i}w

T (i, w) = max{T (i − 1, w), v +i T (i − 1, w − w )}i

i ∈ {1, … , n} w ∈ {0, … , W}

Page 47: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

maximaler Nutzwert von mitGewichtsschranke

Berechnung: betrachte und ;berechne Tabelle gemäss Rekurrenz ähnlich wie beimTeilsummenproblem

Laufzeit: pro Eintrag; Einträge Laufzeit (pseudo-polynomiell)

T (i, w) := S ⊆ {1, … , i}w

T (i, w) = max{T (i − 1, w), v +i T (i − 1, w − w )}i

i ∈ {1, … , n} w ∈ {0, … , W}

O(1) O(n ⋅ W )⇝ O(n ⋅ W )

Page 48: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Laufzeit: pro Eintrag; Einträge Laufzeit (pseudo-polynomiell)

Alternative Laufzeit: Variante dieses Algorithmus hatLaufzeit (auch pseudo-polynomiell)

O(1) O(n ⋅ W )⇝ O(n ⋅ W )

O(n ⋅ (v +1 ⋯ + v ))n

Page 49: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Laufzeit: pro Eintrag; Einträge Laufzeit (pseudo-polynomiell)

Alternative Laufzeit: Variante dieses Algorithmus hatLaufzeit (auch pseudo-polynomiell)

was können wir in echt-polynomieller Zeit erreichen?

O(1) O(n ⋅ W )⇝ O(n ⋅ W )

O(n ⋅ (v +1 ⋯ + v ))n

Page 50: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Laufzeit: pro Eintrag; Einträge Laufzeit (pseudo-polynomiell)

Alternative Laufzeit: Variante dieses Algorithmus hatLaufzeit (auch pseudo-polynomiell)

was können wir in echt-polynomieller Zeit erreichen?

nächstes Thema: beliebig gute Approximation zur optimalenLösung in echt-polynomieller Zeit—mithilfe des (zweiten)pseudo-polynomiellen Algorithmus

O(1) O(n ⋅ W )⇝ O(n ⋅ W )

O(n ⋅ (v +1 ⋯ + v ))n

Page 51: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Approximationsschema für Rucksackproblemgegeben: , , maximiere: unter Bedingung

w , … , w ∈1 n N v , … , v ∈1 n N W ∈ Nv∑i∈S i w ⩽∑i∈S i W

Page 52: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Approximationsschema für Rucksackproblemgegeben: , , maximiere: unter Bedingung

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

w , … , w ∈1 n N v , … , v ∈1 n N W ∈ Nv∑i∈S i w ⩽∑i∈S i W

K ∈ Nv =i

′ ⌊v /K⌋i

Page 53: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Approximationsschema für Rucksackproblemgegeben: , , maximiere: unter Bedingung

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

sei ; wir nehmen an

w , … , w ∈1 n N v , … , v ∈1 n N W ∈ Nv∑i∈S i w ⩽∑i∈S i W

K ∈ Nv =i

′ ⌊v /K⌋i

V = v +1 ⋯ + vn ∀i. w ⩽i W

Page 54: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Approximationsschema für Rucksackproblemgegeben: , , maximiere: unter Bedingung

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

sei ; wir nehmen an

Laufzeit:

w , … , w ∈1 n N v , … , v ∈1 n N W ∈ Nv∑i∈S i w ⩽∑i∈S i W

K ∈ Nv =i

′ ⌊v /K⌋i

V = v +1 ⋯ + vn ∀i. w ⩽i W

O(n ⋅ V /K)

Page 55: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Approximationsschema für Rucksackproblemgegeben: , , maximiere: unter Bedingung

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

sei ; wir nehmen an

Laufzeit:

was ist die Approximationsgüte?

w , … , w ∈1 n N v , … , v ∈1 n N W ∈ Nv∑i∈S i w ⩽∑i∈S i W

K ∈ Nv =i

′ ⌊v /K⌋i

V = v +1 ⋯ + vn ∀i. w ⩽i W

O(n ⋅ V /K)

Page 56: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Approximationsschema für Rucksackproblemgegeben: , , maximiere: unter Bedingung

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

sei ; wir nehmen an

Laufzeit:

was ist die Approximationsgüte?

betrachte optimale Lösungen und für und

w , … , w ∈1 n N v , … , v ∈1 n N W ∈ Nv∑i∈S i w ⩽∑i∈S i W

K ∈ Nv =i

′ ⌊v /K⌋i

V = v +1 ⋯ + vn ∀i. w ⩽i W

O(n ⋅ V /K)

S S′ {v }i {v }i′

Page 57: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Approximationsschema für Rucksackproblemgegeben: , , maximiere: unter Bedingung

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

sei ; wir nehmen an

Laufzeit:

was ist die Approximationsgüte?

betrachte optimale Lösungen und für und

Behauptung:

w , … , w ∈1 n N v , … , v ∈1 n N W ∈ Nv∑i∈S i w ⩽∑i∈S i W

K ∈ Nv =i

′ ⌊v /K⌋i

V = v +1 ⋯ + vn ∀i. w ⩽i W

O(n ⋅ V /K)

S S′ {v }i {v }i′

v ⩾∑i∈S′ i v −∑i∈S i n ⋅ K

Page 58: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

sei ; wir nehmen an

Laufzeit:

betrachte optimale Lösungen und für und

Behauptung:

unter Annahme der Behauptung: für , gilt

 

K ∈ Nv =i

′ ⌊v /K⌋i

V = v +1 ⋯ + vn ∀i. w ⩽i W

O(n ⋅ V /K)

S S′ {v }i {v }i′

v ⩾∑i∈S′ i v −∑i∈S i n ⋅ K

K = ϵ ⋅ V /n2

v ⩾∑i∈S′ i v −∑i∈S i ε ⋅ V /n

Page 59: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

sei ; wir nehmen an

Laufzeit:

betrachte optimale Lösungen und für und

Behauptung:

unter Annahme der Behauptung: für , gilt

 

da ja gilt (warum?)

K ∈ Nv =i

′ ⌊v /K⌋i

V = v +1 ⋯ + vn ∀i. w ⩽i W

O(n ⋅ V /K)

S S′ {v }i {v }i′

v ⩾∑i∈S′ i v −∑i∈S i n ⋅ K

K = ϵ ⋅ V /n2

v ⩾∑i∈S′ i v −∑i∈S i ε ⋅ V /n ⩾ (1 − ε) v∑i∈S i

v ⩾∑i∈S i V /n

Page 60: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

sei ; wir nehmen an

Laufzeit:

betrachte optimale Lösungen und für und

Behauptung:

unter Annahme der Behauptung: für , gilt

 

da ja gilt (da der wertigste Gegenstand einezulässige Lösung ist)

K ∈ Nv =i

′ ⌊v /K⌋i

V = v +1 ⋯ + vn ∀i. w ⩽i W

O(n ⋅ V /K)

S S′ {v }i {v }i′

v ⩾∑i∈S′ i v −∑i∈S i n ⋅ K

K = ϵ ⋅ V /n2

v ⩾∑i∈S′ i v −∑i∈S i ε ⋅ V /n ⩾ (1 − ε) v∑i∈S i

v ⩾∑i∈S i V /n

Page 61: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

betrachte optimale Lösungen und für und

Behauptung:

Beweis der Behauptung: da optimal für , gilt

K ∈ Nv =i

′ ⌊v /K⌋i

S S′ {v }i {v }i′

v ⩾∑i∈S′ i v −∑i∈S i n ⋅ K

S′ {v }i′

v ⩾i∈S′

∑ i′ v

i∈S

∑ i′

Page 62: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

betrachte optimale Lösungen und für und

Behauptung:

Beweis der Behauptung: da optimal für , gilt

zudem gilt ;

K ∈ Nv =i

′ ⌊v /K⌋i

S S′ {v }i {v }i′

v ⩾∑i∈S′ i v −∑i∈S i n ⋅ K

S′ {v }i′

v ⩾i∈S′

∑ i′ v

i∈S

∑ i′

v ⩾i K ⋅ v ⩾i′ v −i K

Page 63: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Idee: wähle geeignetes und finde optimale Lösung fürgerundete Nutzwerte (mittels dynamischer Prog.)

betrachte optimale Lösungen und für und

Behauptung:

Beweis der Behauptung: da optimal für , gilt

zudem gilt ; daher:

K ∈ Nv =i

′ ⌊v /K⌋i

S S′ {v }i {v }i′

v ⩾∑i∈S′ i v −∑i∈S i n ⋅ K

S′ {v }i′

v ⩾i∈S′

∑ i′ v

i∈S

∑ i′

v ⩾i K ⋅ v ⩾i′ v −i K

Page 64: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman

Ende

Page 65: Vorlesungstermin 10: Dynamische Programmierung II · 2018. 11. 23. · Plan für heute Dynamische Programmierung (DP) (Bezeichnung hat lediglich historische Gründe) [Richard Bellman