Dynamische Programmierung als Probleml osungsstrategie der...

29
Einleitung Problem des k¨ urzesten Pfades Problem des Handlungsreisenden Quellenangabe Dynamische Programmierung als Probleml¨ osungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Pr¨ asentationen, WS 2010/2011 Cordt, Metovic Dynamische Programmierung

Transcript of Dynamische Programmierung als Probleml osungsstrategie der...

Page 1: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Dynamische Programmierung alsProblemlosungsstrategie der Informatik

und ihre Anwedung in der Diskreten Mathematik undGraphentheorie

Fabian Cordt Enisa Metovic

Wissenschaftliche Arbeiten und Prasentationen, WS 2010/2011

Cordt, Metovic Dynamische Programmierung

Page 2: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Gliederung

1 EinleitungEinfuhrung in die Dynamische ProgrammierungFibonacci Folge

2 Problem des kurzesten PfadesProblemstellungDijkstra’s Algorithmus

3 Problem des HandlungsreisendenProblemstellungOptimierung mit Dynamischer Programmierung

Cordt, Metovic Dynamische Programmierung

Page 3: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Der Begriff “Dynamische Programmierung”

Wurde 1940 von Richard Bellman eingefuhrt

Bellman wandte diese Methode auf dem Gebiet derRegelungstheorie an

Cordt, Metovic Dynamische Programmierung

Page 4: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Einfuhrung in die Dynamische Programmierung

Divide and Conquer: “Teile und Herrsche”

Lost ein Problem durch Kombination der Losungen vonTeilproblemen

Jedes Teilproblem wird nur einmal gelost

Zwischenergebnisse werden fur spateren Gebrauch in einerTabelle gespeichert

Cordt, Metovic Dynamische Programmierung

Page 5: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Optimalitatsprinzip

Richard Bellman, 1957

“An optimal policy has the property that whatever the initialstate and initial decision are, the remaining decisions mustconstitute an optimal policy with regard to the state resultingfrom the first decision.”

Jede Teillosung einer optimalen Losung ist selbst eineoptimale Losung des betreffenden Teilproblems

Cordt, Metovic Dynamische Programmierung

Page 6: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Entwickeln eines Algorithmus mit DynamischerProgrammierung

Voraussetzung: Die optimale Losung setzt sich aus optimalenTeillosungen zusammen

Charakterisieren der Struktur

Rekursive Definition des Wertes einer optimalen Losung

Berechnen des Wertes einer optimalen Losung

Konstruktion der optimalen Losung aus berechnetenInformationen

Cordt, Metovic Dynamische Programmierung

Page 7: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Probleme

Die Losung kleinerer Probleme garantiert nicht immer dieLosung eines großeren Problems

Die Anzahl der zu losenden Probleme kann beliebig großwerden

Cordt, Metovic Dynamische Programmierung

Page 8: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Die Fibonacci Folge

Eine unendliche Folge von Zahlen, bei der sich die folgendeZahl durch Addition ihrer beiden Vorganger ergibt

Rekursive Beschreibung des Problemes:

f1 := 1f2 := 1fn := fn−1 + fn−2

1,1,2,3,5,8,13, . . .

Cordt, Metovic Dynamische Programmierung

Page 9: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Implementierung

int fib(int n)

{

if(n == 1 || n == 2)

return 1;

return fib(n-1) + fib(n-2);

}

Cordt, Metovic Dynamische Programmierung

Page 10: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Rekursive Berechnungen

fib(5)

fib(3) fib(4)

fib(1) fib(2) fib(2) fib(3)

fib(1) fib(2)

⇒ Exponentieller Aufwand O(2n)

Cordt, Metovic Dynamische Programmierung

Page 11: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Optimierung mit Dynamischer Programmierung

static int knownF[] = new int[1000];

int fib(int n)

{

if(knownF[n] != 0) {return knownF[n];}

if(n == 1 || n == 2)

return 1;

return (knownF[n] = fib(n-1) + fib(n-2));

}

Cordt, Metovic Dynamische Programmierung

Page 12: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Optimierung mit Dynamischer Programmierung (con’t)

Weiterhin Rekursionen

Ergebnisse werden zwischengespeichert

Zuerst “lookup” in Tabelle

Cordt, Metovic Dynamische Programmierung

Page 13: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Optimierung mit Dynamischer Programmierung (con’t)

fib(5)

fib(3) fib(4)

fib(2) fib(3)

fib(1) fib(2)

⇒ Linearer Aufwand O(n)

Cordt, Metovic Dynamische Programmierung

Page 14: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Einfuhrung in die Dynamische ProgrammierungFibonacci Folge

Optimierung mit Dynamischer Programmierung (con’t)

Laufzeit fur fib(50) = 12586269025

Rekursiv: 13 Minuten, 12 Sekunden

Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden

Cordt, Metovic Dynamische Programmierung

Page 15: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungDijkstra’s Algorithmus

Problem des kurzesten Pfades

Den kurzesten Pfad (“Weg”) zwischen zwei Punkten finden

Viele Anwendungen (Navigation, Routing, Spiele)

Viele Algorithmen

Zeitkritisch

Cordt, Metovic Dynamische Programmierung

Page 16: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungDijkstra’s Algorithmus

Rekursive Losung

Input

Menge V an n KnotenMenge E an Kanten, wobei eij die Distanz zwischen denKnoten vi und vj beschreibtStartknoten vs , Endknoten ve

p(vi ,K ⊆ V ) = min∀vk∈K (p(vk ,K −{vk}) + eki )

p(vs ,K ) = 0

Um den kurzesten Pfad zu berechnen, muss man alsop(ve ,V −{ve}) ausfuhren

