Sommersemester 2017 Modulprüfung ” Algorithmik“ 06.09.2017 11

Werbung
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
Herunterladen