52
Routenplanu ng & Komplexität

Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Embed Size (px)

Citation preview

Page 1: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Routenplanung& Komplexität

Page 2: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Lernziele• Sie können den Begriff Algorithmus erklären.• Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Algorithmus.• Sie haben den Dijkstra-Algorithmus nachvollzogen.• Sie können Struktogramme lesen und einfache Algorithmen in Form eines

Struktogramms formulieren.• Sie haben den Begriff der Komplexität eines Algorithmus verstanden.• Sie haben die Komplexität des Dijkstra-Algorithmus abgeschätzt.• Sie können auch für einfache Beispiel-Probleme/Algorithmen die

Komplexität abschätzen und in O-Notation angeben.• Sie können grob beschreiben, was man unter dem P-NP-Problem versteht.

Page 3: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Routenplanung

Es geht darum, anhand einer Strassenkarte den kürzesten Weg zwischen zwei Orten zu finden.Edsger Dijkstra fand schon 1956 eine effiziente Lösung für dieses Problem, die auch heute noch in den meisten Navigationsgeräten Anwendung findet.

Page 4: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Was ist ein Algorithmus?

Ein Algorithmus ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen. Algorithmen bestehen aus endlich vielen, wohldefinierten Einzelschritten. Algorithmen können zur Ausführung in einem Computerprogramm implementiert, aber auch in menschlicher Sprache formuliert werden. Bei der Problemlösung wird eine bestimmte Eingabe in eine bestimmte Ausgabe überführt.

(http://de.wikipedia.org/wiki/Algorithmus, 16. 8. 2014)

Page 5: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Schr

itt 1

: Abs

trak

tion

(= R

eduz

ieru

ng d

es P

robl

ems a

uf d

as

Wes

entli

che)

Page 6: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Man kann noch weiter

Abstrahieren

Ziel: möglichst wenige,

gleichförmige Elemente

Page 7: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines
Page 8: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Schritt 2: Lösung?!

• Es gibt eine sehr simple, aber nicht besonders schlaue Lösung für das Problem mit dem kürzesten Weg:

Brute Force• Diese Methode funktioniert übrigens bei

vielen Problemen, und wird doch fast nie angewandt – später sehen wir, warum

Page 9: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Es gibt bessere Lösungen

• ... aber wie?

• Idee???

Page 10: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Schritt 2: Grundidee

Viele Ameisen bewegen sich gleichzeitig mit konstanter Geschwindigkeit entlang des Graphen und markieren dabei ihren Weg• Ausgehend vom Startpunkt• Aufspaltung an jeder Kreuzung• Wenn eine Ameise auf einen bereits markierten Weg

trifft, stirbt sie (der letzte Abschnitt wird verworfen)• Sobald eine Ameise den den Zielort erreicht hat, ist

der kürzesten Weg gefunden

Page 11: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines
Page 12: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Dijkstras Algorithmus

• ... ist eine Variante der Ameisenidee• Warum Variante?

– weil Computer seriell arbeiten– weil man noch ein kleines bisschen optimieren

kann• Wie genau es funktioniert?

– Nächste Folie (oder routeplanner_3.pdf)– mit Stift nachvollziehen

Page 13: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Der Dijkstra-Algorithmus

Page 14: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines
Page 15: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines
Page 16: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines
Page 17: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines
Page 18: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Ergebnis:allerdings mit einem

Fehler!

Page 19: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Schritt 3: Formalisieren

Beispielsweise als• Flow Chart• Pseudocode• Struktogramm

Page 20: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines
Page 21: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Der Dijkstra-Algorithmus

Page 22: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

AufgabeSchauen Sie sich den Algorithmus nochmals an. Welche Werte müssen Sie sich von jedem Knoten aufschreiben, wenn Sie bei der Lösung des Algorithmus nicht auf die vorliegende Karte schreiben dürfen?

A B C D E FA - 3 2 6 4

B - 5 5

C - 1

D - 2 1

E - 4

F -

Knoten A B C D E FStrecke ab S 0 - - - - -

Vorgänger S - - - - -

bearbeiten? f f f f f f

Page 23: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

AufgabeSchauen Sie sich den Algorithmus nochmals an. Welche Werte müssen Sie sich von jedem Knoten aufschreiben, wenn Sie bei der Lösung des Algorithmus nicht auf die vorliegende Karte schreiben dürfen?

A B C D E FA - 3 2 6 4

B - 5 5

C - 1

D - 2 1

E - 4

F -

Knoten A B C D E FStrecke ab S 0 - 2 - - -

Vorgänger S - A - - -

bearbeiten? t f t f f f

Page 24: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

AufgabeSchauen Sie sich den Algorithmus nochmals an. Welche Werte müssen Sie sich von jedem Knoten aufschreiben, wenn Sie bei der Lösung des Algorithmus nicht auf die vorliegende Karte schreiben dürfen?

A B C D E FA - 3 2 6 4

B - 5 5

C - 1

D - 2 1

E - 4

F -

Knoten A B C D E FStrecke ab S 0 - 2 - 3 -

Vorgänger S - A - C -

bearbeiten? t f t f t f

Page 25: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Aufgabe:1. Bestimmen sie eines

der Hotels (gelbe Knoten) als Startpunkt

2. Erstellen Sie eine Distanztabelle für die Strecken zu allen anderen Hotels

(Lösungen für A, G & K im pdf)

Page 26: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Schritt 4: Analysieren

• Ist das ein guter Algorithmus?• Ist er besser als ein Anderer?

– Immer?– In speziellen Fällen?

• Lohnt es sich, ihn zu implementieren?

Page 27: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Komplexität & Big-O-Notation

Das Problem des Handlungsreisenden (travelling salesman):Berechne die kürzeste Strecke, die durch mehrere vorgegebene Orte führt

Page 28: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Komplexitätsabschätzung

Es geht um asymptotische Laufzeit (Speicherbedarf)Abschätzen, wie sich der Rechenaufwand eines

Algorithmus im ungünstigsten Fall mit immer grösser werdenden Eingaben verändert

Und wozu ist das nütze?

Page 29: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

LaufzeitabschätzungWir betrachten, wie viele Schritte im Algorithmus abgearbeitet werden müssen - abhängig von der Menge der Eingabedaten.

Beispiel 1:Wir haben eine Namensliste und wollen wissen, ob ein bestimmter Name darin vorkommt. UND JETZT?

Kerim Alexandra LorenzJulianSamuelNirubanAymarJoëlSlavkoManuelNathanaelAnselmNiko

Page 30: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Laufzeitabschätzung1) Lösung (Algorithmus) finden

