Konzepte der Informatik - Technische Universität Braunschweig

Werbung
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
Herunterladen