Top Banner
Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr¨ ankten Kapazit¨ at und verschiedene Gegenst¨ ande. Jeder Gegenstand hat eine gegebene Gr¨ oße und einen gegebenen Wert. Es gibt einen Zielwert. Frage: K¨ onnen wir Gegenst¨ ande ausw¨ ahlen, die in den Rucksack hineinpassen und deren zusammengez¨ ahlte Werte den Zielwert ¨ uberschreiten? Formaler: Definition Eingabe: Positive Integer (c 1 ,..., c n ), (v 1 ,..., v n ), und C Ausgabe: Der Maximalwert v , so daß es eine Menge I ⊆{1,..., n} gibt mit i I c i C i I v i = v
63

0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Jun 19, 2019

Download

Documents

vuongphuc
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

0/1-Knapsack

Gegeben sei ein Rucksack mit einer unbeschrankten Kapazitat und verschiedeneGegenstande. Jeder Gegenstand hat eine gegebene Große und einen gegebenen Wert.Es gibt einen Zielwert. Frage: Konnen wir Gegenstande auswahlen, die in den Rucksackhineinpassen und deren zusammengezahlte Werte den Zielwert uberschreiten?

Formaler:

Definition

Eingabe: Positive Integer (c1, . . . , cn), (v1, . . . , vn), und CAusgabe: Der Maximalwert v , so daß es eine Menge I ⊆ {1, . . . , n} gibt mit∑

i∈I ci ≤ C∑i∈I vi = v

Page 2: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

0/1-Knapsack

Gegeben sei ein Rucksack mit einer unbeschrankten Kapazitat und verschiedeneGegenstande. Jeder Gegenstand hat eine gegebene Große und einen gegebenen Wert.Es gibt einen Zielwert. Frage: Konnen wir Gegenstande auswahlen, die in den Rucksackhineinpassen und deren zusammengezahlte Werte den Zielwert uberschreiten?

Formaler:

Definition

Eingabe: Positive Integer (c1, . . . , cn), (v1, . . . , vn), und CAusgabe: Der Maximalwert v , so daß es eine Menge I ⊆ {1, . . . , n} gibt mit∑

i∈I ci ≤ C∑i∈I vi = v

Page 3: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 463, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

Knapsack

2

60

4

100

6

120

10

Rucksack

Page 4: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 463, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

Knapsack

10

4

6

= 220

100

120

10

2

4

= 160

60

100

10

2

6

= 180

60

120

Page 5: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 464, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

0/1-Knapsack

0/1-Knapsack kann durch brute force gelost werden, indem alle UntermengenI ⊆ {1, . . . , n} aufgezahlt werden und beide Bedingungen uberpruft werden.

Es gibt allerdings 2n solche Untermengen. Zu langsam!

Konnen wir dieses Problem durch dynamisches Programmieren losen?

Ja, indem alle Unterprobleme mit unterer Kapazitat zuerst gelost werden.

Page 6: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 464, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

0/1-Knapsack

0/1-Knapsack kann durch brute force gelost werden, indem alle UntermengenI ⊆ {1, . . . , n} aufgezahlt werden und beide Bedingungen uberpruft werden.

Es gibt allerdings 2n solche Untermengen. Zu langsam!

Konnen wir dieses Problem durch dynamisches Programmieren losen?

Ja, indem alle Unterprobleme mit unterer Kapazitat zuerst gelost werden.

Page 7: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 464, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

0/1-Knapsack

0/1-Knapsack kann durch brute force gelost werden, indem alle UntermengenI ⊆ {1, . . . , n} aufgezahlt werden und beide Bedingungen uberpruft werden.

Es gibt allerdings 2n solche Untermengen. Zu langsam!

Konnen wir dieses Problem durch dynamisches Programmieren losen?

Ja, indem alle Unterprobleme mit unterer Kapazitat zuerst gelost werden.

Page 8: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 464, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

0/1-Knapsack

0/1-Knapsack kann durch brute force gelost werden, indem alle UntermengenI ⊆ {1, . . . , n} aufgezahlt werden und beide Bedingungen uberpruft werden.

Es gibt allerdings 2n solche Untermengen. Zu langsam!

Konnen wir dieses Problem durch dynamisches Programmieren losen?

Ja, indem alle Unterprobleme mit unterer Kapazitat zuerst gelost werden.

Page 9: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 465, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

0/1-Knapsack

Betrachte den folgenden Algorithmus:

