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