Klausur Geoinformation I – Fragen zur Vorbereitung

Werbung
Prof. Dr. Lutz Plümer
Dr. Gerhard Gröger
Diskrete Mathematik SS 01
Aufgaben zur Klausurvorbereitung
29. Mai 2001
1. Schreiben Sie ein Programm in Pseudo-Code, das die Reihenfolge der Elemente in einer
einfach verketteten Liste umkehrt. Das Programm kann sich auf eine der in der Vorlesung
vorgestellten Repräsentationen für Listen beziehen.
2. Schreiben Sie ein Programm in Pseudo-Code, das eine Matrix und einen Vektor – beide
als zwei- bzw. eindimensionale Arrays gegeben - miteinander multipliziert. Das
Programm sollte möglichst eng an die Syntax von Java angelehnt sein; Syntaxfehler
werden jedoch nicht bewertet.
3. Zur Auswertung arithmetischer Ausdrücke wird rechnerintern die sogenannte umgekehrte
Polnische Notation (UPN) verwendet, bei der der Operator (+, *, -) nicht zwischen den
Operanden „5 + 7“, sondern davor „+(4,7)“ steht; die Operanden werden in Klammern
eingeschlossen und durch Komma getrennt. Der Ausdruck 3 * 1 + 9 * 6 lautet z.B. in
UPN
+( *(3,1) , *(9,6) )
Ausgangspunkt der Aufgabe und Zwischenergebnis der Arbeit des Compilers ist ein
binärer Syntax-Baum; bei diesem sind die Knoten die Operatoren und Operanden, und die
Relation zwischen Operatoren und den zugehörigen Operanden wird durch die
Nachfolger-Relation im Baum ausgedrückt. Der Syntax-Baum zu obigem Ausdruck ist
z.B.
+
*
3
*
1
9
6
Schreiben Sie ein Programm in Pseudo-Code, das aus einem Syntax-Baum den
entsprechenden Ausdruck in UPN erzeugt.
4. In der Vorlesung wurden binäre Suchbäume und die entsprechenden Datenstrukturen
(Klassen) vorgestellt.
4.1. Formulieren Sie umgangssprachlich den Algorithmus zum Entfernen eines Elements
aus einem binären Suchbaum. Identifizieren Sie den schwierigen Fall im
Algorithmus.
4.2. Zeigen Sie, dass Ihr Verfahren korrekt ist, d.h. dass das Ergebnis des Verfahrens
wieder ein binärer Suchbaum ist.
5. Wenden Sie den in der Vorlesung vorgestellten Algorithmus von Dijkstra auf den
Graphen in der Abbildung an, um kürzeste Wege zu ermitteln. Startknoten ist A. Es reicht
aus, wenn Sie für jeden Schritt des Algorithmus
 die besuchten, noch nicht vollständig abgearbeiteten Knoten („grüne Knoten“)
inklusive der aktuellen Weglängen, sowie
 den aktuell bearbeiteten Knoten angeben.
Seite 1 von 3
A
90
30
B
100
40
E
20
10
40
C
10
D
6. In vielen kommerziellen Routensuchverfahren wird zwischen kürzesten Wegen
(Entfernung) und schnellsten Wegen (Fahrtzeit) unterschieden. Wie kann der Algorithmus
von Dijkstra modifiziert werden, um beide Optionen zu unterstützen?
7. In der Vorlesung wurden Heaps vorgestellt, die sich gut als Array repräsentieren lassen.
7.1. Leiten Sie aus der unten wiedergegebenen Array-Repräsentation den entsprechenden
Heap in der Baum-Repräsentation her.
7
22
9
23
27
11
30
90
28
33
80
19
70
7.2. Welche Änderungen ergeben sich in beiden Repräsentationen, wenn ein Element mit
dem Wert 8 („info“ = 8) in den Heap eingefügt wird?
7.3. Wie gut ist die Repräsentation als Array auch für andere binäre Bäume, z.B. AVLBäume, geeignet? Begründen Sie Ihre Antwort.
8. Ein Graph heißt zusammenhängend, wenn jeder Knoten des Graphen mit jedem anderen
Knoten des Graphen über eine Folge von Kanten verbunden ist. Welche der in der
Vorlesung vorgestellten Algorithmen können verwendet werden, um festzustellen, ob ein
Graph zusammenhängend ist? Skizzieren Sie, wie diese Algorithmen modifiziert werden
müssen.
9. Wenden Sie den in der Vorlesung vorgestellten Scan-Line-Algorithmus an, um die
Schnittpunkte zwischen den Segmenten in der Abbildung zu ermitteln. Beschreiben Sie
dabei den Inhalt der beiden Datenstrukturen (sortierte Liste der Haltepunkte und Ordnung
der aktiven Segmente) an jedem Haltepunkt. Bei der sortierten Liste der Haltepunkte
genügt es, nur jeweils die Änderungen anzugeben.
Seite 2 von 3
D
A
B
C
Seite 3 von 3
Herunterladen