Wintersemester 2011/12 Modulprüfung „Algorithmik“ 20.02.2012

Werbung
Wintersemester 2011/12
Modulprüfung „Algorithmik“
20.02.2012
8.00 Uhr
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 60 Punkte plus 3 Bonuspunkte erreichen. Bei 30 oder mehr Punkten ist die Prüfung
bestanden.
• Beschriften Sie alle abzugebenden Blätter mit Ihrem Namen und Ihrer Matrikelnummer.
Bei fest zusammengehefteten Blättern genügt das oberste.
Nur vom Korrektor auszufüllen:
Aufgabe
1
Punkte
Note:
Bemerkungen:
2
3
4
5
6
7
Summe
Aufgabe 1
(6 Punkte)
Ordnen Sie die folgenden Funktionen ihrem asymptotischen Wachstum nach aufsteigend an
(α(n) bezeichnet hierbei die inverse Ackermannfunktion, log(n) den Logarithmus zur Basis 2).
d(n) = n(log n)(log log n) − n log(n2 )
n
e(n) = 34
a(n) = nα(n)
b(n) = n1.58
c(n) = n log(3n) − n log n
Aufgabe 2
(8 Punkte)
a) Lösen Sie die folgenden Rekursionsgleichungen unter Verwendung des Mastertheorems.
f (n) = 4f (n/3) + n + 42
∈Θ
g(n) = 4g(n/2) + 2n2 + n log n
∈Θ
b) Geben Sie die exakte Lösung der folgenden Rekursionsgleichung an:
T (0) = T (1) = T (2) = 1
T (n) = 2 · T (n − 3)
für n ≥ 3
T (n) =
c) Beweisen Sie Ihre Lösung aus Teil b) mit Induktion.
Aufgabe 3
(10 Punkte)
Gegeben sei ein sortiertes Feld A[1, . . . , n] mit paarweise verschiedenen ganzen Zahlen. Geben
Sie einen Algorithmus an, der ausgibt, ob es einen Index i gibt mit A[i] = i. Zeigen Sie die
Korrektheit und analysieren Sie die Laufzeit Ihres Algorithmus’. Um die volle Punktzahl zu
erreichen, muss ihr Algorithmus eine Laufzeit in O(log n) haben.
Aufgabe 4
(8 Punkte)
Geben Sie bestmögliche obere Schranken für die asymptotische Laufzeit (in O-Notation, in
Abhängigkeit von n) der folgenden Routinen an. Nehmen Sie hierbei an, dass alle arithmetischen
Operationen einen Zeitschritt brauchen.
f1(n)
{
sum=0
for i=0 to 65535
sum=sum+1
return sum
}
f2(n)
{
if (n>=2)
return f2(n-1)+1
else
return 1
}
f3(n)
{
sum=0
for i=1 to n
for j=i to n
sum=sum+1
return sum
}
f4(n)
{
sum=0
for i=1 to n
sum=sum+1
if (n>1)
sum=sum+f4(n/2)+f4(n/2)
return sum
}
Bonusfragen:
(3 Punkte)
Hinweis: Beantworten Sie diese Fragen erst, wenn Sie sonst mit der Klausur fertig sind.
fX(n)
{
sum=0
for i=1 to n-1
sum=sum+fX(i)
return sum
}
fY(n)
{
if (n>=4)
return 2*fY(sqrt(n))
else
return 1
}
fZ(n)
{
if (n>=2)
return fZ(n-1)+fZ(n-2)+13
else
return 1
}
Aufgabe 5
(12 Punkte)
Es seien die Matrizen M (1) , M (2) , M (3) und M (4) gegeben. Dabei ist M (i) eine (ni−1 ×ni )-Matrix,
wobei die ni durch folgende Tabelle gegeben sind:
n0
3
n1
3
n2
2
n3
5
n4
1
Berechnen Sie die minimale Anzahl an skalaren Multiplikationen, die zur Berechnung des Produkts M (1) · M (2) · M (3) · M (4) benötigt werden, d. h. den Wert der Funktion cost(M (1) · · · M (4) ).
Gehen Sie nach dem Algorithmus aus der Vorlesung vor; füllen Sie dabei die nachfolgende Tabelle aus und beschreiben Sie, wie diese schrittweise entsteht und was das Ergebnis ist.
cost
1
2
3
1
x
2
x
x
x
x
3
4
cost(M (1) · · · M (4) ) =
x
4
Aufgabe 6
(7 Punkte)
Es sei ein ungerichteter Graph G = (V, E) gegeben. Betrachten Sie den folgenden einfachen Algorithmus, der Union-Find-Operationen mit Pfadverkürzung benutzt. Die Union-Find-Operationen
sind so implementiert, wie sie in der Vorlesung behandelt wurden.
function xyz(G = (V, E) : Graph) : integer
x : integer
begin
x := |V |
initialisiere alle v ∈ V als einelementige Mengen
forall {u, v} ∈ E do
if (Find(u)6= Find(v)) then
Union(u,v)
x := x − 1
endif
endfor
return x
endfunction
a) Was berechnet diese Funktion?
b) Geben Sie die Worst-Case-Laufzeit in Abhängigkeit von |E| und |V | an.
c) Wie oft wird bei der Anwendung des Algorithmus’ auf den folgenden Graphen die UnionRoutine aufgerufen? (Geben Sie nur die Zahl an.)
Anzahl der Union-Aufrufe:
Aufgabe 7
(9 Punkte)
Alle folgenden Aussagen lassen sich eindeutig mit „wahr“ bzw. „falsch“ beantworten.
Ihre Lösung wird wie folgt bewertet:
• Für jede korrekte Antwort erhalten Sie 0,75 Punkte.
• Für jede nicht korrekte Antwort erhalten Sie 0,75 Punkte Abzug.
• Unbeantwortete Aussagen/Fragen ergeben weder Plus– noch Minuspunkte.
• Die Gesamtpunktzahl dieser Aufgabe kann nicht negativ und nicht mehr als 9 werden
(d.h. es kann sinnvoll sein, zwei Fragen unbeantwortet zu lassen, um die volle Punktzahl
zu erreichen).
Lubys Algorithmus berechnet eine unabhängige Menge, die
maximal bezüglich Inklusion ist.
Die schnelle Fouriertransformation folgt dem Entwurfsprinzip
„Divide and Conquer“.
Ganze Zahlen können mit NC0 -Schaltkreisen addiert werden.
Quick-Heapsort hat eine Worst-Case-Laufzeit von Ω(n2 ).
Division ganzer Zahlen ist in P, aber nicht in NC.
Ultimatives Heapsort benötigt n log2 n + O(n) Vergleiche, um ein
gegebenes Feld der Länge n zu sortieren.
Dijkstras Algorithmus folgt dem Entwurfsprinzip „Divide and
Conquer“.
Ein Fibonacci-Heap mit n Knoten hat maximale Höhe O(log n).
Optimale Suchbäume lassen sich in quadratischer Zeit berechnen.
Der Median einer Menge ganzer Zahlen kann gleich ihrem
Maximum sein.
Bubblesort benötigt auf allen Eingaben mehr Vergleiche als
Heapsort.
Der Algorithmus von Schönhage und Strassen zur schnellen
Multiplikation ganzer Zahlen verwendet die schnelle
Fouriertransformation.
Quickselect benötigt im Mittel mehr als 15n Vergleiche.
Verwendet man Fibonacci-Heaps zur Implementierung von
Heapsort, so erreicht man eine Worst-Case-Laufzeit von
O(n log log n).
wahr
wahr
wahr
wahr
wahr
wahr
wahr
wahr
wahr
wahr
wahr
wahr
wahr
wahr
falsch
falsch
falsch
falsch
falsch
falsch
falsch
falsch
falsch
falsch
falsch
falsch
falsch
falsch
Herunterladen