Muster Heim. 02

SoSe 2015
C. Sohler
J. Flake, A. Krivo²ija
R. Penninger, B. Rudak, V.Volz
DAP2 Heimübung 2
Ausgabedatum: 10.4.15 Abgabedatum: Fr. 17.4.15 (Mo. 20.4. für Gruppen 26-31) 12 Uhr
Abgabe:
Schreiben Sie unbedingt immer Ihren vollständigen Namen, Ihre Matrikelnummer und Ihre
Gruppennummer auf Ihre Abgaben! Beweise sind nur dort notwendig, wo explizit danach gefragt
wird. Eine der Begründung der Antwort wird allerdings immer verlangt.
Scheine:
Für Studierende in den Bachelor-Studiengängen ist die Erbringung von Studienleistungen Voraussetzung für die Teilnahme an der Modulprüfung (Klausur)1 . Die Studienleistung für die
DAP2-Übungen wird erbracht durch
• Erreichen von mindestens 50 % der Punkte, die in den Heimarbeitsübungsaufgaben erreichbar sind, und
• Erreichen von 50 % der Punkte in mindestens einem der beiden Übungstests.
Die Heimübungen dürfen in Gruppen von maximal drei Studierenden abgegeben werden. Die
gemeinsame Bearbeitung in solchen Gruppen ist ausdrücklich erwünscht.
Aufgabe 2.1 (5 Punkte): (O Notation)
Welche der folgenden Aussagen sind korrekt?
a) n5 + 50n2 ∈ O (5n )
b) n3 + log n ∈ Ω (n3 + 3n2 )
√
c) 4 10 · (log n)2 ∈ Θ (log (n2 ))
d) n4 − 4n ∈ o (n4 + 4n)
√
e) n ∈ ω (log n)
Geben Sie in allen Fällen einen Beweis bzw. ein Gegenbeispiel an, um Ihre Antwort zu begründen. Sie dürfen die Ergebnisse benutzen, die in der Vorlesung bewiesen wurden.
Lösung:
1 In
anderen Studiengängen ist die Erbringung der Studienleistung möglicherweise ebenfalls Picht. Bitte
überprüfen Sie Ihre jeweilige Prüfungsordnung bzw. das jeweilige Modulhandbuch.
1
1. Korrekt, weil n5 + 50n2 ≤ n5 + 50n5 = 51n5 für alle n ≥ 1 ist. In der Vorlesung ist
bewiesen, dass nc ∈ O(2n ) ⇔ ∃c0 > 0, n0 > 0, n5 ≤ c0 · 2n . Davon folgt dass n5 + 50n2 ≤
51 · n5 ≤ 51c0 · 2n für alle n ≥ n0 . Da für alle n ≥ 1 gilt, dass 2n ≤ 5n ist, gilt auch dass
n5 + 50n2 ≤ 51c0 · 5n für alle n ≥ n0 . Sei c = 51c0 > 0, und die Behauptung ist bewiesen
2. Korrekt. Wir sollten beweisen, dass ∃c > 0, ∃n0 > 0, ∀n ≥ n0 : n3 + log n ≥ c · (n3 + 3n2 )
ist. Für alle n ≥ 1 ist log n ≥ 0, und somit
n3 + log n ≥ n3 =
ist. Für c =
1
4
1
1
1
· 4n3 = · n3 + 3n3 ≥ · n3 + 3n2
4
4
4
und n0 = 1 sind die Bedingungen erfüllt.
3. Nicht korrekt. Wir wissen
dass log(n2 ) = 2 log n ist. Dann sollte es gelten dass
√
4
2
log n ∈ O (2 log n) und 10 · log2 n ∈ Ω (2 log n).
√
4
10 ·
Die zweite Aussage gilt, weil in der Vorlesung bewiesen wurde, dass log n ∈ O(log2 n)
ist,
somit log2 n ∈ Ω(log n) ist. Die Konstanten haben keinen Einuss, deswegen gilt dass
√
4
10 log2 n ∈ Ω(2 log n) ist.
Die
erste Aussage ist falsch. Wenn da c > 0 und n0 > 1 existierten, so dass für alle n ≥ n0 ,
√
4
10 · log2 n ≤ c · (2 log n) ist, hätten wir dass
√
√
4
4
10 · log n ≤ 2c ⇔ log n ≤ 2c/ 10
für alle n ≥ n0 > 1 ist, weil log n > 0 ist. Das gilt für keinen Wert n0 . Widerspruch.
4. Nicht korrekt, weil die Funktion n4 −4n nicht asymptotisch kleiner als die Funktion n4 +4n
ist. Für 0 < c < 1 gibt es keine n0 > 0, so dass n4 − 4n < c · (n4 + 4n) für alle n ≥ n0 > 0.
Für solche c ist
(1 − c) · n4 < (1 + c) · 4n ⇔ (1 − c) · n3 < 4 · (1 + c) ⇔ n3 <
4 + 4c
.
1−c
Die Aussage an der rechten Seite der letzten Ungleichung ist positiv, und die Ungleichung
gilt nur für endlich viele Werte von n.
√
5. √
Korrekt. Wir wollen beweisen, dass n ∈ ω (log n) ist, d.h.
√ ∀c > 0, ∃n0 > 0, ∀n ≥ n0 :
n > c · log n. Sei c > 0 beliebig ausgewählt und f (n) = n − c log10 n.
Wir wissen dass
√
c · log10 e
n − 2c · log10 e
1
=
f (n) = √ −
n
2n
2 n
√
ist. Das ist positiv für alle solche n, so dass n − 2c · log10 e > 0 gilt, d.h. n > 4c2 log210 e.
Es ist log210 e > 0.1886. Für alle n > n0 = 4c2 log210 e ist die Ableitung f 0 (n) der Funktion
f (n)√positiv. Die Funktion f (n) ist für alle solche n aufsteigend und auch positiv, d.h. es
gilt n > c · log n, was wir beweisen wollten.
0
Aufgabe 2.2 (5 Punkte): (Laufzeitanalyse)
2
Führen Sie eine exakte Worst-Case Laufzeitanalyse für den unten gegebenen Algorithmus BearbeiteArray bei Eingabe eines Arrays der Länge n durch, d.h. nden Sie eine Funktion f (n),
deren Wert die Worst-Case Laufzeit diesen Algorithmus ist.
1
2
3
4
5
6
7
BearbeiteArray(Array A):
n ← length[A]
for i ← n downto 1 do
for j ← 1 to i − 1 do
if A[j + 1]<A[j ] then
tmp ← A[j ]
A[j ] ← A[j + 1]
A[j + 1]← tmp
a) Was macht diese Algorithmus?
b) Führen Sie die asymptotische Worst-Case Laufzeitanalyse für diesen Algorithmus durch,
d.h. nden Sie eine möglichst kleine Funktion g(n), so dass f (n) ∈ O(g(n)).
Lösung:
Beh.: Es handelt sich hier über bekannte BubbleSort Algorithmus, der benötigt im Worst-Case
T (n) = 52 n2 − 12 n + 2 Rechenschritte.
Beweis : Wir gehen Zeile für Zeile durch den Pseudocode und geben jeweils an, wie viele Re-
chenschritte die Zeile benötigt:
1. Eine Zuweisung benötigt einen Rechenschritt.
2. n + 1 Rechenschritte, weil nach n Iterationen noch einmal die Abbruchbedingung geprüft
werden muss.
3. Aufgrund der äuÿeren Schleife wird dieser Schleifenkopf n mal (für Abbruchbedingungen)
ausgeführt. In Iteration i der äuÿeren Schleife iteriert die innere Schleife P
über die Werte 1 bis
n
i − 1. Dies ergibt also i − 1 Durchläufe. Die
Pn innere Schleife erzeugt also i=1 (i − 1) Rechenschritte. Insgesamt erhalten wir also n +P i=1 (i − 1).
4. Die Bedingung der Verzweigung wird ni=1 (i − 1) mal überprüft.
5. - 7. Diese Zuweisungen werden nur aufgerufen, falls die Bedingung in Zeile 4 wahr ist. Da wir
eine Worst-Case Analyse durchführen, können
Pn wir annehmen, dass sie bei jeder Auswertung
wahr ist. Daher werden
Pdiese Zeilen jeweils i=1 (i − 1) mal aufgerufen. Insgesamt ergibt sich
also ein Beitrag von 3 ni=1 (i − 1).
Nun summieren wir alle ermittelten Beiträge zu
!
n
X
T (n) = 1 + (n + 1) + n +
(i − 1) +
4
i=1
= 2n + 2 − 5n + 5
n
X
n
X
!
(i − 1)
= 2n + 2 + 5
i=1
i = 2 − 3n + 5
i=1
n2 + n
2
n
X
(i − 1)
i=1
5
1
= n2 − n + 2.
2
2
Asymptotisch gilt es dass 52 n2 − 21 n + 2 ∈ O(n2 ) ist.
3