2) Für den ungünstigsten Fall (worst

case) durchspielen

3) Laufzeit abschätzen (O-Notation)

Kerim Alexandra LorenzJulianSamuelNirubanAymarJoëlSlavkoManuelNathanaelAnselmNiko

Page 31: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Algorithmus Lineare Suche

• Worst case?• Laufzeit

– n = 10?– n = 20?– n = 100?– allgemein?

O(n)(n verdoppeln

verdoppelt Laufzeit)

Page 32: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

LaufzeitabschätzungWir betrachten, wie viele Schritte im Algorithmus abgearbeitet werden müssen - abhängig von der Menge der Eingabedaten.

Beispiel 2:Wir haben eine Namensliste und wollen wissen, ob ein Name darin doppelt vorkommt.

Kerim Alexandra LorenzJulianSamuelNirubanAymarJoëlSlavkoManuelNathanaelAnselmNiko

Allgemeine Laufzeit?

Page 33: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

O-NotationWir betrachten, wie sich die Schrittanzahl im Algorithmus für eine sehr grosse Anzahl von Eingabedaten verhält („obere Schranke“ für Worst Case).

Beispiel Namensliste:Für n Eingabedaten brauchen wir sicher nicht mehr als

(n-1)+(n-2)+…+(1) = Schritte.

Schreibweise:Laufzeit_Namensliste = O(n2)

