← hier tackern Aufgabe: Punkte: 1 2 3 4 5 6 7 8 9 Korrektor(in): P Übung zur Vorlesung: Algorithmen und Datenstrukturen Blatt 11, Abgabe: bis 13.01.2017 um 8:30 Uhr in den Briefkästen auf 25.13.O2. Benutzerkennung: Name: Gruppe: Aufgabe 1 (35 Punkte): Betrachten Sie eine Datenstruktur, die Objekte vom Typ A, B und C speichern kann. Sei Ai−1 , Bi−1 und Ci−1 die Anzahl der gespeicherten Objekte vom Typ A, B bzw. C vor Anwendung der i-ten Operation. Die Datenstruktur bietet vier Operationen an: • Die 1. Operation fügt ein Objekt vom Typ A ein (tatsächlicher Aufwand = 1). • Die 2. Operation wandelt alle Objekte vom Typ A in Objekte vom Typ B um (tatsächlicher Aufwand = Ai−1 ). • Die 3. Operation wandelt alle Objekte vom Typ A oder B in Objekte vom Typ C um (tatsächlicher Aufwand = Ai−1 + Bi−1 ). • Die 4. Operation löscht alle Objekte vom Typ C (tatsächlicher Aufwand = Ci−1 ). Geben Sie eine geeignete Kontostandsfunktion an und zeigen Sie mit einer amortisierten Laufzeitanalyse, dass der amortisierte Aufwand jeder der vier Operationen aus O(1) ist. Aufgabe 2 (15 Punkte): Gegeben die folgende Darstellung eines Graphen: Geben Sie diesen Graphen 1. in Mengenschreibweise (geben Sie also die Mengen V und E an) 2. als Adjazenzmatrix 3. als Adjazenzliste an. Hinweis: Die als Bonuspunkte gekennzeichneten Punkte zählen nicht zur Bestimmung der Zulassungsgrenze. Auf diesen Blatt gibt es nur 50 reguläre“ Punkte. Damit sinkt die ” Zulassungsgrenze um 25 Punkte. Aufgabe 3 (18 Bonuspunkte) [Wiederholung: Textsuche]: Bestimmen Sie alle delta-2, delta’-2 und next-Werte für das angegebene Muster P . j P delta-2(j) delta’-2(j) next[j] 0 X 1 Y 2 X 3 X 4 Y 5 X Aufgabe 4 (8 Bonuspunkte) [Wiederholung: Quicksort]: Führen Sie die Aufteilung der Zahlenfolge 2 4 5 0 9 3 8 1 3 in zwei Teilfolgen mit dazwischenliegendem Pivotelement (wie bei Quicksort) durch. Als Pivotelement wählen Sie das letzte Element der Folge. Geben Sie dabei alle Schlüsselvergleiche an. Beispiel für die Folge 8 2 7 3 6 5: (8,5), (6,5), (3,5), .... Die eigentlichen Sortieraufrufe sind nicht gefragt. Der letzte anzugebende Schritt ist die geforderte Aufteilung F1 P F2 . Aufgabe 5 (8 Bonuspunkte) [Wiederholung: O-Notation]: Zeigen Sie folgende Aussage: log(n!) ∈ O(n · log(n)) Aufgabe 6 (6 Bonuspunkte) [Wiederholung: Selbstanordnende Listen]: Gegeben die Schlüsselfolge 1, 2, 3, 4, 5, 6. Geben Sie eine Zugriffsfolge mit exakt x Elementen an, so das nach diesen Zugriffen die Liste, bei Verwendung der 1. Frequently-Count-Regel (x = 15) 2. Move-to-front-Regel (x = 5) 3. Transpose-Regel (x = 15) absteigend sortiert ist. Aufgabe 7 (8 Bonuspunkte) [Wiederholung: Sortierverfahren]: Ein Sortierverfahren ist stabil, wenn Elemente mit gleichem Schlüssel, ihre Position zueinander durch das Sortieren nicht verändern. Geben Sie für Sortieren durch Auswahl, Bubblesort, Heapsort und Quicksort an, ob das jeweilige Verfahren stabil ist, oder nicht (ohne Begründung). Beziehen Sie sich hierbei exakt auf die in der Vorlesung angegebene Implementierung. Aufgabe 8 (8 Bonuspunkte) [Wiederholung: Vollständige Induktion]: Im folgenden wird die Aussage n X 2i = 2n+1 − 1 i=0 mittels vollständiger Induktion bewiesen. Kennzeichnen Sie die Zeilen, in denen der Induktionsanfang, die Induktionsvoraussetzung bzw. der Induktionsschritt beginnt mit IA, IV und IS. Kennzeichnen Sie außerdem in der Rechnung die Stelle, an welcher die IV eingesetzt wird mit ∗. 0 X 2i = 20 = 21 − 1 i=0 Sei die Aussage n→n+1 Pn i=0 2i = 2n+1 − 1 für alle natürlichen Zahlen ≤ n bewiesen. n+1 X i=0 i 2 = n X 2i + 2n+1 i=0 n+1 =2 − 1 + 2n+1 = 2(n+1)+1 − 1 Aufgabe 9 (24 Bonuspunkte) [Wiederholung: Verschiedenes]: Kreuzen Sie in jeder Zeile an, ob die angegebene Behauptung wahr oder falsch ist. Bitte drucken Sie die folgende Seite für die Abgabe aus statt sie abzuschreiben! Ansonsten bekommen Sie für diese Seite keine Punkte! Falls Sie zuhause nicht drucken können, können Sie dies in der Universitätsbibliothek machen. Behauptung (x ⇒ y) ⇔ ¬(x ∧ ¬y) wahr (x ∧ y ∧ ¬x) ⇒ ¬y ((x ∧ y) ∨ z) ⇔ (x ∧ z) ∨ (y ∧ z) n4 − 2n3 + 5n2 − 2 · log(n) ∈ O(n5 ) n4 − 2n3 + 5n2 − 2 · log(n) ∈ Ω(n5 ) n4 − 2n3 + 5n2 − 2 · log(n) ∈ O(n4 ) n4 − 2n3 + 5n2 − 2 · log(n) ∈ Ω(n4 ) n4 − 2n3 + 5n2 − 2 · log(n) ∈ O(n3 ) n4 − 2n3 + 5n2 − 2 · log(n) ∈ Ω(n3 ) Θ(n · log(n)) ⊆ O(n · log(n)) O(n · log(n)) ⊆ Θ(n · log(n)) Ω(n · log(n)) ⊆ O(n · log(n)) Θ(n · log(n)) ⊆ Ω(n · log(n)) O(n · log(n)) ⊆ Ω(n · log(n)) Ω(n · log(n)) ⊆ Θ(n · log(n)) Ω(2n ) ∪ Θ(2n ) ⊆ Ω(n2 ) ∩ O(n) = O(2n ) ∅ Ω(n) ∩ O(n2 ) = ∅ Die Anzahl der Schlüsselvergleiche beim Sortieren von n Elementen mit BubbleSort ist in Θ(n2 ) Die Anzahl der Schlüsselvergleiche beim Sortieren von n Elementen mit HeapSort ist in O(n2 ) Die Anzahl der Schlüsselvergleiche beim Sortieren von n Elementen mit 2-Wege-Mergesort ist in Θ(n · log(n)) Bei einer amortisierten Abschätzung einer Folge von m Operationen mit Kontostandsfunktion Φi gilt: Φ0 = 0. Bei einer amortisierten Abschätzung einer Folge von m Operationen mit Kontostandsfunktion Φi gilt: Φm = 0. Bei einer amortisierten Abschätzung einer Folge von m Operationen mit Kontostandsfunktion Φi gilt: ∀i ∈ {0, . . . , m} : Φi ≥ 0. falsch