31.10.2013 Aufrufe

Konzepte der Informatik

Konzepte der Informatik

Konzepte der Informatik

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!