TU Ilmenau, Fakultät IA Institut Theoretische Informatik FG Automaten und Formale Sprachen Dr. M. Brinkmeier Klausur Effiziente Algorithmen WS 05/06 24. Februar 2006 NICHT MIT BLEISTIFT ODER ROTSTIFT SCHREIBEN! Heften Sie die Blätter bei Abgabe zusammen, und tragen Sie auf jedem Blatt Ihren Namen, Vornamen, Studiennummer und Matrikel ein. Es sind keine Hilfsmittel, insbesondere Taschenrechner oder Mobiltelefone, zugelassen. Arbeitszeit 60 min Name, Vorname: Studiennummer und Matrikel: abgegeben: Code 2 Aufgabenblätter . . . eigene Blätter Einsichtnahme Datum, Unterschrift Aufgabe 1 2 3 4 5 6 Ges. erreichbare Punktzahl 15 8 8 6 6 7 50 erreichte Punktzahl Aufgabe 1 [15 Punkte] Bitte kreuzen Sie für jede der folgenden 5 Fragen entweder JA“ oder NEIN“ in jeder Zeile an. ” ” Bewertung: Für jede korrekte Antwort erhalten Sie einen Punkt. Für jede falsche Antwort wird Ihnen ein halber Punkt abgezogen. Wurde kein Kreuz gemacht, erhalten Sie keinen Punkt. (a) Welche der folgenden Aussagen sind korrekt? JA NEIN [ ] [ ] n Wörter der Gesamtlänge L über einem Alphabet Σ lassen sich in Zeit O( L + |Σ|) sortieren. [ ] [ ] Die Ermittlung des Maximums einer Menge von n Schlüsseln benötigt mindestens n + 1 Vergleiche. [ ] [ ] Die Sortierung von n allgemeinen Schlüsseln benötigt mindestens Ω(n log2 n) Vergleiche. (b) Welche der folgenden Aussagen über die Sortierung von n allgemeinen Schlüsseln sind korrekt? JA NEIN [ ] [ ] MergeSort benötigt im schlechtesten Fall O(n log n) Vergleiche. [ ] [ ] QuickSort benötigt im schlechtesten Fall O(n log n) Vergleiche. [ ] [ ] MaxSort benötigt im schlechtesten Fall eine Laufzeit von O(n2 ). 2 Klausur Effiziente Algorithmen WS 05/06 (c) Welche der folgenden Aussagen sind korrekt? JA NEIN [ ] [ ] Das i-t kleinste Element von n Schlüsseln lässt sich in O(n) Schritten ermitteln. [ ] [ ] Eine Sequenz von m Operationen auf einer Union-Find-Datenstruktur benötigt höchstens O(m) Zeit. [ ] [ ] Die amortisierten Kosten einer delete min Operationen in einem Fibonacci-Heap mit n Elementen sind O(1). (d) Sei G = (V, E) ein gerichteter Graph mit positiven Kantengewichten. Sei n = |V | und m = | E|. Welche der folgenden Aussagen sind korrekt? JA NEIN [ ] [ ] Der Algorithmus von Kruskal berechnet einen minimalen Spannbaum von G mit einer Worst-Case-Laufzeit von O(m + n log n). [ ] [ ] Ist G azyklisch, lässt sich die transitive Hülle von G in Zeit O(n3 ) berechnen. [ ] [ ] Für den Besuch aller Kanten und Knoten von G benötigt man mindestens eine Laufzeit von Ω(m log n). (e) Sei G = (V, E) ein ungerichteter Graph mit positiven Kantengewichten. Sei n = |V | und m = | E|. Welche der folgenden Aussagen sind korrekt? JA NEIN [ ] [ ] Für einen Knoten s ∈ V lassen sich, mittels des Algorithmus von Dijkstra, alle Distanzen d(s, v) in Zeit O(m + n) berechnen. [ ] [ ] Sind die Kantengewichte gleichmäßig über [0, 1] verteilt, löst der Algorithmus von Hagerup das Single-Source-Shortest-Path Problem im Mittel in Zeit O ( n + m ). [ ] [ ] Ist δ der Minimalgrad von G, so lässt sich der Kantenzusammenhang von G in Zeit O(δn) berechnen. Aufgabe 2 (Algorithmus von Prim) [8 Punkte] Berechnen Sie mittels des Algorithmus von Prim einen minimalen Spannbaum des folgenden Graphen. Geben Sie die Zwischenergebnisse nach jeder Runde an. 89:; ?>=< q A MMMM q q MMM6 5 qqqq MMM q 8 q MMM q q q M q q 3 1 89:; ?>=< 89:; ?>=< 89:; ?>=< C D B MMM qq MMM q q q MMM q qq 7 4 MMMM qqq 2 q M q 89:;q ?>=< E Aufgabe 3 (QuickSort) [8 Punkte] Zeichnen Sie einen Baum, der die Rekursion von QuickSort auf der Eingabe 4, 7, 2, 6, 3, 9, 1, 8, 5 darstellt. Gehen Sie dabei davon aus, dass in jedem Schritt das erste Element der betrachteten Teilfolge als Pivotelement gewählt wird. Klausur Effiziente Algorithmen WS 05/06 3 Aufgabe 4 (Topologische Sortierung) [6 Punkte] Sortieren Sie, sofern möglich, die gegebenen Graphen topologisch. Tragen Sie dazu Zahlen in die Knoten der Graphen ein. Falls keine topologische Sortierung möglich ist, geben Sie eine kurze Begründung dafür an. ?>=< o 89:; 89:; ?>=< D /W / ? // // // 89:; // / ?>=< ?>=< 89:; // // // 89:; ?>=< 89:; / ?>=< ?>=< o 89:; 89:; ?>=< //?_ ?? // ?? / ?? /// ?? 89:; // ?>=< ?>=< 89:; // / /// 89:; ?>=< 89:; ?>=< Aufgabe 5 (Prioritätswarteschlangen) ?>=< 89:; 89:; / ?>=< ?_ ? O ?? ?? ?? ? 89:; o ?>=< 89:; ?>=< ? 89:; ?>=< 89:; / ?>=< [6 Punkte] (a) Geben Sie die Struktur der Binomial Queue nach dem Ausführen der Operation delete min an! 89:; ?>=< ?>=< 89:; 6 1? ?? ?? ? 89:; ?>=< 89:; ?>=< 5 3 89:; ?>=< 9 (b) Geben Sie die Struktur des Fibonacci Heaps nach dem Ausführen der Operation delete min an! 89:; ?>=< 89:; ?>=< 89:; ?>=< 9 6 2? ?? ?? ? 89:; ?>=< 89:; ?>=< 5 7 89:; ?>=< 4 Aufgabe 6 (Amortisierte Analyse) [7 Punkte] Eine Folge von n Operationen werde auf einer Datenstruktur ausgeführt. Dabei seien die Kosten ci der i-ten Operation gegeben durch: ( 1 falls i 6= 2blog ic ci = i falls i = 2blog ic . Betrachten Sie das Potential Φ(i ) = i − 2blog ic+1 und zeigen Sie, dass die n Operationen höchstens die Kosten 2n verursachen. Viel Erfolg!