Sommersemester 2017 Modulprüfung Algorithmik“ ” 06.09.2017 11:00 - 12:30 Name: Matrikelnummer: Studiengang, Abschluss: Zugelassene Hilfsmittel: Keine. Bearbeitungszeit: 90 Minuten Hinweise: • Bearbeiten Sie von den folgenden Aufgaben so viele wie möglich. Dabei können Sie insgesamt 64 Punkte erreichen. Bei 30 oder mehr Punkten gilt die Prüfung als bestanden. • Beschriften Sie alle abzugebenden Blätter mit Ihrem Namen und Ihrer Matrikelnummer. Bei fest zusammengehefteten Blättern genügt es, das oberste Blatt zu beschriften. • Überprüfen Sie die Aufgabenblätter auf Vollständigkeit (ein Deckblatt, gefolgt von sieben bedruckten Seiten mit Aufgaben, gefolgt von einem leeren Blatt). Nur vom Korrektor auszufüllen: Aufgabe 1 Punkte Note: Bemerkungen: 2 3 4 5 6 7 Summe Aufgabe 1 (5 Punkte) Tragen Sie die Landau-Symbole o, ω oder Θ so in die Kästchen ein, dass wahre Aussagen entstehen. √ 2 n ∈ n20 ∈ log log(n3 ) ∈ (nlog10 n ) 1+ 1 10 2n ∈ 1 n 20 · (log log n)3 log(n!) ∈ (3n ) √ ( n + n log10 n) Aufgabe 2 (2+3+3 = 8 Punkte) Es sei folgendes Programmfragment gegeben, das Routinen A1 , A2 , A3 mit Laufzeiten t1 (n), t2 (n), t3 (n) definiert. Geben Sie jeweils das asymptotische Wachstum dieser Laufzeiten in ΘNotation an (ohne Beweis). Die Laufzeit sei hierbei durch die Anzahl der ausgeführten arithmetischen Operationen gegeben. function A1 (n): x := 0 for i = 1 to 5 · n do for j = 17 to bi/5c do x := x + 1 od od return x function A2 (n, a): if n = 0 then return a fi x := 0 for i = 1 to n do x := x + 1 od return A2 (bn/2c, 1) + A2 bn/2c, 2) + x function A3 (n): if n ≤ 1 then return n fi i := n x := 0 while i > 2 do i := bi/2c x := x + i od return x + A3 (bn/2c) Aufgabe 3 (6+2+2+2 = 12 Punkte) Gegeben sind die Elemente v ∈ {1, 2, 3, 4} mit folgenden absoluten Häufigkeiten γ(v): v γ(v) 1 3 2 1 3 2 4 6 a) Berechnen Sie den optimalen Suchbaum für diese Elemente. Gehen Sie nach dem Algorithmus aus der Vorlesung vor, um die nachfolgende Tabellen zu vervollständigen. Der Eintrag cost[i, j] in der i-ten Zeile und j-ten Spalte soll dabei die Kosten eines optimalen Suchbaums für die Elemente {i, . . . , j} enthalten. Protokollieren Sie in der Tabelle root auch die jeweiligen kleinstmöglichen Wurzeln dieser optimalen Bäume. cost 1 2 3 4 1 2 3 3 4 root 5 1 1 4 2 2 10 6 3 4 1 2 1 3 4 1 2 3 3 4 4 b) Geben Sie einen optimalen Suchbaum an: c) Geben Sie die Berechnungsvorschrift an, die von dem Algorithmus verwendet wird, um cost[i, j] zu berechnen (ohne Monotonie der Wurzel). d) Geben Sie nun die Berechnungsvorschrift für cost[i, j] an, die im verbesserten Algorithmus mit Monotonie der Wurzel verwendet wird. Aufgabe 4 (7 Punkte) Gegeben sei ein Alphabet Σ = {a, b, c, d} mit folgenden Auftretenshäufigkeiten p(x) für x ∈ Σ: x p(x) a 2 b 3 c 4 d 10 Berechnen Sie den zugehörigen Huffman-Code. Geben Sie Ihre Zwischenschritte an. Aufgabe 5 (2+3+2+5 = 12 Punkte) Betrachten Sie den folgenden Algorithmus, der als Eingabe ein Feld (a1 , a2 , . . . , an ) aus natürlichen Zahlen ai ∈ N erhält und eine Zahl zurückgibt. Algorithmus 1 Programmverständnis 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: function lm(a1 , a2 , . . . , an ) i ← dn/2e if i > 1 ∧ ai−1 < ai then return lm(a1 , a2 , . . . , ai−1 ) else if i < n ∧ ai+1 < ai then return lm(ai+1 , ai+2 , . . . , an ) else return ai end if end function a) Geben Sie die Laufzeit des Algorithmus in Θ-Notation an. b) Welche Ausgabe produziert der Algorithmus auf der Eingabe (4, 3, 2, 6, 8, 7, 1, 9)? Geben Sie die vom Algorithmus durchgeführten Schritte an. c) Welche Eigenschaft hat das vom Algorithmus zurückgegebene Element im Allgemeinen? Füllen Sie in die Kästchen Vergleichsoperatoren (<, >, =, ≤, ≥, 6=) ein, sodass eine Aussage entsteht, die jedes zurückgegebene Element erfüllt. Sei hierzu a0 = a1 und an+1 = an . ai−1 ai ai+1 d) Beweisen Sie die in Aufgabenteil c) beschriebene Eigenschaft mit Induktion. Aufgabe 6 (10 Punkte) Geben Sie einen Algorithmus für folgendes Problem an: Eingabe: Eine Liste von n Zahlen a1 , . . . , an ∈ N. P Berechne: I ⊆ {1, . . . , n}, sodass i∈I ai maximal ist und i ∈ I =⇒ i + 1 6∈ I (d. h. I soll keine zwei aufeinanderfolgenden Indizes enthalten). Schreiben Sie Ihren Algorithmus als Pseudocode auf. Begründen Sie die Korrektheit Ihres Algorithmus und berechnen Sie dessen Laufzeit in Θ-Notation. Um die volle Punktzahl zu erreichen, muss Ihr Algorithmus eine Laufzeit in O(n) haben. Alle arithmetischen Operationen sowie Vereinigung und Zuweisungen von Mengen zählen hierbei als ein Zeitschritt. Aufgabe 7 (10 Punkte) Sind die folgenden Aussagen wahr oder falsch? Kreuzen Sie jeweils das entsprechende Kästchen an. Unbearbeitete oder nicht klar gekennzeichnete Zeilen werden als nicht korrekt gewertet. Es gibt einen Algorithmus mit Worst-Case-Laufzeit in o(n3 ) zur Berechnung des Produkts zweier Boolescher n × n-Matrizen. Es ist kein Algorithmus zur Multiplikation zweier n-Bit-Zahlen bekannt, der Laufzeit o(n2 ) hat. Sei k ∈ N fest. Jeder Algorithmus der in einem Feld mit n Elementen das k-kleinste Element bestimmt, benötigt im Worst-Case Ω(n log n) Vergleiche. Die mittlere Laufzeit von Bubblesort liegt in Θ(n2 ). wahr falsch wahr falsch wahr falsch wahr falsch Quickselect benötigt im Worst-Case nicht mehr als 4n Vergleiche um den Median eines Feldes von n Elementen zu finden. wahr falsch Quicksort mit Median-aus-3 benötigt im Mittel nicht mehr als 3n Vergleiche um ein Feld von n Elementen zu sortieren. wahr falsch Mergesort benötigt im Worst-Case Θ(n2 ) Vergleiche um ein Feld von n Elementen zu sortieren. wahr falsch Durch Verwendung von Fibonacci-Heaps hat Prims Algorithmus eine Laufzeit von O(m + n log(n)) um den minimalen Spannbaum eines Graphen mit m Kanten und n Knoten zu berechnen. wahr falsch Jede Insert-Operation in ein Fibonacci-Heap kann im Worst-Case in O(1) Schritten durchgeführt werden. wahr falsch Sei L eine kontext-freie Sprache. Das Wortproblem (gegeben ein Wort w, entscheide ob w ∈ L) für L kann mit Hilfe des CYK-Algorithmus in kubischer Zeit entschieden werden. wahr falsch Die Ausgabe des Algorithmus von Karger und Stein ist immer ein korrekter minimaler Schnitt. wahr falsch Der Algorithmus von Stoer und Wagner hat eine Laufzeit von O(n log n) auf einem Graphen mit n Knoten. wahr falsch Bei Union-Find mit Pfadverkürzung auf einer n-elementigen Menge ist die Höhe der einstehenden Bäume durch die inverse Ackermannfunktion α(n) beschränkt. wahr falsch