Entwurf und Analyse von Algorithmen Universität Konstanz Fachbereich Informatik und Informationswissenschaft WS 2009/2010 Prof. Dr. Ulrik Brandes / Natalie Indlekofer 1. Übungsblatt Ausgabe: 21.10.2009 Abgabe: 28.10.2009, 10 Uhr Die Bearbeitung in Zweiergruppen ist ausdrücklich erwünscht. Aufgabe 1: Komplexitätsklassen 5 Punkte Ordnen Sie die folgenden Funktionen aufsteigend nach ihrem asymptotischen Wachstum, d.h. falls in Ihrer Anordnung g(n) direkt auf f (n) folgt, gilt f (n) ∈ O(g(n)): √ 1 2n , n 5 , nn , log2 n, 2 log2 n . Begründen Sie alle Ihre Entscheidungen genau gemäß der Definitionen der O-Notation. Aufgabe 2: Rekursionsgleichungen 4 Punkte Bestimmen Sie das asymptotische Wachstum folgender rekursiv beschriebener Laufzeitfunktionen: (a) T1 (n) = 2 · T1 n 2 + √ n, T1 (1) = 1 (b) T2 (n) = T2 (n − 1) + 2(n − 1), T2 (1) = 1 Aufgabe 3: Schwellwert 3 Punkte Geben Sie das größte a ∈ N an, so dass ein Algorithmus mit der Laufzeit n TB (n) = a · TB + n2 4 asymptotisch schneller ist als ein Algorithmus mit der Laufzeit n TA (n) = 7 · TA + n2 . 2 [Bitte wenden] Aufgabe 4: Asymptotische Notation 3 Punkte Zeigen Sie, dass für Funktionen f, g : N0 → R gilt: g ∈ o(f ) ⇒ g ∈ O(f ) \ Ω(f ) Arbeiten Sie dabei mit der Definition o(f ) = {g : N0 → R : ∀c > 0 ∃n0 > 0 : Aufgabe 5: k-Wege-Merge-Sort c · |g(n)| ≤ |f (n)| ∀n > n0 } . 5 Punkte Für k > 2 ist k-Wege-Merge-Sort eine Verallgemeinerung von Merge-Sort. Eingabe sei ein Array A[1, . . . , n] von natürlichen Zahlen, wobei wir der Einfachheit halber n = k r , r ∈ N annehmen. Ist n = 1, so sind wir fertig und beenden den Algorithmus, andernfalls teilen wir A in k gleich große Teilstücke B1 , . . . , Bk auf und sortieren diese Teilfolge wiederum mit k-Wege-Merge-Sort. Anschließend werden die sortierten Teilfolgen gemischt. Nehmen Sie an, dass dieses Mischen n(k −1) Vergleiche benötigt. Geben Sie die exakte Anzahl der Vergleiche, die k-Wege-Merge-Sort benötigt, in Abhängigkeit von n und k an. Für welche Wahl von k ist diese Anzahl minimal?