Cordt, Metovic Dynamische Programmierung

Page 17: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungDijkstra’s Algorithmus

Probleme

Große Menge an Rekursionen

Redundante Berechnungen

Uberexponentielle Komplexitat!

Losung: Iterative Berechnung der Wege, ausgehend von demersten Knoten

Zwischenspeichern der bereits besuchten Knoten

Cordt, Metovic Dynamische Programmierung

Page 18: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungDijkstra’s Algorithmus

Djikstra’s Algorithmus

Setze bei allen Knoten außer dem Startknoten die Distanz auf∞

Nimm den Knoten mit der kurzesten Distanz zum Startknoten

Markiere diesen Knoten als besucht

Berechne die Distanz aller direkt verbundenen Knoten, dienoch nicht besucht wurden zum, Startknoten

Speichere fur diese Knoten den aktuellen Knoten alsvorgehenden Knoten, falls die Distanz kleiner ist als die vorhervorhandene

Fuhre dieses Verfahren so lange durch, bis alle Knotenbesucht wurden

Cordt, Metovic Dynamische Programmierung

Page 19: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungDijkstra’s Algorithmus

Eigenschaften

Laufzeit O(n2)

Falls es einen optimalen Weg gibt, wird dieser gefunden

Zusatzlich werden die optimalen Wege vom Startknoten zuallen anderen Knoten berechnet

Cordt, Metovic Dynamische Programmierung

Page 20: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungDijkstra’s Algorithmus

Eigenschaften der Dynamischen Programmierung

Optimalitatsprinzip: Jeder Teilweg eines optimalen Weges istselbst wiederum ein optimaler Weg

Iterativer Durchgang durch alle Knoten

Bereits gefundene Wege werden abgespeichert und beiweiteren Berechnungen wiederverwendet

Cordt, Metovic Dynamische Programmierung

Page 21: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungOptimierung mit Dynamischer Programmierung

Problem des Handlunsgreisenden

Den kurzesten Pfad finden, ausgehend von einem Startknoten,der alle anderen Knoten genau (mindestens) einmal besucht,und dann wieder zum Startknoten zuruckfuhrt

Anwendungen nicht nur in der Informatik

Exakte als auch heuristische Losungsverfahren

Cordt, Metovic Dynamische Programmierung

Page 22: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungOptimierung mit Dynamischer Programmierung

Beispielgraph

A

B

C

D

E

F

Cordt, Metovic Dynamische Programmierung

Page 23: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungOptimierung mit Dynamischer Programmierung

Komplexitat

n! Permutationen

Wahl des Startknotens irrelevant

(n−1)! fur gerichtete Graphen, (n−1)!2 fur ungerichtete

Graphen

⇒ O(n!) bei brute-force Algorithmen!

Schon bei kleiner Anzahl an Knoten unberechenbar(15! = 1307674368000)

Cordt, Metovic Dynamische Programmierung

Page 24: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungOptimierung mit Dynamischer Programmierung

Voraussetzungen

Input

Menge V an n KnotenMenge E an Kanten, wobei eij die Distanz zwischen denKnoten vi und vj beschreibt

Die Funktion t(vi ,K ⊆ V ) berechnet die Lange des kurzestenPfades zwischen dem Startknoten und vi , wobei jeder Knotenaus K genau einmal besucht wird

t(vi ,Ø) = e1it(vi ,K ) = min∀vk∈K (t(vk ,K −{vk}) + eki )

Cordt, Metovic Dynamische Programmierung

Page 25: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungOptimierung mit Dynamischer Programmierung

Berechnung

Optimaler Pfad: minj=2,3,...,n(t(vj ,V −{vj}) + ej1)

Aufrufen der Funktion t fur |K |= 1,2,3, . . . ,n−2

Zwischenspeichern der bereits gefundenen Pfade in einerTabelle

Zugriff auf bereits berechnete Pfade anstatt rekursivenAufrufens der Funktion

Cordt, Metovic Dynamische Programmierung

Page 26: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungOptimierung mit Dynamischer Programmierung

Resultate

Exponentielle Speichernutzung

Komplexitat von O(n22n) im Vergleich zu O(n!)

2 4 6 8 10 12 14

2.0 ´ 106

4.0 ´ 106

6.0 ´ 106

8.0 ´ 106

1.0 ´ 107

1.2 ´ 107

Cordt, Metovic Dynamische Programmierung

Page 27: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

ProblemstellungOptimierung mit Dynamischer Programmierung

Ende

Vielen Dank fur die Aufmerksamkeit!

xkcd: The travelling salesman problem

Cordt, Metovic Dynamische Programmierung

Page 28: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Quellenangabe

Stuard E. Dreyfuse, Averill M. LawThe Art and Theory of Dynamic ProgrammingAcademic Press Inc., 1977ISBN: 0122218604

M. SniedovicDijkstra’s algorithm revisited: the dynamic programmingconnexionControl and Cybernetics, Vol. 35, No. 3: DynamicProgramming, 599 - 620Jan W. Owsinki et. alSystem research institute, Polish academy of sciences2006

Cordt, Metovic Dynamische Programmierung

Page 29: Dynamische Programmierung als Probleml osungsstrategie der ...held/teaching/wiss_arbeiten/slides_10-11/DP.pdf · Rekursiv mit Dynamischer Programmierung: 0.004 Sekunden Cordt, Metovic

EinleitungProblem des kurzesten Pfades

Problem des HandlungsreisendenQuellenangabe

Quellenangabe con’d

xkcd: Traveling Salesman Problemhttp://xkcd.com/399/

Cordt, Metovic Dynamische Programmierung