Informatik II I. Modellbildung mit Graphen Bei der Reiseplanung tritt oft das Problem der schnellsten oder kürzesten Route (was nicht unbedingt dasselbe ist) zwischen zwei Orten auf. In manchen Fällen ist dies auch gar nicht so einfach zu finden. Trotzdem werden in letzter Zeit sehr häufig sogenannte Routenplaner (auch im Internet) angeboten, die diese Aufgabe lösen. An einem kommerziellen Beispiel lassen sich die Leistungsmerkmale eines Routenplaners untersuchen. (Beispiele: www.reiseroute.de) Anschließend soll versucht werden selbst solch einen Routenplaner zu erstellen. I.1 Die Datenstruktur Graph Die Betrachtung von Routenplanern zeigte folgende Optionen. – Nach Eingabe von Start- und Zielort kann die kürzeste Strecke ermittelt werden. – Nach Eingabe von Start- und Zielort kann die schnellste Strecke (Strecke mit kürzester Fahrzeit) ermittelt werden. – Daneben können Zwischenorte eingegeben werden, die in der eingegebenen Reihenfolge angefahren werden. – Zusätzlich kann eine Karte mit der Fahrtroute erstellt werden. – Das benutzte Fahrzeug bzw. die Geschwindigkeiten auf den einzelnen Strassen können festgelegt werden. Pflichtenheft für den Routenplaner – Nach Eingabe von Start- und Zielort soll die kürzeste bzw. schnellste Route ermittelt und ausgegeben werden. – Es soll eine Liste der Orte ausgegeben werden. – Es soll eine Liste der Wege ausgegeben werden – Es soll eine Karte mit der Fahrtroute ausgegeben werden. – Die Landkarte wird beim Starten des Programms automatisch geladen und beim Beenden automatisch abgespeichert. – Um die Karte zu erweitern kann eine Eingabe für neue Orte und Verbindungen vorgesehen werden. Nachdem nun die Anforderungen klar sind, gilt es die Datenstruktur und den groben Aufbau des Programms festzulegen. Zuerst muss die Karte im Computer abgebildet werden. Als Beispiel soll die Karte der Umgebung von Wertingen dienen. Die vereinfachte Karte besteht aus Orten und Wegstrecken zwischen den Orten. Solch ein Struktur bezeichnet man in der Informatik als Graph. Informatik II 1 Definition Ein Graph besteht aus einer Menge von Punkten (Knoten) und einer Menge von Linien (Kanten), die diese Punkte verbinden. Die Kanten können mit einer Größe (z.B. Entfernung) versehen sein. Man spricht dann von bewerteten Kanten. Bei ungerichteten Graphen gibt es zwischen zwei Knoten maximal eine Kante, wobei die Richtung der Kante keine Rolle spielt. Bei gerichteten Graphen kann es zwei Kanten unterschiedlicher Richtung geben. Betrachtet man nur die Entfernung zwischen zwei Orten, so handelt es sich um einen ungerichteten Graphen. Bei Betrachtung der Fahrzeiten können je nach Fahrtrichtung unterschiedliche Zeiten auftreten. Entfernungsplan: Pfaffenhofen 1 km 2 km Unterthürheim Buttenwiesen 2 km 4 km 7 km 5 km 4 km 4 km Meitingen 5 km Wertingen 4 km 6 km 5 km Rieblingen 3 km Binswangen Langenreichen 4 km Hohenreichen 4 km 4 km 3 km 5 km Roggden 3 km 5 km Biberbach Laugna 4 km 6 km 2 km Zusamaltheim 3 km Bocksberg 4 km Für die Suche des schnellstem Weges benötigt man einen Zeitenplan. Hier muss zuerst einmal das Fahrzeug berücksichtigt werden, außerdem der Strassenzustand, sowie Steigungen. Die Zeiten beziehen sich auf ein Auto (Geschwindigkeit ca. 60 km/h) Informatik II 2 Fahrzeitenplan: Pfaffenhofen 1 min 2 min 2 min Unterthürheim Buttenwiesen 2 min 3 min 4 min 7 min Langenreichen 4 min Hohenreichen 4 min 4 min 4 min 5 min Wertingen 6 min Binswangen3 min 8 min 4 min 6 min 4 min 5 min 4 min 3 min 5 min Roggden 7 min Biberbach Laugna 6 min 5 min 8 min 6 min 10 min Rieblingen 5 min Meitingen 6 min 2 min Zusamaltheim 3 min Bocksberg 5 min Wie lassen sich diese Graphen nun in dem Computer implementieren ? D.h. Welche der Datenstrukturen passen zu dem Graphen ? Öfters sieht man auf Karten Entfernungstabellen (oder mathematisch ausgedrückt Matrizen) aus denen man die Entfernungen zwischen zwei Orten ablesen kann. Diese Matrizen liefern eine Möglichkeit der Darstellung. Für den Entfernungsplan ergibt sich die folgende Matrix. Informatik II 3 Entfernungsmatrix Biber bach Biber bach Bins Bock Butte Hohe wang sberg nwies nreic en en hen Lang enrei chen Laug na Meiti Pfaffe Riebl Rogg ngen nhofe ingen den n Unter Werti Zusa thürh ngen malth eim eim 0 / / / / 5 / 4 / 5 / / / / / 0 / / / / / / / / 3 / 3 6 / / 0 / / / 3 / / / / / / 4 Butte nwies en / / / 0 4 / / / 2 / / 2 7 / Hohe nreic hen / / / 4 0 4 / / / 5 / / 4 / Lang enrei chen 5 / / / 4 0 / 5 / 4 / / / / Laug na / / 3 / / / 0 / / 5 4 / 4 / Meiti ngen 4 / / / / 5 / 0 / / / / / / / / / 2 / / / / 0 / / 1 / / Riebl ingen 5 / / / 5 4 5 / / 0 / / 6 / Rogg den / 3 / / / / 4 / / / 0 / 3 2 / / / 2 / / / / 1 / / 0 4 / / 3 / 7 4 / 4 / / 6 3 4 0 / / 6 4 / / / / / / / 2 / / 0 Bins wang en Bock sberg Pfaffe nhofe n Unter thürh eim Werti ngen Zusa malth eim Informatik II 4 Definition: Jeder Graph lässt sich durch eine Matrix, genannt Adjazenzmatrix, darstellen. Hierbei entsprechen die Knoten den Spalten- bzw. Zeilenbezeichnungen. Alle vorhandenen Kanten werden als 1 oder durch ihre Bewertung in der Matrix eingetragen. Ist der Graph ungerichtet so ist die Adjazenzmatrix symmetrisch zur Hauptdiagonale. Eine Matrix kann als zweidimensionales Feld im Computer implementiert werden. In Oberon darf der Index jedoch nur eine Zahl sein, daher können die Zeilen- und Spaltenbezeichnungen nur Zahlen sein. Wir benötigen daher eine Zuordnung der Ortsnamen zu den Zahlen. Dies kann durch eine eindimensionales Feld erfolgen, wobei der Ortsname Inhalt der Zelle und die Zahle der Index der Zelle ist. Damit sind wir nun in der Lage die obigen Karten im Computer darzustellen. Datentypen für den Routenplaner CONST cMaxOrte = 20; TYPE tName = ARRAY 20 OF CHAR; tOrte = ARRAY cMaxOrte OF tName; (* Feld zur Bestimmung der Ortskennung *) tMatrix = ARRAY cMaxOrte, cMaxOrte OF INTEGER; (* Die Indices sind die Ortskennungen *) tWeg = ARRAY cMaxOrte OF INTEGER; (* Feld zur Aufzeichnung des zurückgelegten Weges. Es enthält die Ortskennungen der besuchten Orte *) VAR gEntfernungsmatrix : tMatrix; gZeitmatrix : tMatrix; gOrte : tOrte; gOrtszahl : INTEGER; Nun können wir uns dem Programmaufbau zuwenden. Die Steuerung soll über ein Menü erfolgen. Realisiert man die einzelnen Menüoptionen als Prozeduren, so ergibt sich folgender Prozedurbaum. Informatik II 5 Prozedurbaum für das Programm Route: Route Entfernungsmatrix Zeitmatrix Orte Ortszahl Entfernungsmatrix Zeitmatrix Orte Ortszahl Entfernungsmatrix Zeitmatrix Orte Ortszahl Sichern Laden Datei Menue Entfernungsmatrix Orte Ortszahl Entfernungsmatrix Orte Ortszahl Zeitmatrix Orte Ortszahl KurzerWeg Orte Ortszahl SchnellerWeg Wege Berechne Entfernungsmatrix Zeitmatrix Orte Ortszahl NeuerOrt Orte Ausgabe Eingabe Informatik II 6