2)1( nn

Page 34: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

O-NotationVereinfachungsregeln:

Addition f(n) = n + 3 ⇒ O(n)

f(n) = n2 + 3n O⇒ (n2)

Multiplikation f(n) = 3n ⇒ O(n)

f(n) = n2 * 3n ⇒ O(n3)

Konstante Summanden werden vernachlässigt

Es zählt der Summand mit dem stärkeren Wachstum Konstante Faktoren werden vernachlässigt

Es zählt die Summe der Exponenten

Page 35: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Aufgaben (s. ABKomplexität1.doc)

1. Wir wollen einen quadratischen Rasen mähen, die Länge einer Seite ist n. Zu welcher Komplexitätsklasse gehört das Rasenmähen?

2. Wir wollen eine n-stöckige Pyramide aus Getränke-Kisten bauen. Wie lautet dieLaufzeit in O-Notation?

3. Sie haben das Bier für die Party schon gekauft, n ist die Anzahl der Gäste. Saufzeit in O-Notation?

Page 36: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Turm von Hanoi (original mit 64 Scheiben)

Anzahl Züge:2 Scheiben3 Züge

3 Scheiben7 Züge

(die grosse, dann die drei Schritte von oben)

n Scheiben 2n-1 Züge

Page 37: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Komplexitätsabschätzung

Wie verhält sich die asymptotische Laufzeit für folgende Algorithmen? (wie ändert sich die Anzahl der Rechenschritte, wenn man die Anzahl der Elemente im Array verdoppelt)

1. Suchen eines Elements im Array

2. Sortieren der Elemente des Arrays

3. Alle möglichen Permutationen ausgeben

P.S.: Ein Array meint hier schlicht eine Liste mit n Elementen, z.B. Zahlen

Page 38: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Komplexitätsabschätzung

Es geht um asymptotische Laufzeit (Speicherbedarf)Abschätzen, wie sich der Rechenaufwand eines

Algorithmus im ungünstigsten Fall mit immer grösser werdenden Eingaben verändert

Theoretische Informatik

Page 39: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Berechenbarkeit von Algorithmen

prinzipiell nicht berechenbar

prinzipiell berechenbar,

praktisch nicht

praktisch berechenbar

2. Kann alles, was theoretisch berechenbar ist, auch tatsächlich berechnet werden? was heisst hier

„praktisch“?

Ein Computer ist eine universelle Rechenmaschine, er kann alles berechnen, was berechenbar ist.

1. Gibt es auch Probleme, die nicht berechenbar sind?

Page 40: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Komplexitätsklassen

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 690

500

1000

1500

2000

2500

3000

O(1) - konstantO(log(n)) - logarithmischO(n) - linearO(n*log(n)) - loglinearO(n^2) - quadratischO(n^k) - polinomialO(k^n) - exponenziellO(n!) - fakultät

n

Page 41: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Komplexitätsklassen

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 690

100000

200000

300000

400000

500000

600000

700000

800000

900000

1000000

O(1) - konstantO(log(n)) - logarithmischO(n) - linearO(n*log(n)) - loglinearO(n^2) - quadratischO(n^k) - polinomialO(k^n) - exponenziellO(n!) - fakultät

n

noch praktikabelnicht mehr praktikabel

Page 42: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Berechenbarkeit von Algorithmen

prinzipiell nicht berechenbar

P

Die nicht-polinomialen Algorithmen (NP):Sind praktisch nicht lösbar,für etwas grössere n.1. Gibt es keine schnellere Lösung, oder haben wir nur noch keine gefunden?Und: Für die grosse Familie der NP-vollständigen Probleme(z.B. Handlungsreisender) muss diese Frage nur an einem einzige Beispiel beantwortet werden!

NP-vNP-hNP?...

Page 43: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

NP-vollständige Probleme• Sie sind entscheidbar (=berechenbar). • Sie besitzen Lösungen in exponentieller Zeit. • Für keines dieser Problem wurde je ein Algorithmus mit

Polynomialzeit gefunden. • Niemand konnte bisher beweisen, ob sie exponentielle Zeit

benötigen müssen.• Alle diese Probleme sind miteinander verwandt:

– Sollte jemals für ein einziges Problem ein Algorithmus mit Polynomialzeit gefunden werden, dann ergäben sich sofort Polynomialzeit-Algorithmen für alle anderen Probleme.

– Umgekehrt gilt das allerdings auch (Beweis, dass NP≠P)

http://en.wikipedia.org/wiki/List_of_NP-complete_problems

nicht berechenbar

NP

P

Page 44: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

P == NP ?Das P-NP-Problem gilt als eines der wichtigsten offenen Probleme der Informatik und wurde vom Clay Mathematics Institute in die Liste der Millennium-Probleme aufgenommen – auf seine Lösung ist eine Preis von 1 Million $ ausgesetzt.

Frage: Rein finanziell gesehen wäre man bescheuert, den Preis in Anspruch zu nehmen, falls man einen Beweis für die Vermutung P == NP gefunden hätte. Warum?

Page 45: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Verstanden?

• Formulieren Sie mit eigenen Worten:

1. Wie ist die Problemklasse P definiert?

2. Wie ist die Problemklasse NP definiert?

Page 46: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Verstehen sie den Witz jetzt besser?

http://en.wikipedia.org/wiki/List_of_NP-complete_problems

Das Problem des Handlungsreisenden (travelling salesman)

Page 47: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Komplexitätsabschätzung

Es geht um asymptotische Laufzeit (Speicherbedarf)Abschätzen, wie sich der Rechenaufwand eines

Algorithmus im ungünstigsten Fall mit immer grösser werdenden Eingaben verändert

Und bei Dijkstra?

Page 48: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Brute Force: Vollständige Wege in GraphenWege von S aus: 2 Wege (2 x 2 Schritte)

Möglichkeiten bei noch mehr Knoten: 3 x 2 Wege (x 3) 4 x 6 Wege (x 4) 5 x 24 Wege (x 5) 6 x 102 Wege (x 6) (n-1)(n-1)! Schritte = O(n!)

3 Wege in den 3er-Graphenvon: 3 x 2 Wege (6 x 3 Schr.)

Page 49: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Dijkstra: unvollständige Wege (nur bis X)

• Alle Wege von S ab ausrechnen, danach ist S aus dem Rennen

• Im verkleinerten Graphen wird der näheste Knoten besucht und das Ganze von vorn...

(n-1) + (n-2) + (n-3) + ... + 1 n2/2O(n2)

Bei nicht vollständig verknüpften Graphen und geschickter Implementierung: O(n * log(n))

In der Praxis noch effizienter, da man abbrechen kann, sobald der gesuchte Endknoten erreicht ist

Page 50: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Welche Komplexität hat Routenplanung ...

• mit „brute force“? O(n!), also NP (nicht NPv!)

• mit dem Dijkstra Algorithmus? O(n2), also P

genauer: O(n2/2), wenn der Graph nicht voll verbunden und der Algorithmus geschickter implementiert ist sogar nur O(n*log(n))

Page 51: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines
Page 52: Routenplanung & Komplexität. Lernziele Sie können den Begriff Algorithmus erklären. Sie kennen wesentliche Schritte auf dem Weg zur Formulierung eines

Binäre Suche; O(log(n))