Algorithmus

procedure Knapsack :for i = 1, ..., n do

for k = 0, ...,C dobest[0, k] := 0;best[i, k] := best[i− 1, k];if k ≥ c i and best[i, k] < v i + best[i− 1, k− c i]then best[i, k] := v i + best[i− 1, k− c i] fi

odod

best[i , k] ist der hochste Wert, den man mit Gegenstanden aus der Menge {1, . . . , i}erhalten kann, die zusammen Kapazitat k haben.

Page 10: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 466, Seite 85 im Skript)

Paradigmen

Dynamisches Programmieren

Laufzeit

Die Laufzeit ist O(Cn).

Wir nennen einen solchen Algorythmus pseudo-polynomiell.

Die Laufzeit ist nicht polynomiell in der Eingabelange, aber polynomiell in derEingabelange und der Große der Zahlen in der Eingabe.

Falls C klein ist, dann ist dieser Ansatz viel schneller als alle Untermengendurchzuprobieren.

Page 11: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen

Paradigmen

Greedy-Algorithmen

Ubersicht

6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken

Page 12: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 467, Seite 85 im Skript)

Paradigmen

Greedy-Algorithmen

10

2

4

46

= 240

60

100

80

Page 13: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 468, Seite 85 im Skript)

Paradigmen

Greedy-Algorithmen

Greedy-Algorithmen

Wie bei Dynamic Programming beinhalten optimale Losungen optimaleTeillosungen

Anders als bei Dynamic Programming gilt die greedy choice property: eine lokaloptimale Losung ist stets Teil einer global optimalen Losung

Korrektheitsbeweise uber Theorie der Matroide, Greedoide, Matroideinbettungen,. . .

Page 14: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen

Paradigmen

Flusse

Ubersicht

6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken

Page 15: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 469, Seite 85 im Skript)

Paradigmen

Flusse

Flußalgorithmen

Modelliere Optimierungsproblem als Flußproblem.

Varianten:

Maximaler Fluß

Fluß mit maximalen Gewinn

Matchings maximaler Kardinalitat

Matchings maximalem Gewichtes

Page 16: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen

Paradigmen

Lineares Programmieren

Ubersicht

6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken

Page 17: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 470, Seite 85 im Skript)

Paradigmen

Lineares Programmieren

Lineares Programmieren

Viele Probleme konnen als Maximierung einer linearen Funktion mit linearenUngleichungen als Nebenbedingungen ausgedruckt werden.

Mehr dazu in der Vorlesung Effiziente Algorithmen

Page 18: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen

Paradigmen

Randomisierung

Ubersicht

6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken

Page 19: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 471, Seite 85 im Skript)

Paradigmen

Randomisierung

Randomisierte Algorithmen

Beispiele in der Vorlesung nutzen Zufall, um den worst-case in Form einesadversary mit hoher Wahrscheinlichkeit zu vermeiden, sowie um den Algorithmusund/oder die Analyse zu vereinfachen

Eine Vielzahl von weiteren Techniken zum Entwurf in der Vorlesung RandomisierteAlgorithmen

Page 20: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen

Paradigmen

Backtracking

Ubersicht

6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken

Page 21: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 472, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

Tiefensuche auf dem Raum der moglichen Losungen

ein naturlicher Weg, schwere Entscheidungsprobleme zu losen

Ausdruck “backtrack” von D.H. Lehmer in den 50er Jahren

Verfeinerung der brute force-Suche

In der Praxis gut bei Problemen wie 3-Farbbarkeit oder 0/1-Knapsack

Page 22: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 23: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 24: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 25: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 26: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 27: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 28: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 29: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 30: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 31: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 32: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 33: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 34: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)

Paradigmen

Backtracking

Backtracking

1

2 3

45

Page 35: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 474, Seite 85 im Skript)

Paradigmen

Backtracking

Algorithmus

function backtrack(v1, ..., vi) :if(v1, ..., vi) is a solution then return(v1, ..., vi) fi;for each v do

if(v1, ..., vi, v) is acceptable vector thensol := backtrack(v1, ..., vi, v);if sol 6= () then return sol fi

fiod;return()

Page 36: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen

Paradigmen

Branch-and-Bound

Ubersicht

6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken

Page 37: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 475, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Branch-and-Bound

1960 vorgeschlagen von A.H. Land und A.G. Doig fur Linear Programming,allgemein nutzlich fur Optimierungsprobleme

