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
© Copyright 2024