Routenplanung & Komplexität.

Slides:



Advertisements
Ähnliche Präsentationen
Vortrag von Stephanie Weirauch Jens Pleger Peter Jancke Frank Wejmelka
Advertisements

Christian Scheideler SS 2009
Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Schwierigkeit von Aufgabenstellungen
Schnelle Matrizenoperationen von Christian Büttner
GIN2 SS05 Prof. Dr. W. Conen, Nullsummen-Spiele - Min-Max-Suche - Alpha-Beta-Pruning (späterer Termin)
Dr. Brigitte Mathiak Kapitel 10 Physische Datenorganisation.
Suche in Texten (Stringsuche )
3. Kapitel: Komplexität und Komplexitätsklassen
2. Kapitel: Komplexität und Komplexitätsklassen
Einführung in Berechenbarkeit und Formale Sprachen
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Algorithmische Geometrie
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Algorithmen und Komplexität
Christian Schindelhauer
Routenplanung & Komplexität.
Suchen & Sortieren mit Arrays.
Routenplanung & Komplexität. Lernziele Sie haben den Dijkstra-Algorithmus nachvollzogen. Sie haben das Konzept der Komplexität eines Algorithmus verstanden.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Effiziente Algorithmen
Effiziente Algorithmen
Computational Thinking Online Algorithmen [Was ist es wert, die Zukunft zu kennen?] Kurt Mehlhorn Konstantinos Panagiotou.
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Jan Hinzmann – – GIS Praxis II – Slide 1/10 Der Algorithmus von Dijkstra (Berechnung kürzester Wege in bewerteten Graphen) GIS Praxis II, Jan Hinzmann,
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
Komplexität von Algorithmen
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Das Traveling Salesman Problem (TSP)
Analyse der Laufzeit von Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Gliederung der Vorlesung
Routenplanung & Komplexität.
Binärbäume.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Einführung in die Informationsverarbeitung Teil Thaller Stunde V: Wege und warum man sie geht Graphen. Köln 14. Januar 2016.
Graphen.
Das Problem des Handlungsreisenden
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
Von Labyrinthen und Irrgärten
Algorithmen.
Grundlagen und Grundbegriffe
Hexadezimale Darstellung von Zahlen
TexPoint fonts used in EMF.
TexPoint fonts used in EMF.
Algorithmen.
10 Schritte Video-Optin-Formel
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
 Präsentation transkript:

Routenplanung & Komplexität

Lernziele Sie können den Begriff Algorithmus erklären (inkl. Anforderungen). 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.

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.

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)

Anforderungen Algorithmus Ausführbarkeit bedeutet, dass ein Prozessor jeden Einzelschritt des Algorithmus ausführen kann. Meist geht es um eine CPU, aber eigentlich kann auch ein Mensch die Rolle des Prozessors übernehmen. Eindeutigkeit bedeutet, dass die Abfolge der einzelnen Schritte genau festgelegt ist, so dass immer klar ist, welcher Verarbeitungsschritt als nächstes kommt. Endlichkeit bedeutet, dass der Algorithmus in jedem Fall mit einer endlichen Anzahl Schritte zu einer Lösung kommt. Allgemeinheit bedeutet, dass nicht nur ein einzelnes Problem, sondern eine ganze Klasse von Problemen gelöst werden soll. Man würde ja auch nicht behaupten, addieren zu können, nur weil man weiss, was 7 + 4 ergibt. Korrektheit bedeutet, dass der Algorithmus für alle möglichen Eingaben (bzw. für alle Probleme innerhalb der Problemklasse) zu einer korrekten Lösung kommt. Die allgemeine Korrektheit eines Algorithmus zu verifizieren ist oft nicht einfach – ähnlich wie Korrektheitsbeweise in der Mathematik.

(= Reduzierung des Problems auf das Wesentliche) Schritt 1: Abstraktion (= Reduzierung des Problems auf das Wesentliche)

Man kann noch weiter Abstrahieren Ziel: möglichst wenige, gleichförmige Elemente

Schritt 2: Lösung?! Brute Force 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

Es gibt bessere Lösungen ... aber wie? Idee???

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

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

Der Dijkstra-Algorithmus

allerdings mit einem Fehler! Ergebnis: allerdings mit einem Fehler!

Schritt 3: Formalisieren Beispielsweise als Flow Chart Pseudocode Struktogramm

Der Dijkstra-Algorithmus

Aufgabe Schauen Sie sich den Algorithmus nochmals an. Welche Werte müssen Sie von jedem Knoten in die untere Tabelle schreiben, wenn Sie bei der Lösung des Algorithmus nicht auf die vorliegende Karte schreiben dürfen? A B C D E F - 3 2 6 4 5 1 Knoten A B C D E F Strecke ab S - Vorgänger besucht? f Aufgabe lösen, Applet ausführen und anschauen

Vorgehen Startknoten ist A. Er wird als besucht markiert (t = true, f = false). Als Startknoten hat A keinen Vorgänger, deshalb S. (Die Karte ist jetzt eigentlich nicht mehr nötig) A B C D E F - 3 2 6 4 5 1 Knoten A B C D E F Strecke ab S - Vorgänger S besucht? t f Aufgabe lösen, Applet ausführen und anschauen

Vorgehen In jeder Runde... Neu erreichbare Gesamtstrecken berechnen und eintragen A B C D E F - 3 2 6 4 5 1 Knoten A B C D E F Strecke ab S 3 2 6 4 - Vorgänger S besucht? t f Aufgabe lösen, Applet ausführen und anschauen

Vorgehen In jeder Runde... Neu erreichbare Gesamtstrecken berechnen und eintragen Knoten mit kürzester verbleibender Gesamtstrecke als nächstes besuchen A B C D E F - 3 2 6 4 5 1 Knoten A B C D E F Strecke ab S 3 2 6 4 - Vorgänger S besucht? t f Aufgabe lösen, Applet ausführen und anschauen