branching auf einem Suchbaum wie bei Backtracking

bounding und pruning fuhrt zum Auslassen von uninteressanten Zweigen

Geeignet fur Spiele wie Schach oder schwere Optimierungsprobleme

Page 38: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 476, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Beispiel: 0/1-Knapsack

Verzweige, je nachdem, ob ein Gegenstand mitgenommen wird oder nicht, in einerfesten Reihenfolge

Eine Teillosung I ⊆ {1, . . . , k} ist zulassig, solange∑

i∈I ci ≤ C

Wenn I nicht zulassig ist, kann auch keine Losung, die I enthalt, zulassig sein

Außerdem ist∑

i∈I vi +∑

i∈{k+1,...,n} vi eine obere Schranke fur den Profit jederLosung, die I erweitert, wenn wir in I alle Gegenstande bis zum k . berucksichtigthaben

Also konnen wir alle Zweige abschneiden, die entweder nicht zulassig sind oderderen obere Schranke unter dem bis jetzt optimalen Profit liegt.

Page 39: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 477, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Das Problem des Handlungsreisenden

Wir untersuchen das folgende Problem:

Definition (TSP)

Eingabe: Ein Graph G = (V ,E ) mit Kantengewichten length : E → QAusgabe: Eine geschlossene Rundreise uber alle Knoten mit minimaler Gesamtlange.

Wir denken zum Beispiel an n Stadte, die alle besucht werden mussen.

Was ist die minimale Lange einer Tour, die alle Stadte besucht und im gleichen Ortbeginnt und endet?

Page 40: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 478, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Das Problem des Handlungsreisenden

Ein kleines Beispiel:

Page 41: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 478, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Das Problem des Handlungsreisenden

Ein kleines Beispiel:

Page 42: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 479, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Das Problem des Handlungsreisenden

Ein mittelgroßes Beispiel:

Page 43: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 479, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Das Problem des Handlungsreisenden

Ein mittelgroßes Beispiel:

Page 44: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 480, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Der naive Ansatz

Der einfachste Ansatz dieses Problem zu losen besteht darin, alle Moglichkeitendurchzuprobieren.

Wieviele Moglichkeiten gibt es?

Es gibt (n − 1)! mogliche Rundreisen, da es n! Permutationen gibt.Wir konnten alle Rundreisen durchprobieren, ihre Kosten berechenen und die billigsteauswahlen.

Es eine schnellere Losung mit Hilfe von dynamischer Programmierung. Wir versuchenes mit Branch-and-Bound.

Page 45: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 480, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Der naive Ansatz

Der einfachste Ansatz dieses Problem zu losen besteht darin, alle Moglichkeitendurchzuprobieren.

Wieviele Moglichkeiten gibt es?

Es gibt (n − 1)! mogliche Rundreisen, da es n! Permutationen gibt.Wir konnten alle Rundreisen durchprobieren, ihre Kosten berechenen und die billigsteauswahlen.

Es eine schnellere Losung mit Hilfe von dynamischer Programmierung. Wir versuchenes mit Branch-and-Bound.

Page 46: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 480, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Der naive Ansatz

Der einfachste Ansatz dieses Problem zu losen besteht darin, alle Moglichkeitendurchzuprobieren.

Wieviele Moglichkeiten gibt es?

Es gibt (n − 1)! mogliche Rundreisen, da es n! Permutationen gibt.Wir konnten alle Rundreisen durchprobieren, ihre Kosten berechenen und die billigsteauswahlen.

Es eine schnellere Losung mit Hilfe von dynamischer Programmierung. Wir versuchenes mit Branch-and-Bound.

Page 47: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 481, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Branch and Bound - Beispiel TSP

x0

x1

x2 x3

x4

1

8 1

1

2 7

2

1

6 3

Page 48: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 481, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Branch and Bound - Beispiel TSP

1

x0

2

x1

1

8

x3

x2

Page 49: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 481, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Branch and Bound - Beispiel TSP

1

x0

2

x1

1

8

x3

6

> 8

x4

x2

Page 50: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 481, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Branch and Bound - Beispiel TSP

1

x0

2 7

x1

1

8

x3

6

> 8

x4

x2 x3> 8

Page 51: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 481, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Branch and Bound - Beispiel TSP

1

x0

2 7 2

x1

1

8

x3

6

> 8

x4

6

> 8

x2

3

15

x3

x2 x3> 8

x4

Page 52: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 481, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Branch and Bound - Beispiel TSP

