Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens Gallenbacher Vorkurs Informatik 2011 1 Das Ameisen-Prinzip Übertragung des Ameisen-Prinzips auf den Computer Wie könnten also unsere Routenplaner im Auto das Problem des kürzesten Weges lösen? Ein Simulieren der vorgestellten Vorgehensweise wäre gegenüber der BruteForce-Methode von Vorteil. Trotzdem ist der Informatiker hier gefragt, das gefundene Verfahren für den Computer zu optimieren. Überlegen Sie, welche Teile des Ameisenprinzips für die Problemlösung relevant sind. Vorkurs Informatik 2011 2 Der Dijkstra-Algorithmus Der erste Schritt Die Ameisen liefen in alle direkt erreichbaren Städte, um zu ermitteln, wie lange sie unterwegs sind: Ein Computer muss diese Zeiten nicht ermitteln. Er kennt sie bereits, da die Längen zwischen den Strecken an den Pfaden verzeichnet sind. Um die Entfernung zuordnen zu können, wird die dazugehörige Strecke markiert. Die Ameisen, die zuerst bei einer Stadt ankamen, markierten die Strecke als „günstig“ und teilten sich auf: Der Computer muss nur die Stadt mit der kleinsten Zahl bestimmen. Vorkurs Informatik 2011 3 Der Dijkstra-Algorithmus Fortsetzung (1) In diesem Beispiel also B: Von B aus werden alle Entfernungen zu allen Nachbarn bestimmt. Über B wurden schon 34 km zurückgelegt, daher müssen diese dazu addiert werden. Bei H steht schon ein Wert. Von I direkt sind es 65, über B jedoch nur 64 km. Der Ameisen Trupp über B würde also zuerst ankommen. Daher gilt für das Dijkstra-Verfahren: Wenn die neue Zahl kleiner ist, wird die alte durch diese ersetzt und der Weg entsprechend markiert. Wenn die neue Zahl größer ist, passiert nichts. Vorkurs Informatik 2011 4 Der Dijkstra-Algorithmus Fortsetzung (2) Wie geht es nun weiter? Prinzipiell wie am Anfang: Aus allen mit Zahlen markierten Städten, die noch nicht von Ameisen besucht wurden, wird die mit der kleinsten Zahl herausgesucht. Dort kommen die Ameisen als Nächstes an. In diesem Fall ist das C. Vorkurs Informatik 2011 5 Der Dijkstra-Algorithmus Fortsetzung (3) Von C werden wieder alle benachbarten Städte betrachtet: Nach M käme man in 71 km, nach X in 63 km. Beides wird jedoch von der bereits vorhandenen Zahl unterboten, also passiert nichts Die nächste nicht markierte Stadt mit der kleinsten Zahl wird gesucht. Vorkurs Informatik 2011 6 Der Dijkstra-Algorithmus Fortsetzung (4) Jetzt also M: Es werden wieder alle benachbarten Städte betrachtet. Hier zeigt sich, dass sowohl die Strecke zu A als auch zu X kürzer ist. Die alten Markierungen und Entfernungen werden gestrichen. Die neuen Wege und Entfernungen markiert bzw. notiert. Vorkurs Informatik 2011 7 Der Dijkstra-Algorithmus Fortsetzung (5) Die Stadt mit der kleinsten Zahl ist jetzt P: Es gibt Verbindungen zu H, K, F und O. Bei K, F und O wird jeweils wieder die Summe der Entfernungen notiert und die Strecke markiert. Bei H steht schon eine Entfernung kleiner der Summe von I zu P zu H. Daher passiert hier nichts. Vorkurs Informatik 2011 8 Der Dijkstra-Algorithmus Fortsetzung (6) Nun ist X die Stadt mit der kleinsten Zahl: Wieder werden die Entfernungen zu den Nachbarstädten ermittelt. C und B sind bereits markiert, die kürzesten Wege dorthin sind also bereits gefunden. Strecke zu N wird markiert und die Entfernung notiert. Vorkurs Informatik 2011 9 Der Dijkstra-Algorithmus Fortsetzung (7) Die noch nicht markierte Stadt mit der kleinsten Zahl ist jetzt H: Nachbarstädte I und P sind bereits markiert. Die Zahl an K ist kleiner als die Summe der Entfernungen von B aus. Die Strecken L und Z werden markiert und die Entfernung notiert. Vorkurs Informatik 2011 10 Der Dijkstra-Algorithmus Fortsetzung (8) Jetzt folgt Y: Die Summe der Entfernungen zu L und Z sind kleiner als die bisherigen. Daher Streichung der bisherigen Markierungen und Zahlen. Neue Strecken werden markiert bzw. deren Entfernungen notiert. Da die bisherige Summe bei N kleiner ist, passiert hier nichts. Vorkurs Informatik 2011 11 Der Dijkstra-Algorithmus Fortsetzung (9) Die nächste nicht markierte Stadt mit der kleinsten Zahl ist A: Die Nachbarstadt B ist schon markiert. Stadt D und N haben kleinere Zahlen, hier passiert nichts. Vorkurs Informatik 2011 12 Der Dijkstra-Algorithmus Fortsetzung (10) Nun wird K markiert: Summe der Entfernungen über K zu F ist kleiner als die bisherige. Strecke zu F wird markiert und die neue Zahl notiert. Strecken zu den Nachbarstädten G und E werden markiert und deren Zahlen zugewiesen. Nachbarstadt Z hat schon eine Zahl kleiner der Summe der Entfernungen über K, daher passiert hier nichts. Vorkurs Informatik 2011 13 Der Dijkstra-Algorithmus Fortsetzung (11) Jetzt ist N die Stadt mit der kleinsten Zahl: Nachbarstädte A und Y sind bereits markiert. Zahl von D ist kleiner als die Summe der Entfernungen über N. Vorkurs Informatik 2011 14 Der Dijkstra-Algorithmus Fortsetzung (12) Als nächstes folgt Z: H und K sind schon markiert. Summe der Entfernungen über Z zu G ist jedoch kleiner als die bisherige. Strecke wird markiert und die neue Zahl notiert. Vorkurs Informatik 2011 15 Der Dijkstra-Algorithmus Fortsetzung (13) Nun wird die Stadt D markiert: Nachbarstädte A und N sind bereits markiert. L hat eine kleinere Zahl als die von D aus berechnete Entfernung. Vorkurs Informatik 2011 16 Der Dijkstra-Algorithmus Fortsetzung (14) Die nächste noch unmarkierte Stadt mit der kleinsten Zahl ist L: Nachbarstädte D, H und Y sind bereits markiert. Summe der Entfernungen zu G ist jedoch größer als die bisher notierte Summe. Vorkurs Informatik 2011 17 Der Dijkstra-Algorithmus Fortsetzung (15) Nun kommt F an die Reihe: Nachbarstadt P ist schon markiert. bei E ist die bisherige Summe kleiner. bei O ist die Summe der Entfernungen kleiner als die bisherige und wird daher ersetzt und die Strecke zu O markiert. Vorkurs Informatik 2011 18 Der Dijkstra-Algorithmus Fortsetzung (16) Jetzt ist E die noch nicht markierte Stadt mit der kleinsten Summe: In diesem Schritt ändert sich nichts. F ist schon markiert. Summe der Entfernungen von G und O ist kleiner. Vorkurs Informatik 2011 19 Der Dijkstra-Algorithmus Fortsetzung (17) Die noch nicht markierte Stadt mit der kleinsten Summe ist G: Alle Nachbarstädte sind schon markiert. Hier passiert nichts weiter. Vorkurs Informatik 2011 20 Der Dijkstra-Algorithmus Ende Die letzte unmarkierte Stadt ist O: Alle Nachbarstädte sind schon markiert Hier passiert also nichts mehr Und da es keine verbliebenen Städte mehr gibt, ist hier der Algorithmus zu Ende. Der kürzeste Weg von Imstadt nach Oppenheim führt also über Pappheim, Krupsing und Flughafen und ist 123 km lang. Vorkurs Informatik 2011 21 Der Dijkstra-Algorithmus Edsger Wybe Dijkstra Geboren 1930 in Rotterdam Professor an der Universität in Eindhoven Vorstellung des Algorithmus zur Berechnung des kürzesten Weges in einem Graphen im Jahr 1959 Wechsel an die Universität von Texas im Jahr 1984 Beitrag zur Einführung der strukturierten Programmierung Erhielt den Turing-Preis 1972 Verstarb 2002 in seiner Heimat Nuenen Vorkurs Informatik 2011 22 Der Dijkstra-Algorithmus Der Algorithmus Vorkurs Informatik 2011 23 Der schnellste Weg Einleitung Wie sieht es etwa aus, wenn wir für unsere erste Karte nicht den kürzesten, sondern den schnellsten Weg suchen? Vorkurs Informatik 2011 24 Der schnellste Weg Einleitung Analog zur Aufgabe 2 der gestrigen Übung nehmen wir folgende Durchschnittsgeschwindigkeiten an: Autobahn: 120 km/h Landstraße (rot und gelb): 80 km/h Gemeindestraßen (schwarz): 50 km/h Und veranschlagen pro Ortsdurchfahrt 10 Minuten (gilt der Einfachheit halber auch auf Autobahnen). Vorkurs Informatik 2011 25 Der schnellste Weg Einleitung Wie müssen wir vorgehen? Wir erstellen einfach eine Karte, bei der an den Straßen nicht die Strecke, sondern die Fahrzeit in Minuten steht. Dazu teilen wir die Strecke durch die angenommene Geschwindigkeit. Für die Strecke zwischen Imstadt und Budingen ergibt sich auf diese Weise 34 km : 80 km/h = 34 km : 80 km / 60 min = 25,5 min Außerdem müssen für jede Ortsdurchfahrt 10 min addiert werden (also für jeden Ort an einem Ende der Strecke 5 Minuten): Daher muss man für die besagte Stecke 35,5 min veranschlagen. Vorkurs Informatik 2011 26 Der schnellste Weg Der schnellste Weg Achtung: Strecken, die an einem Ende die Nicht-Orte X, Y und Z haben, bekommen natürlich nicht die zusätzliche Zeit für die Ortsdurchfahrt angerechnet. Mit dieser Karte kann jetzt der ganz normale Dijkstra-Algorithmus durchgeführt werden. Vorkurs Informatik 2011 27 Der schnellste Weg Der schnellste Weg Nach Anwendung des Dijkstra-Algorithmus erhält man die nebenstehende Karte mit den schnellsten Wegen von Imstadt zu allen anderen Städten. Wenn Sie das Ergebnis mit der Lösung für die kürzeste Wegstrecke vergleichen, stellen Sie fest, dass es recht ähnlich, aber doch nicht identisch ist. Vorkurs Informatik 2011 28 Der schnellste Weg Vergleich – kürzester und schnellster Weg Vorkurs Informatik 2011 29 Die Schilda-Rallye Der Stadtplan von Schilda Der Stadtrat hat vor kurzem beschlossen, alle Straßen zu Einbahnstraßen zu machen. Vorkurs Informatik 2011 30 Die Schilda-Rallye Problemstellung Die Fahrzeuge von Schilda-Taxi warten auf den Hotels Adler und Gozo sowie auf dem Parkplatz der Pension Kapitol: Aufgrund der neuen Verkehrsführung benötigen die Fahrer einen Plan, wie sie auf dem kürzesten Weg von ihrem Standort zu allen anderen Hotels kommen. Eine Entfernungstabelle ist auch zur Berechnung der neuen Tarife notwendig. Vorkurs Informatik 2011 31 Die Schilda-Rallye Markierung aller Straßenkreuzungen Vorkurs Informatik 2011 32 Die Schilda-Rallye Der abstrakte Stadtplan Vorkurs Informatik 2011 33 Die Schilda-Rallye Der erste Schritt Vorkurs Informatik 2011 34 Die Schilda-Rallye Fortsetzung (1) Vorkurs Informatik 2011 35 Die Schilda-Rallye Fortsetzung (2) Vorkurs Informatik 2011 36 Die Schilda-Rallye Fortsetzung (3) Vorkurs Informatik 2011 37 Die Schilda-Rallye Fortsetzung (4) Vorkurs Informatik 2011 38 Die Schilda-Rallye Fortsetzung (5) Vorkurs Informatik 2011 39 Die Schilda-Rallye Fortsetzung (6) Vorkurs Informatik 2011 40 Die Schilda-Rallye Fortsetzung (7) Vorkurs Informatik 2011 41 Die Schilda-Rallye Fortsetzung (8) Vorkurs Informatik 2011 42 Die Schilda-Rallye Fortsetzung (9) Vorkurs Informatik 2011 43 Die Schilda-Rallye Fortsetzung (10) Vorkurs Informatik 2011 44 Die Schilda-Rallye Fortsetzung (11) Vorkurs Informatik 2011 45 Die Schilda-Rallye Fortsetzung (12) Vorkurs Informatik 2011 46 Die Schilda-Rallye Fortsetzung (13) Vorkurs Informatik 2011 47 Die Schilda-Rallye Fortsetzung (14) Vorkurs Informatik 2011 48 Die Schilda-Rallye Fortsetzung (15) Vorkurs Informatik 2011 49 Die Schilda-Rallye Fortsetzung (16) Vorkurs Informatik 2011 50 Die Schilda-Rallye Fortsetzung (17) Vorkurs Informatik 2011 51 Die Schilda-Rallye Fortsetzung (18) Vorkurs Informatik 2011 52 Die Schilda-Rallye Fortsetzung (19) Vorkurs Informatik 2011 53 Die Schilda-Rallye Fortsetzung (20) Vorkurs Informatik 2011 54 Die Schilda-Rallye Fortsetzung (21) Vorkurs Informatik 2011 55 Die Schilda-Rallye Fortsetzung (22) Vorkurs Informatik 2011 56 Die Schilda-Rallye Ende Vorkurs Informatik 2011 57 Die Schilda-Rallye Entfernungstabelle Vorkurs Informatik 2011 Hotel Entfernung (km) Adler 0,0 Bogart 11,5 Club 9,7 Doge 8,1 Emilio 3,7 Fromm 6,5 Gozo 6,2 Holunder 7,6 Iliona 11,4 Jorge 9,8 Kapitol 10,7 Lundt 7,9 58 Vielen Dank für Ihre Aufmerksamkeit! Vorkurs Informatik 2011 59