Upload
vuongphuc
View
225
Download
0
Embed Size (px)
Citation preview
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
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
Datenstrukturen und Algorithmen (Folie 463, Seite 85 im Skript)
Paradigmen
Dynamisches Programmieren
Knapsack
2
60
4
100
6
120
10
Rucksack
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
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.
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.
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.
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.
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.
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.
Datenstrukturen und Algorithmen
Paradigmen
Greedy-Algorithmen
Ubersicht
6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken
Datenstrukturen und Algorithmen (Folie 467, Seite 85 im Skript)
Paradigmen
Greedy-Algorithmen
10
2
4
46
= 240
60
100
80
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,. . .
Datenstrukturen und Algorithmen
Paradigmen
Flusse
Ubersicht
6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken
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
Datenstrukturen und Algorithmen
Paradigmen
Lineares Programmieren
Ubersicht
6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken
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
Datenstrukturen und Algorithmen
Paradigmen
Randomisierung
Ubersicht
6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken
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
Datenstrukturen und Algorithmen
Paradigmen
Backtracking
Ubersicht
6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken
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
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
Datenstrukturen und Algorithmen (Folie 473, Seite 85 im Skript)
Paradigmen
Backtracking
Backtracking
1
2 3
45
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()
Datenstrukturen und Algorithmen
Paradigmen
Branch-and-Bound
Ubersicht
6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken
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
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.
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?
Datenstrukturen und Algorithmen (Folie 478, Seite 85 im Skript)
Paradigmen
Branch-and-Bound
Das Problem des Handlungsreisenden
Ein kleines Beispiel:
Datenstrukturen und Algorithmen (Folie 478, Seite 85 im Skript)
Paradigmen
Branch-and-Bound
Das Problem des Handlungsreisenden
Ein kleines Beispiel:
Datenstrukturen und Algorithmen (Folie 479, Seite 85 im Skript)
Paradigmen
Branch-and-Bound
Das Problem des Handlungsreisenden
Ein mittelgroßes Beispiel:
Datenstrukturen und Algorithmen (Folie 479, Seite 85 im Skript)
Paradigmen
Branch-and-Bound
Das Problem des Handlungsreisenden
Ein mittelgroßes Beispiel:
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.
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.
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.
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
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
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
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
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
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
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
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
Datenstrukturen und Algorithmen
Paradigmen
A*-Algorithmus
Ubersicht
6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken
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
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.
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.
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*, . . .
Datenstrukturen und Algorithmen
Paradigmen
Heuristiken
Ubersicht
6 ParadigmenDivide-and-ConquerDynamisches ProgrammierenGreedy-AlgorithmenFlusseLineares ProgrammierenRandomisierungBacktrackingBranch-and-BoundA*-AlgorithmusHeuristiken
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
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