Interdisziplinärer Studientag Informatik Dipl.-Inform. D. Kriesel M.Sc. Dipl.-Ing. (FH) M.comp.Sc. M.A. B.A. D.M. Meyer Gymnasium an der Wolfskuhle D.M. Meyer 1 Ablauf I. II. III. IV. V. VI. VII. VIII. Begrüßung Teil 1 – Schwarmverhalten Übungen Teil 2 – Kürzeste Wege Übungen Teil 3 – Synthetische Biologie Übungen Fragerunde D.M. Meyer 2 Wegfindungsprobleme in Natur & Technik D.M. Meyer 3 Wegfindung: Alltagsbeispiele 1. Ameisen suchen Nahrung, finde „gute Wege“ und ihr Nest 2. Navigationsgeräte suchen den ,,besten Weg“ von einem Startpunkt zu einem Zielpunkt 3. Ein Postbote möchte in einer Rundreise möglichst schnell fertig werden, muss dabei aber alle Briefkästen (genau einmal) besuchen 4. Telefon-/Netzwerkkabel, Rohre etc. müssen effektiv verlegt werden (Kosten, Materialbedarf, Erreichbarkeit, Ausfallsicherheit, …) D.M. Meyer 4 Wegfindung: Eine ergiebige Fragestellung • Wegfindung ist in Natur und Technik ein häufig anzutreffendes Problem mit vielen Detailabwandlungen • hohe praktische Relevanz • gutes Beispiel für – Modellbildung – Mathematisierung – Bearbeitung mit Informatik D.M. Meyer 5 Modellbildung und Problemreduktion D.M. Meyer 6 Modellbildung: Fokus auf das Wesentliche D.M. Meyer 7 Modellbildung: Fokus auf das Wesentliche D.M. Meyer 8 Mathematisierung im Graphenmodell • alles Unwesentliche fällt weg • Reduktion auf 3 Strukturelemente – Knoten – Kanten – Gewichte 10 • Ermöglicht mathematische Behandlung mit theoretischer Fundierung (Korrektheitsbeweise etc.) D.M. Meyer 9 Unsere Aufgabe >> Finde den schnellsten Weg von einem Startpunkt zu einem Zielpunkt << Anmerkung: Gewichte an den Kanten geben z.B. die Fahrtzeit an Vorausgesetzt werden positive Gewichte D.M. Meyer 10 Ideen? D.M. Meyer 11 Dijkstra Algorithmus >> Finde den schnellsten Weg von einem Startpunkt zu einem Zielpunkt << Der Dijkstra Algorithmus liefert auch kürzeste Wege von einem Startknoten zu allen anderen Knoten des Graphen Prof. Edsger W. Dijkstra 1930-2002, Niederlande Turing-Award 1972 D.M. Meyer 12 Dijkstra – Zentrale Ideen (1) Knotenmenge V (vertices) mit Knoten v Kantenmenge E (edges) mit Kanten e Gewicht der Kante e := c(a,b) zwischen a und b Distanz vom Startknoten s bis zum Knoten w := dist(w) Graph G(V,E,s) Vorüberlegungen: • Auch über „Umwege“ können kürzere Wege zu einem Knoten entstehen Unterscheide permanent und temporär markierte Knoten • Markiere den Startknoten s als aktiven Knoten permanent, alle anderen temporär • Setze die Distanz zu allen Knoten auf unendlich • Merke dir den Vorgänger für Wegebestimmung D.M. Meyer 13 Dijkstra – Zentrale Ideen (2) Zentrale Frage: Wir haben den Startknoten s als ersten permanenten Knoten p markiert, wie aber gehen wir nun weiter vor, also welchen Knoten wählen wir aus? Lösung: Denjenigen temporär markierten Knoten a mit minimaler temporärer Distanz. Warum? Wir haben a direkt von p aus erreicht. Falls ein kürzerer Weg von p zu a existieren würde, müsste er über einen Zwischenknoten zwischen p und a laufen. Deren Abstand zu p ist aber größer, da wir ja denjenigen Knoten a mit minimalem Abstand zu p wählen. D.M. Meyer 14 Dijkstra – Initialisierungsphase Knotenmenge V (vertices) mit Knoten v Kantenmenge E (edges) mit Kanten e Gewicht der Kante e := c(e), Distanz vom Startknoten s bis zum Knoten w := dist(w) Temporär markierte Knotenmenge T Permanent markierte Knoten P Dijkstra( G(V,E,s) ) INIT: dist(v) = ∞ dist(s)=0 pred(s)=s pred(v)=NULL P={s}, T=V\{s} D.M. Meyer für alle Knoten für alle Knoten außer für s 15 Dijkstra – Hauptphase Main: Wiederhole solange es noch temporär markierte Nachbarn von permanent markierten Knoten gibt 1. Berechne Distanzen aller noch nicht permanent markierten Nachbarknoten des aktiven Knotens per Distanz des aktiven Knotens + Kantengewicht der verbindenden Kante Ist diese Distanz < als die bereits vorhandene, so wird sie übernommen und der aktive Knoten als Vorgänger eingetragen 2. Wähle Knoten mit minimaler temporärer Distanz und markiere ihn permanent. Er wird zum aktiven Knoten. D.M. Meyer 16 Dijkstra Algorithmus: Beispiel (PC) D.M. Meyer 17 Dijkstra Algorithmus: Notation Damit man nicht hoffnungslos die Übersicht verliert, notiert man sich den Ablauf in Tabellenform und überschreibt mit jedem Schritt die Einträge INIT T a b c d e f P s dist() 0 ∞ ∞ ∞ ∞ ∞ ∞ pred() s NULL NULL NULL NULL NULL NULL D.M. Meyer 18 Dijkstra Algorithmus: Beispiel - Lösung D.M. Meyer 19 Dijkstra Algorithmus: Übungsphase D.M. Meyer 20 Dijkstra Algorithmus: Endlösung D.M. Meyer 21 Dijkstra Algorithmus: Lösungsweg (1) D.M. Meyer 22 Dijkstra Algorithmus: Lösungsweg (2) D.M. Meyer 23 Dijkstra Algorithmus: Lösungsweg (3) D.M. Meyer 24 Dijkstra – Implementierung Wie sollen die Strukturelemente repräsentiert werden (Datenstrukturen)? – – – – – – Knotenmenge V (vertices) mit Knoten v Kantenmenge E (edges) mit Kanten e Gewicht der Kante e := c(e) Distanz vom Startknoten s bis zum Knoten w := dist(w) Temporär markierte Knotenmenge T Permanent markierte Knoten P Was müssen die Datenstrukturen effizient können? – einfügen, löschen, suchen, sortieren, … >> Das wirft nochmals eine Reihe weiterer Fragen auf ☺ D.M. Meyer 25 Schlusswort – Wie immer gilt … Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie D.M. Meyer 26 Quellen und Literaturempfehlungen 1. Röglin, Heiko: Algorithmen und Berechnungskomplexität I, Vorlesung, Uni Bonn, WS 2010/2011 2. Delling, Daniel: Algorithmen für Routenplanung, Vorlesung 1, Lehrstuhl für Algorithmik I, Institut für theoretische Informatik, KIT (Uni Karlsruhe) 3. http://de.wikipedia.org/wiki/Dijkstra-Algorithmus 4. Büsing, Christina: Graphen- und Netzwerkoptimierung, Spektrum Verlag, 2010 5. Hußmann et al.: Kombinatorische Optimierung erleben, Vieweg Verlag, 2007 6. Teschl, Teschl: Mathematik für Informatiker, Band 1, 3. Auflage, Springer Verlag, 2008 D.M. Meyer 27