blatt10

Werbung
Institut für Informatik
Lehrstuhl für Informatik 15
Computer Graphik & Visualisierung
Diskrete Strukturen I
Wintersemester 2006/2007
Übungsblatt 10
Seite 1 von 3
Prof. R. Westermann, J. Schneider, J. Georgii, S. Pott
TU München, 08.01.2007
Übungen zu Diskrete Strukturen I (Blatt 10)
Aufgabe 43 [5 Punkte]
Komplementärgraph
Für einen Graph G = (V, E) ist der Komplementärgraph als G = (V, (V2 ) \ E) definiert.
Wir betrachten nun Graphen G mit n Knoten, so dass sowohl G als auch der Komplementärgraph G
2-färbbar sind. Konstruieren sie solche Graphen für n = 1, n = 2, n = 3 und n = 4. Kann es auch für
andere n ∈ N Graphen mit dieser Eigenschaft geben?
Aufgabe 44 [2+2+2+2 Punkte]
Breitensuche
Um die Felder d[v] bzw. pred[v] bei zwei Durchläufen der Breitensuche auf dem gleichen Graphen
aber mit unterschiedlichen Startknoten zu unterscheiden, bezeichnen wir das Feld d[v] bei einer Breitensuche mit Startknoten s mit ds [v] und entsprechend pred[v] mit preds [v].
a) Führen Sie die Breitensuche auf dem Graphen in Abbildung 1 mit Startknoten 1 durch. Geben
Sie die Felder d1 [v] und pred1 [v] zum ersten Zeitpunkt an, zu dem d1 [4] 6= ∞ gilt. Geben Sie den
durch die Breitensuche berechneten Spannbaum T1 an.
b) Führen Sie die Breitensuche auf dem Graphen in Abbildung 1 mit Startknoten 4 durch. Geben
Sie die Felder d4 [v] und pred4 [v] zum ersten Zeitpunkt an, zu dem d4 [1] 6= ∞ gilt. Geben Sie den
durch die Breitensuche berechneten Spannbaum T4 an.
Sei G = (V, E) ein beliebiger ungerichteter Graph.
c) Beweisen oder widerlegen Sie: ∀s, v ∈ V : ds [v] = dv [s]
d) Beweisen Sie: ∀s, v, w ∈ V : dw [v] ≤ dw [s] + ds [v]
1
5
3
2
4
6
Abbildung 1. Beispielbaum.
7
Seite 2 von 3
Aufgabe 45 [2+1+1+2 Punkte]
Traversierung von Binärbäumen
Wir speichern einen Knoten als ein Tupel (le f t, right, label ), wobei le f t und right Verweise auf den
linken bzw. rechten Kind-Knoten sind. Falls kein Kind vorhanden ist, wird ⊥ stattdessen gespeichert.
label ist ein (textuelle) Beschriftung des entsprechenden Knotens. Einen Baum können wir dann repräsentieren durch einen Verweis auf den Wurzelknoten root, und die zugehörige Menge an KnotenTupeln.
Gegeben sind folgende (rekursive) Methoden:
preorder(Knoten node) {
print(node.label);
if (node.left 6= ⊥) preorder(node.left);
if (node.right 6= ⊥) preorder(node.right);
}
inorder(Knoten node) {
if (node.left 6= ⊥) inorder(node.left);
print(node.label);
if (node.right 6= ⊥) inorder(node.right);
}
postorder(Knoten node) {
if (node.left 6= ⊥) postorder(node.left);
if (node.right 6= ⊥) postorder(node.right);
print(node.label);
}
Wir starten die 3 Algorithmen preorder, inorder und postorder, indem wir die entsprechende Methode mit dem Wurzelknoten des Baumes als Argument aufrufen.
a) Bestimmen Sie die Ausgabe jedes dieser drei Algorithmen für die Bäume
B1 = (root = v0 , {v0 = (v1 , v2 , ∗), v1 = (v3 , v4 , +), v2 = (⊥, ⊥, 3),
v3 = (⊥, ⊥, 8), v4 = (⊥, ⊥, 9)})
B2 = (root = v0 , {v0 = (v1 , v2 , A), v1 = (v3 , v4 , B), v2 = (⊥, ⊥, C ), v3 = (v5 , v6 , D ),
v4 = (⊥, v7 , E), v5 = (⊥, ⊥, F ), v6 = (⊥, ⊥, G ), v7 = (⊥, ⊥, H )})
b) Bestimmen Sie für jeden der drei Algorithmen, ob die Knoten des Baumes in der gleichen Reihenfolge wie bei einer Tiefensuche bzw. einer Breitensuche bearbeitet werden.
c) Welche Laufzeit haben die Algorithmen auf einem Binärbaum mit n Knoten? Schätzen Sie dies
mit der O-Notation ab!
d) Können Sie aus der Ausgabe der Algorithmen eindeutig den Baum rekonstruieren? Wie müssen
Sie ggf. die Algorithmen modifizieren, damit dies möglich ist? Warum ist die ”polnische Notation” für arithmetische Ausdrücke immer eindeutig?
Seite 3 von 3
Aufgabe 46 [1+3+2 Punkte]
Kürzeste Wege
Frankfurt
Karlsruhe
Kassel
Köln
Nürnberg
Mannheim
München
Stuttgart
Ulm
Dortmund
Frankfurt
Karlsruhe
Kassel
Köln
Nürnberg
Mannheim
München
Stuttgart
Ulm
Dortmund
Gegeben ist folgende Entfernungstabelle. Ein Strich (” -”) bedeutet, dass keine direkte Verbindung
zwischen den Städten besteht. Andernfalls ist die Entfernung in Kilometern angegeben.
165
83
-
189
228
88
294
68
82
-
165
465
83
189
-
228
167
-
88
68
-
167
139
82
92
294
465
139
92
-
a) Zeichnen Sie den zu der Entfernungstabelle zugehörigen (ungerichteten) gewichteten Graphen.
b) Bestimmen Sie nach dem Algorithmus von Dijkstra die Entfernung von München nach Köln.
c) Wie müssen Sie den Algorithmus von Dijkstra modifizieren, damit Sie den kürzesten Weg von
München nach Köln als Resultat erhalten?
Freiwillige Abgabe: In der jeweiligen Tutorübung in der Woche vom 15.01.2007 - 19.01.2007.
Herunterladen