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.