Sommersemester 2012 Modulprüfung „Algorithmik“ 05.09.2012 8.30

Werbung
Sommersemester 2012
Modulprüfung „Algorithmik“
05.09.2012
8.30 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 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.
• Bei Multiple-Choice-Fragen ergibt eine falsche oder uneindeutige Antwort entsprechenden
Abzug.
Nur vom Korrektor auszufüllen:
Aufgabe
1
Punkte
Note:
Bemerkungen:
2
3
4
5
6
7
Summe
Aufgabe 1
(12 Punkte)
Es sei folgendes Programmfragment gegeben, das Routinen A1 , A2 , A3 und A4 mit Laufzeiten
t1 (n), t2 (n), t3 (n) und t4 (n) definiert. Geben Sie das asymptotische Wachstum dieser Laufzeiten
in Θ-Notation an und begründen Sie jeweils Ihre Antwort. 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 42 do
x := x + 1
od od;
return x
function A2 (n):
if n ≤ 17 then
return 1 fi;
return A2 (n − 3) + n
function A3 (n, a):
if n = 0 then
return a fi;
return A3 (n − 1, 1) + A3 (n − 1, 2) +
A3 (n − 1, 3)
function A4 (n):
if n ≤ 10 then
return 1 fi;
x := 0;
for i = 1 to n do
x := x + 1 od;
return x · A4 (n/3) · A4 (n/6) · A4 (n/4)
Hinweis: Stellen Sie bei Bedarf eine geeignete Rekursionsgleichung auf und verwenden Sie gegebenenfalls das Mastertheorem.
Aufgabe 2
(10 Punkte)
Führen Sie Dijkstras Algorithmus zur Berechnung kürzester Wege auf folgendem gerichteten
Graphen G = ({a, b, c, d, e, f }, E, γ) vom Startknoten a ausgehend aus, und geben Sie den resultierenden Vektor aller kürzester Distanzen an.
10
b
c
2
1
2
1
a
3
d
3
42
6
0
f
4
2
e
Aus ihrer Antwort muss für jeden Schleifendurchlauf die Menge der bekannten Knoten und
die Menge der Randknoten, sowie für alle diese Knoten die entsprechende vom Algorithmus
berechnete Distanz hervorgehen. Achten Sie auf eine saubere Darstellung und erläutern Sie diese
gegebenenfalls. Ein unklare oder unsaubere Darstellung führt zu Abzug!
Aufgabe 3
(8 Punkte)
Entwerfen Sie einen effizienten Algorithmus, der auf Eingabe von Zahlen k und S sowie paarweise
verschiedenerP
Zahlen x1 , . . . , xn entscheidet, ob es eine Indexmenge I ⊆ {1, . . . , n} der Größe k
gibt, so dass i∈I xi ≤ S. Fassen Sie die Idee ihres Algorithmus in wenigen Worten zusammen
und analysieren Sie dessen Worst-Case-Laufzeit. Um die volle Punktzahl zu erzielen, muss die
Worst-Case-Laufzeit des Algorithmus in O(n) liegen, also insbesondere unabhängig von k sein.
Nehmen Sie an, dass jede arithmetische Operation und jeder Vergleich konstante Zeit benötigt.
Hinweis: Auswahl eines Elements in Linearzeit könnte hilfreich sein. Der naive Algorithmus
mit Laufzeit Θ(nk ), der alle k-elementigen Teilmengen durchprobiert, wird nicht als Lösung
akzeptiert.
Aufgabe 4
(12 Punkte)
Es sei die nicht assoziative Verknüpfung ◦ über der Menge {a, b, c, d} gegeben durch:
◦
a
b
c
d
a
a
d
b
b
b
c
a
d
b
c d
a c
c b
b a
a c
Der Eintrag für x ◦ y steht dabei in Zeile x und Spalte y, es gilt also beispielsweise b ◦ c = c und
d ◦ c = a.
a) Welche Ergebnisse kann a ◦ b ◦ c ◦ d je nach Klammerung haben?
b) Entwerfen Sie mit der Technik des dynamischen Programmierens einen Polynomialzeitalgorithmus, der auf Eingabe x1 , . . . , xn mit xi ∈ {a, b, c, d} als Ausgabe die Teilmenge M
von {a, b, c, d} berechnet, so dass
z ∈ M ⇔ es existiert eine Klammerung des Ausdrucks
x1 ◦ · · · ◦ xn , die das Ergebnis z erzeugt.
c) Beschreiben Sie den Ablauf Ihres Algorithmus auf der Eingabe aus Teil a). Achten Sie auf
eine saubere Darstellung und erläutern Sie diese gegebenenfalls. Ein unklare oder unsaubere
Darstellung führt zu Abzug!
Aufgabe 5
(4 Punkte)
Ein Monte-Carlo-Test für ein Problem mit einseitiger Fehlerwahrscheinlichkeit antwortet mit
Wahrscheinlichkeit ≤ 0,6 fälschlicherweise mit „nein“.
a) Wie oft muss der Test durchgeführt werden, damit die Fehlerwahrscheinlichkeit ≤ 0,5 ist?
0-mal
1-mal
2-mal
log(n)-mal
n-mal
b) Angenommen der Test wird n-mal unabhängig voneinander wiederholt. Ist die Fehlerwahrscheinlichkeit dann in jedem Fall sehr niedrig, d.h. durch 1/2cn beschränkt für ein c > 0?
ja
Aufgabe 6
nein
(4 Punkte)
Es soll ein Las-Vegas-Algorithmus zur Ermittlung einer Lösung des Berechnungsproblems P
entwickelt werden. Es ist ein Monte-Carlo-Algorithmus C mit Laufzeit c(n) und Fehlerwahrscheinlichkeit 0,5 für das Problem bekannt, der eine Antwort der Größe n3 berechnet. Außerdem
verfügen Sie über einen nicht randomisierten Entscheidungsalgorithmus T mit Laufzeit t(n), der
entscheidet ob die Eingabe eine Lösung von P ist.
Entwickeln Sie einen Las-Vegas-Algorithmus V zur Lösung von P und geben Sie eine möglichst
gute obere Schranke für dessen erwartete Laufzeit v(n) in Abhängigkeit von c(n) und t(n) an.
Zur Erinnerung: Las-Vegas-Algorithmen liefern stets ein richtiges Ergebnis, jedoch muss nur
der Erwartungswert der Laufzeit beschränkt sein. Monte-Carlo-Algorithmen haben beschränkte
Worst-Case-Laufzeit, können jedoch ein falsches Ergebnis liefern.
Aufgabe 7
(10 Punkte)
Sind folgende Aussagen wahr oder falsch? Jede der folgenden Aussagen lässt sich eindeutig
entweder mit „wahr“ oder mit „falsch“ beantworten. Ihre Lösung wird wie folgt bewertet:
• Jede korrekte Antwort ergibt 1 Punkt.
• Jede falsche Antwort ergibt 1 Punkt Abzug.
• Unbeantwortete Aussagen ergeben weder Plus- noch Minuspunkte.
wahr
√
Es gilt n log(n) ∈ O( n ).
wahr
Der in der Vorlesung behandelte Algorithmus von Stoer und Wagner
wahr
berechnet einen minimalen Schnitt eines Graphen.
Es ist kein subkubischer Algorithmus zur Berechnung optimaler
wahr
Suchbäume bekannt.
Sei M ⊆ Z mit 3 ≤ |M | < ∞. Der Median von M kann gleich dem
wahr
Minimum von M sein.
Quickselect benötigt im Durchschnitt nicht mehr als 4n Vergleiche auf
wahr
einem Feld mit n Elementen.
Prims Algorithmus zur Berechnung eines minimalen Spannbaumes
wahr
folgt dem Entwurfsprinzip „Union-Find“.
Ultimatives Heapsort benötigt maximal n log n + O(n) Vergleiche, um
wahr
ein gegebenes Feld der Länge n zu sortieren.
Ein Fibonacci-Heap mit n Knoten kann eine Höhe von n erreichen.
wahr
Es gilt 3n ∈ O(2n ).
3
2
Verwendet man Fibonacci-Heaps zur Implementierung von Dijkstras
Algorithmus zur Berechnung kürzester Wege, so ist die Laufzeit in
O(|E| + |V | log |V |) für einen Graphen G = (V, E, γ).
falsch
falsch
falsch
falsch
falsch
falsch
falsch
falsch
falsch
wahr falsch
Herunterladen