Kapitel 1 - bei ziemke

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