Vortrag über Graphen Von Jörg Hendricks.

Slides:



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

Grundlagen des A*-Algorithmus und Anwendung in der Routenplanung
Algorithm Engineering
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Die 1-Baum-Relaxation des TSP mit der Subgradientenmethode
Manfred Thaller, Universität zu Köln Köln 22. Januar 2009
Einführung in die Informationsverarbeitung Teil Thaller Stunde VI: Wege und warum man sie geht Graphen. Manfred Thaller, Universität zu Köln Köln.
Programmieren 2 Future Car Projekt Praktikum 6
Programmieren 2 Future Car Projekt Praktikum 6
FB Informatik Prof. Dr. R.Nitsch Programmieren 2 Future Car Projekt Praktikum 6 - Graphen Reiner Nitsch - Speichern von Graphen -
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. 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.
Seminar parallele Programmierung SS 2003
Katja Losemann Chris Schwiegelshohn
Algorithmen und Komplexität
Minimum Spanning Tree: MST
Hinweise zum 10. Übungsblatt zu GIN1b, WS04/05 Prof. Dr. W. Conen (Version 1.0alpha, )
Khatuna Khvedelidze Teona Khizanishvili
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
Effiziente Algorithmen
Diskrete Mathematik II
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Algorithmus von Dijkstra. 0 Algorithmus von Dijkstra s Priority Queue PQ: Knoten, Priorität Weglänge Kandidatenmenge.
Jamshid Azizi: Folie Isomorphietest Jamshid Azizi
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Manfred Thaller, Universität zu Köln Köln 30. Januar 2014
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
Informatik Datenstruktur Graph 3.2 Repräsentation von Graphen
Analyse der Laufzeit von Algorithmen
Manfred Thaller, Universität zu Köln Köln 11. Dezemberr 2014
Eine kurze Geschichte der Graphentheorie
Minimal spannende Bäume
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd Foliendesign:
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.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd.
Der A*-Algorithmus.
Gliederung der Vorlesung
Binärbäume.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Graph_Algorithmen Einführung 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.
Adiazenzmatrix des Graphen
Philip Schill Erik Kurrat Simon Walther
Das Problem des Handlungsreisenden
Der Algorithmus nach Dijkstra
Der Dijkstra-Algorithmus
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
 Präsentation transkript:

Vortrag über Graphen Von Jörg Hendricks

Inhalt kurze Einführung Begriffserklärung Darstellung im Computer Algorithmen für Graphen

Einleitung Was sind Graphen? Knoten Kanten Werkzeug zur anschaulichen Darstellung Werkzeug zur Problemlösung

Begriffserklärung Allgemeines Schlinge Kantenzug / Weg erreichbarer Knoten Teilgraph Zyklus Valenz Eigenschaften gerichtet / ungerichtet gewichtet licht, dicht, vollständig schlicht zyklisch

Begriffserklärung (Fortsetzung) Sonderformen Liste Baum Wald Spannbaum Netz, Netzwerk, Netzplan

Darstellung im Computer F E D B C A G I J H Bitte Skript zur Hand nehmen! Danke!

Inzidenzmatrix

Inzidenzliste

Adjazenzmatrix

Adjazenzliste

Algorithmen für Graphen und deren Anwendung Die Algorithmen werden anhand von Beispielen vorgestellt. (Um den Ablauf verfolgen zu können bitte das Skript zur Hand nehmen) Danke!

Durchsuchen von Graphen Grundgedanke Wegsuche in einem Graphen Beispiel: Labyrinth Vom Eingang  Ausgang gibt es diesen Weg überhaupt? Algorithmen: Tiefensuche Breitensuche

Tiefensuche (Verbindung vorhanden?) Start Ende 5 4 6 7 3 2 1 Wir werden uns den Algorithmus nun am obenstehenden Graphen verdeutlichen. Weg von 5 (Start) zu 7 (Ende).

Teil 1 Zunächst wird die 5 als Startknoten markiert und auf den Stack gelegt. Man nimmt die 5 vom Stack und trägt sie bei den erreichbaren Knoten als Vorgänger ein. 1 5 Start 4 Die Markierung eines besuchten Knotens ist selbstverständlich und wird daher nicht extra erwähnt.

Teil 2 Als nächstes wird die 4 vom Stack genommen Da die 6 von 4 aus erreichbar ist, wird ihr die 4 als Vorgänger eingetragen und die 6 auf den Stack gelegt 5 Start 1 4 6

Teil 3 Nun wird die 6 vom Stack genommen und auf erreichbare Knoten untersucht Es gibt aber keine, daher wird das nächste Element vom Stack genommen 4 5 Start 1 6

