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