1 8

x0

2 7 2

x1 x2> 8

1

8

x3

6

> 8

x4

6

> 8

x2

3

15

x3

x2 x3> 8

x4

Page 53: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 481, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Branch and Bound - Beispiel TSP

1 8 1

x0

2 7 2 7 1 3

x1 x2> 8

x3

1

8

x3

6

> 8

x4

6

> 8

x2

3

15

x3

2

7

x1

6

> 7

x4

2

16

x1

6

> 7

x2

x2 x3> 8

x4 x1> 8

x2 x4

Page 54: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 481, Seite 85 im Skript)

Paradigmen

Branch-and-Bound

Branch and Bound - Beispiel TSP

1 8 1 1

x0

2 7 2 7 1 3 2 6 3

x1 x2> 8

x3 x4

1

8

x3

6

> 8

x4

6

> 8

x2

3

15

x3

2

7

x1

6

> 7

x4

2

16

x1

6

> 7

x2

2

7

x2

7

> 7

x3

7

> 7

x1

1

8

x2

x2 x3> 8

x4 x1 x2> 7

x3x1> 8

x2 x4

Page 55: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen

Paradigmen

A*-Algorithmus

Ubersicht

6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken

Page 56: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 482, Seite 85 im Skript)

Paradigmen

A*-Algorithmus

A*-Suche

1968 von Peter Hart, Nils Nilsson, and Bertram Raphael als A-search (A*-searchmit optimaler Heuristik)

Graphsuchverfahren mit Anwendungen in KI (Planung) und Suche in großenSuchraumen

Generalisierung von Dijkstras Algorithmus und best-first search

Knotenexpansion in Reihenfolge von f (x) = g(x) + h(x) mit tatsachlichen Kosteng und Heuristik h

Page 57: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 483, Seite 85 im Skript)

Paradigmen

A*-Algorithmus

Eigenschaften der A*-Suche

Theorem

Der A*-Algorithmus findet einen optimalen Pfad, wenn h optimistisch ist.

Beweis.

Wenn der Algorithmus terminiert, ist die Losung billiger als die optimistischenSchatzungen fur alle offenen Knoten.

Page 58: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 484, Seite 85 im Skript)

Paradigmen

A*-Algorithmus

Eigenschaften der A*-Suche

Theorem

Fur jede Heuristik h betrachtet die A*-Suche die optimale Anzahl von Knoten unterallen zulassigen Algorithmen.

Beweis.

Nimm an, Algorithmus B mit Heuristik h betrachtet einen Knoten x nicht, der in A*einmal offen war. Dann betragt h(x) hochstens Kosten des Losungspfades von B undkann B nicht ausschließen, daß es einen Pfad uber x gibt, der billiger ist. Also ist Bnicht zulassig.

Page 59: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 485, Seite 85 im Skript)

Paradigmen

A*-Algorithmus

A* - Kosten

Laufzeit: Im allgemeinen Anzahl der betrachteten Knoten exponentiell in derLange des optimalen Pfades

stark abhangig von der Gute der Heuristik: polynoniell wenn|h(x)− h∗(x)| ∈ O(log h∗(x))

Problem: Speicherplatz ebenfalls exponentiell

Varianten/Verbesserungen: IDA*,MA*,SMA*,AO*, Lifelong Learning A*, . . .

Page 60: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen

Paradigmen

Heuristiken

Ubersicht

6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken

Page 61: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 486, Seite 86 im Skript)

Paradigmen

Heuristiken

Heuristiken

Hier: Verfahren, die in der Praxis oft funktionieren, aber fur die man keineworst-case-Schranken zeigen kann

Beispiele: Lokale Suche, Simulated Annealing, Genetische Algorithmen

Page 62: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 487, Seite 86 im Skript)

Paradigmen

Heuristiken

Lokale Suche

Heuristik fur Optimierungsprobleme

Definiere Nachbarschaft im Suchraum

Gehe jeweils zum lokal optimalen Nachbarn

Problem: lokale Minima

Page 63: 0/1-Knapsack -  · Datenstrukturen und Algorithmen (Folie 462, Seite 85 im Skript) Paradigmen Dynamisches Programmieren 0/1-Knapsack Gegeben sei ein Rucksack mit einer unbeschr ankten

Datenstrukturen und Algorithmen (Folie 488, Seite 86 im Skript)

Paradigmen

Heuristiken

Lokale Suche fur TSP