Teil 4 Da die 6 keinen Nachfolger hatte und wir den nächsten Knoten vom Stack nehmen sollten, ist nun die 1 an der Reihe Wir nehmen die erreichbaren Nachfolger und legen sie auf den Stack 1 2 4 5 Start 6

Teil 5 Wir nehmen die 2 vom Stack und testen die Nachfolger Hierbei finden wir die 3 und legen sie auf den Stack Da die 2 eine Schleife hat, finden wir die 2 zwar auch als Nachfolger, aber da sie schon einmal besucht wurde, wird sie nicht auf den Stack gelegt 1 4 5 Start 6 2 3

Teil 6 Von 3 aus finden wir die 4 und die 7, die 4 wurde bereits besucht und ist daher uninteressant Die 7 wandert auf den Stack 2 1 4 5 Start 6 3 7 Ende

Teil 7 Wenn wir nun von der 7 aus weitere Knoten suchen wollen, gibt es zwei Dinge: 7 ist der Endpunkt 7 hat keine Nachfolger mehr ( zumindest in diesem Beispiel ) Der Tiefensuch-Algorithmus ist beendet 3 2 1 4 5 Start 6 7 Ende Der gefundene Weg lautet: 5 (Start) 1 2 3 7 (Ende) Nun wollen wir uns noch die zugehörige Tabelle ansehen.

Teil 8 Schritte Vorg [1] Vorg [2] Vorg [3] Vorg [4] Vorg [5] Vorg [6] Stack 1. - S (5) 2. 5 - (4) (1) 3. 5 - 4 (6) (1) 4. 5 - 4 (1) 5. 5 1 - 4 (2) 6. 5 1 2 - 4 (3) 7. 5 1 2 - 4 3 (7)

Breitensuche (topologisches Sortieren) 1 2 3 4 5 6 7 Wir werden uns den Algorithmus nun am obenstehenden Graphen verdeutlichen.

Teil 1 Zunächst wird das Feld der Eingangsgrade initialisiert und die Knoten mit dem Eingangsgrad 0 werden in die Queue eingefügt. 1 Schritte Nummer Nr.[1] [2] [3] [4] [5] [6] [7] 0. - Schritte Queue E-Grad[1] [2] [3] [4] [5] [6] [7] 0. (1) 2 1

Teil 2 Der Knoten 1 wird aus der Queue genommen und erhält die Nummer 1. Nun werden seine Nachbarknoten untersucht und diejenigen mit Eingangsgrad 1 in die Queue eingereiht. Somit wandert die 4 in die Queue. Die 2 hat noch Vorgänger und wird dadurch nicht eingereiht. Aber ihr Eingangsgrad wird reduziert. 1 1 2 4 Schritte Nummer Nr.[1] [2] [3] [4] [5] [6] [7] 0. - 1. 1 - Schritte Queue E-Grad[1] [2] [3] [4] [5] [6] [7] 0. (1) 2 1 1. (4) 1 2

Teil 3 Die 4 wird aus der Queue entnommen und erhält die nächste Nummer. Die 5 wird als Nachbarknoten mit Eingangsgrad 1 auf E-Grad 0 gesetzt und in die Schlange eingereiht. 1 2 4 2 5 Schritte Nummer Nr.[1] [2] [3] [4] [5] [6] [7] 0. - 1. 1 - 2. 2 1 - Schritte Queue E-Grad[1] [2] [3] [4] [5] [6] [7] 0. (1) 2 1 1. (4) 1 2 2. (5) 1 2

Teil 4 Nachdem wir der 5 die Nummer 3 zugewiesen haben, untersuchen wir auch ihre Nachbarn und erhalten 2 und 6 jeweils mit E-Grad 1. Somit werden beide der Reihe nach in die Queue gesetzt. 5 2 1 4 6 3 Schritte Nummer Nr.[1] [2] [3] [4] [5] [6] [7] 0. - 2. 2 1 1. 3. 3 1 - 2 Schritte Queue E-Grad[1] [2] [3] [4] [5] [6] [7] 0. (1) 2 1 2. (5) 1. (4) 3. (2/6) 1 2

Teil 5 Nun wird die nächste Zahl (2) aus der Queue genommen und bekommt die folgende Nummer. Wir untersuchen ihre Nachfolger und finden die 3, die nun auch in die Queue gereiht wird. 5 2 1 4 6 3 3 4 Schritte Nummer Nr.[1] [2] [3] [4] [5] [6] [7] 0. - 2. 2 1 1. 3. 3 4. 4 1 - 2 3 Schritte Queue E-Grad[1] [2] [3] [4] [5] [6] [7] 0. (1) 2 1 2. (5) 1. (4) 3. (2/6) 4. (6/3) 2

