TU Ilmenau, Fakultät IA FG Telematik/Rechnernetze Prof. Dr.-Ing. G. Schäfer, Dr. S. Grau http://www.tu-ilmenau.de/telematik/aup Algorithmen und Programmierung WS13/14 Übungsblatt 7 Abgabe am Mittwoch 04.12.2013 in der Vorlesung Aufgabe 1 Eigenschaften von Programmen Der nebenstehende Algorithmus 1 erhält eine natürliche Zahl n als Eingabe und liefert ein Feld von Wahrheitswerten zurück. (a) Geben Sie in asymptotischer Notation eine möglichst genaue Schätzung der Laufzeitkomplexität des Algorithmus an. (b) Welche Positionen von p wären am Ende mit true belegt, wenn das Programm mit Parameter n= 15 aufgerufen wird? Welche gemeinsame Eigenschaft besitzen diese Zahlen? (c) Finden Sie für die durch /* A */ . . . /* B */ eingefasste Schleife eine sinnvolle (und nichttriviale) Schleifeninvariante, welche abhängig von Laufvariable i Aussagen über die in p mit true belegten Positionen erlaubt. Beweisen Sie die Gültigkeit ihrer Invariante. Aufgabe 2 Die Informatik-WG 1+2+5 Punkte Algorithmus 1 : s(n) 1 2 3 4 5 6 7 8 9 10 11 12 13 boolean[ ] p := new boolean[n + 1]; p[0] := false; p[1] := false; for (int i := 2; i≤n; i++) do p[i] := true; int i:=2; /* A while i ≤ n do if p[i] then int j:=i·i; while j≤n do p[j]:=false; j:=j+i; */ i := i+1; /* B return p; */ 2 Punkte Empirische Daten legen nahe, dass der folgende Induktionsbeweis einen Fehler enthält. Finden und erläutern Sie ihn. Behauptung: Jede Auswahl von n (n > 0) Ilmenauer (Ingenieur-)Informatikstudenten wohnt im selben Zimmer. Induktionsanfang: n = 1 Jeder einzelne Student lebt (hoffentlich) in einem Zimmer. Induktionsvorraussetzung: Die Behauptung gelte für alle n0 < n. Induktionsschritt: Wir bilden zwei Teilgruppen G1 und G2 , welche jeweils durch das Entfernen eines Studenten der aktuell betrachteten Gruppe entstehen. Für G1 wird dabei ein anderer Student entfernt als für G2 . Da |G1 | = |G2 | = n − 1 gilt, gilt die Behauptung per Induktionsvorraussetzung sowohl für G1 als auch für G2 . Somit haben die Studenten pro Gruppe das gleiche Zimmer und insbesondere haben auch die Studenten die sich in beiden Gruppen befinden das gleiche Zimmer. Es folgt, dass alle n Studenten das selbe Zimmer bewohnen müssen. Bitte wenden! 2 Algorithmen und Programmierung WS13/14 Übungsblatt 7 Aufgabe 3 Korrektheit applikativer Algorithmen 4 Punkte Den folgenden applikativen Algorithmus kennen Sie bereits aus Übungsaufgabe 3 vom Übungsblatt 3. f(x,y) = if (y = 0) then 1 else if (y < 0) then (1.0)/f(x,-y) else if (y > 0) then x · f(x,y-1) fi fi fi Damals haben einige von ihnen die Behauptung aufgestellt, dass f(x,y) = xy gelten würde. Beweisen Sie diese Behauptung per vollständiger Induktion. Aufgabe 4 Korrektheit applikativer Algorithmen 3+2 Punkte Es wird behauptet, der folgende applikative Algorithmus habe den Wert true genau dann, wenn es sich bei dem im Feld t übergebenen Text um ein Palindrom handelt. Beweisen sie diese Behauptung. Beweisen Sie außerdem, dass der Algorithmus für jede mögliche Eingabe terminiert. palindrom(t) = if (t.length ≤ 1) then true else if (t[0] 6= t[t.length-1]) then false else palindrom(t[1..(t.length-2)] fi fi Hinweis: Der Ausdruck t[i..j] bezeichnet ein Feld, welches genau aus dem Teil des Feldes t besteht, welcher von den Inidizes i und j begrenzt wird. Als Beispiel gilt mit t = [’a’,’b’,’c’,’d’,’e’] der Ausdruck t[1..3] = [’b’,’c’,’d’]. Eine solche Notation ist z.B. in der Programmiersprache Ruby1 üblich. Aufgabe 5 O-Notation 4 Punkte Geben Sie eine Ordnung (fi1 , fi2 , . . . , fin ) der nachfolgend gegebenen Funktionen an, so dass für je zwei benachbarte Funktionen fij , fij+1 gilt, dass O(fij ) ⊆ O(fij+1 ). f1 (n) = 2n5 +n2 +42 3 n 2 +20n f5 (n) = 26n f2 (n) = π f4 (n) = 100−n f6 (n) = 2n · log n f7 (n) = 2, 02 2 ·n Aufgabe 6 Master-Theorem 1 7 f3 (n) = 17n log(n 2 ) √ f8 (n) = 23n7 4 Punkte Das Master-Theorem besagt, dass eine Rekurrenzgleichung T (n) = aT ( nb ) + f (n), mit Konstanten a, b > 1 und einer Funktion f (n) über den nicht-negativen Zahlen, wie folgt asymptotisch abgeschätzt werden kann: Θ(nlogb a ) falls gilt: ∃ε > 0 : f (n) = O(nlogb a−ε ) Θ(nlogb a log n) falls gilt: f (n) = Θ(nlogb a ) T (n) = Θ(f (n)) falls gilt: ∃ε > 0 : f (n) = Ω(nlogb a+ ) ∧∃0 < c < 1, ∃n0 ∀n ≥ n0 : a · f ( nb ) ≤ c · f (n) Nutzen Sie das Master-Theorem um die folgenden Rekurrenzgleichungen abzuschätzen, bzw. geben Sie an wo dies nicht möglich ist. Begründen Sie ihre Lösung. 1 2 a) T (n) = 3 · T n2 + 2n b) T (n) = 8 · T n3 + 10 n n 1√ n 2 c) T (n) = 32 · T 4 + 3n d) T (n) = 2 · T 4 + 2 n 1 https://www.ruby-lang.org/