Algorithmen und Programmierung WS13/14

Werbung
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/
Herunterladen