¨Ubungsblatt 2 - Institut für Formale Methoden der Informatik

Werbung
Datenstrukturen und Algorithmen
Funke/Weiß
SS 2012
Institut für Formale
Methoden der Informatik
Universität Stuttgart
http://www.fmi.informatik.uni-stuttgart.de/alg
Übungsblatt 2
Abgabe: 25.April 2011; 23:59 Uhr
Übersicht O-Notation:
• O (f (n)) = {g : N → R; ∃c > 0, n0 ∈ N sodass ∀n ≥ n0 : |g(n)| ≤ c · |f (n)|}
• o(f (n)) = {g : N → R; ∀c > 0 ∃n0 ∈ N sodass ∀n ≥ n0 : |g(n)| ≤ c · |f (n)|}
• Ω(f (n)) = {g : N → R; ∃c > 0, n0 ∈ N sodass ∀n ≥ n0 : |g(n)| ≥ c · |f (n)|}
• ω(f (n)) = {g : N → R; ∀c > 0 ∃n0 ∈ N sodass ∀n ≥ n0 : |g(n)| ≥ c · |f (n)|}
• Θ(f (n)) = O (f (n)) ∩ Ω(f (n))
Informell:
• g ∈ O (f (n)) heißt: “g wächst asymptotisch höchstens so schnell wie f”
• g ∈ o(f (n)) heißt: “g wächst asymptotisch echt langsamer als f”
• g ∈ Ω(f (n)) heißt: “g wächst asymptotisch mindestens so schnell wie f”
• g ∈ ω(f (n)) heißt: “g wächst asymptotisch echt schneller als f”
• g ∈ Θ(f (n)) heißt: “g und f verhalten sich asymptotisch gleich”
Beispiel:
b(n) = n2 , c(n) = n, d(n) = 0.5 · n2 − 10 · n
Es gilt:
• b(n) ∈ O (b(n)), trivial mit c = 1, n0 = 1
• b(n) ∈ O (d(n)), z.B. mit c = 4, n0 = 40
• d(n) ∈ O (b(n)), trivial
• c(n) ∈ o(b(n)), für n0 = d1/ce + 1
• d(n) ∈
/ o(b(n)), da für c > 2 immer ein n0 existiert, sodass für n ≥ n0 : d(n) > c · b(n)
• b(n) ∈ Ω(c(n)), trivial mit c = 1, n0 = 1
• b(n) ∈ ω(c(n)), trivial mit c = 1, n0 = 1
• b(n) ∈ Ω(d(n)), für c = 1, n0 = 1
• d(n) ∈ Ω(b(n)), für c = 4, n0 = 40
• d(n) ∈ Θ(b(n)) und b(n) ∈ Θ(d(n))
Problem 1 (5 P.) Zeigen Sie:
1. Für beliebige Funktionen f, g, h, i : N → R mit f ∈ O (g) und h ∈ O (i) gilt:
(a) f (n) + h(n) ∈ O (max(|g(n)|, |i(n)|)).
(b) f (n) · h(n) ∈ O (g(n) · i(n)).
2. Seien f, g, h : N → R mit f ∈ O (g) und g ∈ O (h). Dann ist auch f ∈ O (h).
3. Seien f, g : N → R mit g(n) 6= 0 für alle n. Dann gilt:
f (n) < ∞.
(a) f ∈ O (g) genau dann, wenn lim sup g(n) n→∞
(b) f ∈ o(g) genau dann, wenn lim
n→∞
f (n)
= 0.
g(n)
4. Für a, b ∈ R, a, b > 0 gilt an ∈ o(bn ) genau dann, wenn a < b.
5. Sei f ein Polynom vom Grad k > 0. Dann gilt:
(a) f (n) ∈ Θ(nk ).
(b) Für l > k gilt f (n) ∈ o(nl ).
(c) Für l < k gilt f (n) ∈ ω(nl ).
(d) Für a > 1 gilt f (n) ∈ o(an ).
(e) Für a > 1 gilt f (n) ∈ ω(loga n).
Hinweis: Verwenden Sie für Ihre Beweise möglichst nur die Definitionen von O etc. und versuchen Sie formal
korrekt zu argumentieren! Für die Abgabe können Sie auch Ihre handschriftliche Lösung einscannen.
Der Limes superior ist definiert als lim sup xn := lim sup xm .
n→∞
n→∞
m≥n
Problem 2 (2 P.) Sind die folgenden Aussagen wahr oder falsch? Beweisen oder widerlegen Sie sie.
1. f ∈ o(g) impliziert f ∈
/ Ω(g).
2. f ∈ o(g) genau dann, wenn f ∈
/ Ω(g).
3. f ∈ o(g) genau dann, wenn f ∈ O (g) und f ∈
/ Ω(g).
4. Seien f und g Polynome. Dann gilt f ∈ o(g) genau dann, wenn f ∈
/ Ω(g).
Problem 3 (2 P.) Betrachten Sie folgende Funktionen und ordnen Sie sie gemäß ihrem asymptotischen Verhalten
aufsteigend an:
n
a(n) = 3 · n − 12 , b(n) = n log n, c(n) = 7, e(n) = 2n , f (n) = n27 , g(n) = log(n4 ).
Problem 4 (2 P.) Geben Sie bestmögliche obere Schranken für die Laufzeit (in O-Notation, in Abhängigkeit
von n) der folgenden Routinen an.
f1(n)
{
sum=0
for i=1 to n
for j=1 to n
sum=sum+1
return sum
}
f2(n)
{
sum=0
for i=1 to n
for j=i to n
sum=sum+1
return sum
}
f3(n)
{
sum=0
for i=1 to 1000*n
for j=1 to 1000
sum=sum+1
return sum
}
f4(n)
{
sum=0
for i=1 to n
sum=sum+1
if (n>1)
sum=sum+f4(n-1)
return sum
}
f5(n)
{
sum=0
for i=1 to 99999
sum=sum+1
return sum
}
f6(n)
{
if (n>=2)
return f6(n/2)+1
else
return 1
}
Problem 5 (4+1 P.)
a) Implementieren Sie Mergesort analog zu Blatt 1 Problem 2+3.
b) Geben Sie wieder die Laufzeiten für das Sortieren von n = 10000, 20000, . . . , 640000 Zahlen an. Verwenden
Sie dazu wieder die zahlen.txt aus Blatt 0.
Hinweis: Erweitern Sie ihr Framework aus Blatt 1 um möglichst viel Code wiederverwenden zu können. Sollte Ihre
Zeitmessung zu ungenau sein, empfiehlt es sich mehr als einmal zu sortieren und die gesamte Ausführungszeit zu
messen.
Herunterladen