Vorgehen In jeder Runde... Neu erreichbare Gesamtstrecken berechnen und eintragen Knoten mit kürzester verbleibender Gesamtstrecke als nächstes besuchen A B C D E F - 3 2 6 4 5 1 Knoten A B C D E F Strecke ab S 3 2 6 - Vorgänger S besucht? t f Aufgabe lösen, Applet ausführen und anschauen

Vorgehen In jeder Runde... Neu erreichbare Gesamtstrecken berechnen und eintragen Knoten mit kürzester verbleibender Gesamtstrecke als nächstes besuchen A B C D E F - 3 2 6 4 5 1 Knoten A B C D E F Strecke ab S 3 2 6 - Vorgänger S besucht? t f Aufgabe lösen, Applet ausführen und anschauen

Vorgehen Sobald der Zielknoten erreicht ist, kann man aufhören und die kürzeste rückwärts Strecke auslesen: immer zum Vorgängerknoten, bis es der Startknoten ist A B C D E F - 3 2 6 4 5 1 Knoten A B C D E F Strecke ab S 3 2 5 6 Vorgänger S besucht? t Aufgabe lösen, Applet ausführen und anschauen

Bestimmen sie eines der Hotels (gelbe Knoten) als Startpunkt Aufgabe: Bestimmen sie eines der Hotels (gelbe Knoten) als Startpunkt Erstellen Sie eine Distanztabelle für die Strecken zu allen anderen Hotels (Lösungen für A, G & K im pdf)

Genau Formulieren: Wieso kann man den Dijkstra-Algorithmus abbrechen, sobald man den Zielknoten besucht hat?

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?

Komplexität & Big-O-Notation Das Problem des Handlungsreisenden (travelling salesman): Berechne die kürzeste Strecke, die durch mehrere vorgegebene Orte führt

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?

Laufzeitabschätzung Wir betrachten, wie viele Schritte im Algorithmus abgearbeitet werden müssen - abhängig von der Menge der Eingabedaten. Kerim Alexandra Lorenz Julian Samuel Niruban Aymar Joël Slavko Manuel Nathanael Anselm Niko Beispiel 1: Wir haben eine Namensliste und wollen wissen, ob ein bestimmter Name darin vorkommt.  und jetzt?

Laufzeitabschätzung Lösung (Algorithmus) finden Für den ungünstigsten Fall (worst case) durchspielen Laufzeit abschätzen (O-Notation) Kerim Alexandra Lorenz Julian Samuel Niruban Aymar Joël Slavko Manuel Nathanael Anselm Niko

Algorithmus Lineare Suche Worst case? Laufzeit n = 10? n = 20? n = 100? allgemein? O(n) (n verdoppeln verdoppelt Laufzeit)

Laufzeitabschätzung  Allgemeine Laufzeit? Wir betrachten, wie viele Schritte im Algorithmus abgearbeitet werden müssen - abhängig von der Menge der Eingabedaten. Kerim Alexandra Lorenz Julian Samuel Niruban Aymar Joël Slavko Manuel Nathanael Anselm Niko Beispiel 2: Wir haben eine Namensliste und wollen wissen, ob ein Name darin doppelt vorkommt.  Allgemeine Laufzeit?

O-Notation Wir 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. (n-1)+(n-2)+…+(1) = n2 Schritte. 1 + 2 +…+ (n-1) Schreibweise: Laufzeit_Namensliste = O(n2)

O-Notation Vereinfachungsregeln: 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

Aufgaben (s. ABKomplexität1.doc) Wir wollen einen quadratischen Rasen mähen, die Länge einer Seite ist n. Zu welcher Komplexitätsklasse gehört das Rasenmähen? Wir wollen eine n-stöckige Pyramide aus Getränke- Kisten bauen. Wie lautet die Laufzeit in O-Notation? Sie haben das Bier für die Party schon gekauft, n ist die Anzahl der Gäste. Saufzeit in O-Notation? Kontrollfragen zum Text (Kapitel 6)

Turm von Hanoi (original mit 64 Scheiben) Anzahl Züge: 2 Scheiben 3 Züge 3 Scheiben 7 Züge (die grosse, dann die drei Schritte von oben) n Scheiben  2n-1 Züge

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) Suchen eines Elements im Array Sortieren der Elemente des Arrays Alle möglichen Permutationen ausgeben P.S.: Ein Array meint hier schlicht eine Liste mit n Elementen, z.B. Zahlen

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

Berechenbarkeit von Algorithmen Ein Computer ist eine universelle Rechenmaschine, er kann alles berechnen, was berechenbar ist. 1. Gibt es auch Probleme, die nicht berechenbar sind? 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“?

Komplexitätsklassen

Komplexitätsklassen noch praktikabel nicht mehr praktikabel

Berechenbarkeit von Algorithmen 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! prinzipiell nicht berechenbar P NP-v NP-h NP? ...

NP-vollständige Probleme nicht berechenbar NP P 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

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?

Verstanden? Formulieren Sie mit eigenen Worten: Wie ist die Problemklasse P definiert? Wie ist die Problemklasse NP definiert?

Verstehen sie den Witz jetzt besser? Das Problem des Handlungsreisenden (travelling salesman) http://en.wikipedia.org/wiki/List_of_NP-complete_problems

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?

Brute Force: Vollständige Wege in Graphen Wege von S aus:  2 Wege (2 x 2 Schritte) 3 Wege in den 3er-Graphenvon:  3 x 2 Wege (6 x 3 Schr.) 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!) Text Kapitel 6 klären Wie steigt die Komplexität mit der Anzahl Knoten?

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/2 O(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

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))

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