Teil 6 Die nächste Zahl in der Queue ist die 6. Also bekommt sie die nächste Nummer und wir betrachten Ihre Nachfolger. Der Nachfolger ist die 7, sie hat aber den E-Grad 2 und wird daher nur um 1 reduziert, kommt aber nicht in die Queue. 4 5 2 1 6 3 7 5 Schritte Nummer Nr.[1] [2] [3] [4] [5] [6] [7] 0. - 2. 2 1 1. 3. 3 4. 4 5. 5 1 4 - 2 3 Schritte Queue E-Grad[1] [2] [3] [4] [5] [6] [7] 0. (1) 2 1 2. (5) 1. (4) 3. (2/6) 4. (6/3) 5. (3) 1

Teil 7 Die nächste Zahl ist die 3. Wir nehmen sie aus der Queue und weisen ihr die nächste Nummer zu. Wir überprüfen die Nachfolger und stoßen auf die 7. Diese wandert nun, da sie den E-Grad 1 hat in die Queue. 5 4 2 1 6 3 7 6 Schritte Nummer Nr.[1] [2] [3] [4] [5] [6] [7] 0. - 2. 2 1 1. 3. 3 4. 4 5. 5 6. 6 1 4 2 3 5 - Schritte Queue E-Grad[1] [2] [3] [4] [5] [6] [7] 0. (1) 2 1 2. (5) 1. (4) 3. (2/6) 4. (6/3) 5. (3) 6. (7)

Teil 8 Als letzte Zahl nehmen wir die 7 aus der Queue und geben ihr die Nummer 7. Sie hat keine Nachfolger mehr und somit kann der Algorithmus beendet werden. 5 4 2 1 6 3 7 7 Schritte Nummer Nr.[1] [2] [3] [4] [5] [6] [7] 0. - 2. 2 1 1. 3. 3 4. 4 5. 5 6. 6 7. 7 1 4 6 2 3 5 Schritte Queue E-Grad[1] [2] [3] [4] [5] [6] [7] 0. (1) 2 1 2. (5) 1. (4) 3. (2/6) 4. (6/3) 5. (3) 6. (7) 7. (-)

Teil 9 :Nachfolgend erhalten wir die folgende Numerierung der Knoten

Minimaler Weg Grundgedanke Algorithmen Dijkstra Floyd Kürzester Weg durch den Graphen Beispiel: Fahrt von Hamburg nach München Welcher Weg ist: der kürzeste ? der schnellste ? Algorithmen Dijkstra Floyd

Prioritätsgesteuerte Breitensuche (Algorithmus nach Dijkstra)

Teil 1 a b C f g d e 4 1 2 3 An diesem Beispiel wollen wir uns den Algorithmus nach Dijkstra verdeutlichen Wir suchen „kürzesten“ oder „kostengünstigsten“ Weg von a nach g

Teil 2 Schritt Kosten[a] [b] [c] [d] [e] [f] [g] 0.  1.  2.  3. 1  4 1 2 3 Schritt Kosten[a] [b] [c] [d] [e] [f] [g] 0.  1.  2.  3. 1  4. 1 3  5. 1 3  4 6. 1 3 4  7. 1 3 4 5 Schritt Vorg [a] [b] [c] [d] [e] [f] [g] P-Queue 0. - (0,a) 1. - a (0,b)(4,f) 2. - a b (1,c)(4,f)(4,d) 3. - a b c (3,d)(4,f) 4. - a b c d (4,f)(4,e) 5. - a b c d f (4,e)(7,g) 6. - a b c d e (5,g) 7. - a b c d e (-,-)

Teil 3 Der kürzeste Weg, den man in diesem Graphen nehmen kann, hat die „Länge“ 5 und sieht wie folgt aus: a b C f g d e 4 1 2 3 a b c d e g Knoten 1 2  = 5 Kosten

Kürzester Weg für alle Knoten (Algorithmus nach Floyd)

Teil 1 a b C f g d e 4 1 2 3

Teil 2 a b C f g d e 4 1 2 3

Teil 3 a b C f g d e 4 1 2 3

Teil 4 a b C f g d e 4 1 2 3

Teil 5 a b C f g d e 4 1 2 3

Teil 6 a b C f g d e 4 1 2 3

Vielen Dank für Ihr Interesse ENDE Vielen Dank für Ihr Interesse Auf Wiedersehen sagt Ihr Jörg Hendricks

Tiefensuche Start Ende 5 4 6 7 3 2 1

Breitensuche 1 2 3 4 5 6 7

Minimaler Weg a b C f g d e 4 1 2 3