Klausur: Algorithmik / Algorithmen III Termin: 11. Februar 2003 Aufgabe 1 Prüfer: Prof. Dr. H. Klocke Name, Vorname: Matr-Nr: Sem: Unterschrift: Falls Sie zusätzliche Lösungsblätter verwenden, schreiben Sie bitte Ihren Namen und Ihre Matrikelnummer darauf. Lösungsblätter ohne Namen werden nicht gewertet. Falls hinter einer Teilaufgabe in Klammern eine Punktzahl steht, z.B. (3P), so wird diese für eine korrekte Lösung der Teilaufgabe vergeben. Fehlt diese Angabe, so muss die Aufgabe komplett gelöst werden, damit Sie die in der Übersichtstabelle (siehe unten) angegebene Punktzahl erhalten. h(k) # in Tm Slot 1 121 1 2 133 13 3 155 15 4 233 13 5 244 4 1 4 6 278 18 2 5 4 7 3 9 7 77 17 8 834 14 9 455 15 10 587 7 11 259 19 12 421 1 13 387 7 14 489 15 16 0 3 1 2 3 6 8 10 11 9 2 13 287 7 2 14 81 1 4 17 577 17 18 729 9 3 17 19 635 15 1 18 Ich wünsche Ihnen viel Erfolg. 20 737 17 2 19 21 511 11 _________________________________________________________________ 22 851 11 23 395 15 24 645 5 25 1027 7 26 669 9 27 983 3 28 679 19 Dauer der Klausur: 2 Stunden. Übersichtstabelle Aufgabe 1 (a,b) 2 (a,b) 3 (a, b, c) 4 (a,b) 5 Seite 2 4 6 9 13 Thema Hash-Techniken Heaps Bäume Graphen Fragen zu verschiedenen Themen mögliche Punkte 10+10 = 10+10 = 10+10+10 = 15+15 = 12 x 2 = erreichte Punkte 20 20 30 30 24 29 543 3 30 1025 5 31 934 14 … … … 1. Erklären Sie genau, welchen Designfehler der Programmierer bei der Konstruktion der Hashfunktion h(k) = k mod 20 gemacht hat. (5P) 2 2 Bitte lesen Sie die Aufgabenstellungen genau und in Ruhe durch! 20 a) Die Fakultät einer Fachhochschule bietet die drei Studiengänge AI, WI und TI an. Die Matrikelnummern der Studierenden liegen zwischen 0 und 1023. In der binären Codierung der Matrikelnummer wird in den letzten beiden Ziffern der Studiengang gespeichert: 00 für AI, 01 für WI und 10 für TI. Zur Speicherung der Matrikelnummern k wird die Hashfunktion "h(k) = k mod 20" verwendet. Die folgende Tabelle zeigt eine Auswahl von 31 Matrikelnummern und deren Verteilung auf die Hashtabelle. Die Spalte "# in Tm" gibt an, wie viele Matrikelnummern in dem jeweiligen Tabellen-Slot gespeichert sind. k Zum Bestehen der Klausur müssen Sie 50 von 124 Punkten erreichen. Hilfsmittel wie Bücher, Vorlesungsmitschriften und Skripte sind nicht zugelassen. ( Hash-Techniken) 12 15 16 2. Beheben Sie den Fehler durch die Konstruktion einer besser geeigneten Hashfunktion. (5P) 124 Klocke, Klausur Algorithmik, 11. Februar 2003 Klocke, Klausur Algorithmik, 11. Februar 2003 2 Fortsetzung Aufgabe 1 … Aufgabe 2 20 ( Heaps ) a) Für die Darstellung und Diskussion von Heaps gibt es verschiedene Modelle. Ein anschauliches Modell ist das Binärbaum-Modell. Dabei werden die n Prioritäten ki, i = 1, .., n, einer Priority Queue in den Knoten eines Binärbaumes gespeichert. b) Eine gute Verteilung von Schlüsseln liefert die Methode Double Hashing. Sie wird durch folgende Funktion definiert: h(k, i) = ( h1(k) + i⋅h2(k) ) mod m 1. Speichern Sie die Prioritäten 1, .., 8 in dem entsprechende Array-Modell. (3P) 2. Schreiben Sie die Indizes i = 1, .., 8 an die entsprechenden Knoten im BinärbaumModell. (3P) Erklären Sie genau, was es für die Qualität der Hashfunktion bedeutet, wenn h2(k) und der Modul m (= Größe der Hash-Tabelle) relativ prim sind ("h2(k) und m sind relativ prim" bedeutet: h2(k) und m haben außer 1 keinen gemeinsamen Teiler). Binärbaum-Modell Array-Modell 8 6 3 i ki 7 4 5 1 2 3 4 5 6 7 8 2 1 3. Definieren Sie die Datenstruktur Heap einmal aus der Sicht des Binärbaum-Modells und einmal aus der Sicht des Array-Modells. (4P) Binärbaum-Modell Array-Modell Klocke, Klausur Algorithmik, 11. Februar 2003 3 Klocke, Klausur Algorithmik, 11. Februar 2003 4 Fortsetzung Aufgabe 2 … Aufgabe 3 b) Das folgende Bild zeigt die ersten 5 Binomialbäume B0, B1, B2, B3, und B4. 30 ( Bäume ) a) Viele Algorithmen benötigen Datenstrukturen, um Objekte zu speichern und zu verwalten. Für Priority Queues werden Heaps, für Dictionaries werden binäre Suchbäume oder Hash-Tabellen verwendet. Oft ist es erforderlich, die Menge der Objekte, auf denen ein Algorithmus operiert, in mehrere Gruppen (Mengen) einzuteilen. Dazu müssen Methoden bereit gestellt werden, die sehr schnell entscheiden, zu welcher Menge ein Objekt gehört. Für die effiziente Speicherung und Verwaltung von Mengen können so genannte Union-Find Strukturen verwendet werden. Tiefe 0 1 2 3 4 B0 B1 B2 B3 1. Zeichnen Sie für die Menge { a, b, c, d, e, f, g } drei verschiedene Union-Find Strukturen unter Verwendung des Binärbaum-Modells. Erklären Sie die Struktur dieser Bäume sowie die Technik, mit der die Objekte in einer Union-Find Struktur – das bedeutet: in einer Menge − gespeichert werden. (7P) B4 Erklären und verifizieren Sie für den Binomialbaum B4 die folgenden Eigenschaften: Für einen Binomialbaum Bk gilt: 1. Bk hat 2k Knoten (1P) 2. Bk hat die Höhe k (2P) k 3. es gibt exakt Knoten auf Ebene i, i = 0, 1, ..., k i (3P) 4. die Wurzel von Bk hat den Rang k, der größer ist als der Rang aller anderen Knoten; werden die Nachfolger der Wurzel von links nach rechts mit k-1, k-2, ..., 0 (4P) nummeriert, so ist der Nachfolger i die Wurzel des Unterbaumes Bi. Hinweise: • • k k! = i ( k − i )!⋅i! Es genügt, wenn Sie die Eigenschaft 3 für i=1 und i=2 verifizieren 2. Geben Sie für eine der drei gezeichneten Union-Find Strukturen auch das ArrayModell p[x], x ∈ { a, b, c, d, s, f , g}, an. (3P) x : p[x] : Hinweis: Klocke, Klausur Algorithmik, 11. Februar 2003 5 a b c d e f g type element = (a, b, c, d, e, f, g); var p : array [element] of element Klocke, Klausur Algorithmik, 11. Februar 2003 6 Fortsetzung Aufgabe 3… Fortsetzung Aufgabe 3 … c) Durch welche Art von Rotationen werden die folgenden beiden Bäume zu AVLBäumen umstrukturiert? Analysieren Sie die Bäume genau, und begründen Sie Ihre Antworten. b) Bei der Suche nach Objekten in binären Suchbäumen hängt die Schnelligkeit der Suche insbesondere im Worst Case von der Höhe des Baumes ab. Um die Höhe eines Binärbaumes auszugleichen, wird der Baum nach dem Einfügen oder Löschen von Knoten geprüft und ggf. umstrukturiert. In der Vorlesung wurden AVL-Bäume als eine mögliche Strukturform für binäre Bäume besprochen. y 1. Zeichnen Sie ein Dictionary mit 19 Objekten einmal als vollständigen Baum und einmal als AVL-Baum. Die Knoten müssen nicht bezeichnet werden; es genügt, wenn Sie die Baumstruktur zeichnen. (5P) x 3 h-1 2. Erklären Sie, warum man nach dem Einfügen oder Löschen von Knoten den Baum nicht einfach in einen vollständigen Baum umwandelt. Mit anderen Worten: Welchen Vorteil haben AVL-Bäume gegenüber vollständigen Bäumen? (5P) 1 h 2 h-1 z x h y 1 h-1 Klocke, Klausur Algorithmik, 11. Februar 2003 7 2 h-1 h-2 4 h-1 3 h-2 h-1 Klocke, Klausur Algorithmik, 11. Februar 2003 8 Aufgabe 4 30 (Graphen) Fortsetzung Aufgabe 4a … a) Ermitteln Sie nach dem Verfahren von Dijkstra die kürzesten Wege vom Startknoten c in dem folgenden Graphen. c 5 1 b 3 Bei der Lösung des Algorithmus von Dijkstra wird in jedem Greedy-Schritt ein spannender Baum um einen Ast erweitert. Zeichnen Sie den spannenden Baum, der sich aus Ihrer obigen Lösungsmatrix ergibt. (2P) g 7 3 1 a c f b g 1 2 2 e a 4 9 f d 8 e i 4 1 h d i Geben Sie in jedem Greedy-Schritt die Menge der gewählten Knoten, der Randknoten (einkreisen) und der unerreichbaren Knoten (∞) an. (10P) g c a b d e f g h i 0 ∞ ∞ ∞ 7 ∞ 1 ∞ ∞ h Knoten des Graphen Welche Informationen können aus diesem spannenden Baum abgelesen werden? (3P) Greedy Schritt gewählte Knoten Klocke, Klausur Algorithmik, 11. Februar 2003 9 Klocke, Klausur Algorithmik, 11. Februar 2003 10 Fortsetzung Aufgabe 4 … Fortsetzung Aufgabe 4 b) … b) Konstruieren Sie aus dem folgenden Graphen einen spannenden Baum mit minimalen Kosten. Erklären Sie die Idee des Algorithmus. Beginnen Sie mit der Minimum-KostenKante (c, g). (12P) c 5 1 b 3 Zeichnen Sie mit Hilfe der Lösungsmatrix den spannenden Baum mit minimalen Kosten. (3P) g 7 1 a c 3 b f 1 2 2 e g a 4 9 f d 8 e i 4 d 1 h i c a b c d e f g h i ∞ c(5) - ∞ c(7) ∞ c(1) ∞ ∞ Klocke, Klausur Algorithmik, 11. Februar 2003 h 11 Klocke, Klausur Algorithmik, 11. Februar 2003 12 Aufgabe 5 ( Fragen ) 24 Für jede von Ihnen korrekt gegebene Antwort gibt es 2 Punkte. Für jede fehlende und jede falsche Antwort werden 2 Punkte von der in dieser Aufgabe erreichten Punktzahl abgezogen. Eine negative Punktzahl gibt es nicht! richtig? Nr Frage/Aussage 1 Ein Eulerscher Weg ist ein Pfad in einem Graphen, der jeden Knoten genau einmal besucht und dessen Start- und End-Knoten identisch sind. 2 Jeder AVL-Baum ist ein binärer Suchbaum. 3 Bei der Konstruktion einer Sondierungsfunktion für eine Hashfunktion h(k) mit dem Modul m ist die Wahrscheinlichkeit einer Kollision von Schlüsseln am geringsten, wenn es ?________? Sondierungsfolgen gibt. 4 Bei einem Divide&Conquer-Algorithmus wird ein Problem in zwei der mehrere Teilprobleme geteilt, die einzeln für sich gelöst werden, und deren Teillösungen zum Schluss zu einer Gesamtlösung zusammengefügt werden. 5 Mit Hilfe des so genannten Master-Theorems kann für die meisten D&CAlgorithmen die asymptotische Zeitkomplexität ermittelt werden. 6 Wie nennt man die Wurzel einer Union-Find Struktur zur Speicherung einer Menge? 7 Die asymptotische Zeitkomplexität ist ein Maß für Schnelligkeit eines Algorithmus. 8 Durch O(n) wird die WorstCase-, durch o(n) die BestCase- und durch Θ(n) die durch AverageCase-Laufzeit eines Algorithmus abgeschätzt. 9 ja nein Was bedeutet es, wenn ein Bayer-Baum degeneriert? a) der Baum könnte bei einer anderen Verteilung der Objekte auf die Knoten eine kleinere Höhe haben. b) Die Verteilung der Objekte auf die Knoten des B-Tree ist sehr ungleichmäßig. c) Jeder Knoten hat nur 2 Söhne. 10 Ein nicht-deterministischer Algorithmus ist schneller als ein deterministischer Algorithmus. Klocke, Klausur Algorithmik, 11. Februar 2003 13