Algorithmen und Datenstrukturen SS 06 ¨Ubungsblatt 1

Werbung
TU Ilmenau, Fakultät IA
Institut TI, FG Komplexitätstheorie und Effiziente Algorithmen
Priv.-Doz. Dr.rer.nat.habil. K.-H. Niggl, Dipl.-Inf. U. Schellbach
http://www.tu-ilmenau.de/fakia/audss06.html
Algorithmen und Datenstrukturen SS 06
Übungsblatt 1
Abgabetermin: Dienstag, den 11.4.2006, in der Vorlesung
Aufgabe 1 (Abschlußeigenschaften/Rechenregeln der O-Notation)
Zeigen Sie:
(a) g ∈ O(f ) =⇒ O(g) ⊆ O(f )
(b) O(f + g) = O(max{f, g})
(c) g1 ∈ O(f1 ), g2 ∈ O(f2 ) =⇒ g1 + g2 ∈ O(f1 + f2 )
(d) g1 ∈ O(f1 ), g2 ∈ O(f2 ) =⇒ g1 · g2 ∈ O(f1 · f2 )
Aufgabe 2 (Selection-Sort)
Selection-Sort sortiert n Zahlen in einem Feld A[1..n], indem zuerst das kleinste Element bestimmt und mit A[1] vertauscht wird, dann das zweitkleinste Element bestimmt
und mit A[2] vertauscht wird, und so weiter für die n−1 kleinsten Elemente der Eingabe.
(a) Formulieren Sie Selection-Sort als Pseudocode.
(b) Formulieren Sie eine Schleifeninvariante, aus der die Korrektheit von Selection-Sort
folgt. Wieso genügt es, daß die Schleife nur für die ersten n − 1 Elemente durchlaufen wird?
(c) Geben Sie die best-case und worst-case Laufzeit von Selection-Sort in ONotation an.
Aufgabe 3 (Fibonacci-Zahlen)
Die Fibonacci-Zahlen sind wie folgt rekursiv definiert:
F0 = 0, F1 = 1 und Fi = Fi−1 + Fi−2 für i ≥ 2
Sie stehen in engem Bezug zum sogenannten goldenen Schnitt Φ = (1 +
seinem sogenannten Konjugierten Φ̂ = 1 − Φ, d.h. Φ̂ + Φ = 1.
Beweisen Sie durch geeignete Induktion die folgenden Aussagen:
(a) Die i-te Fibonacci-Zahl besitzt die folgende Darstellung:
Fi =
Φi − Φ̂i
√
5
(b) Es existieren Konstanten c > 1, a > 0, b > 0, so daß für alle n ≥ 0 gilt:
(i) Fn+1 ≥ a · cn
(ii) Fn+1 ≤ b · cn
Bemerkung: Das bedeutet insbesondere Fn+1 ∈ Θ(cn ).
√
5)/2 und
2
Algorithmen und Datenstrukturen SS 06
Übungsblatt 1
Aufgabe 4 (Korrektheit von Bubble-Sort)
Betrachten Sie den Sortieralgorithmus Bubble-Sort, der mit der wiederholten Vertauschung von in falscher Reihenfolge stehenden benachbarten Elementen arbeitet.
Bubble-Sort(A[1..n])
1
2
3
4
for i ← 1 to n
do for j ← n downto i + 1
do if A[j] < A[j − 1]
then exchange A[j] ↔ A[j − 1]
(a) Es bezeichne A0 die Ausgabe von Bubble-Sort. Für den Nachweis der Korrektheit
von Bubble-Sort muß gezeigt werden:
A0 [1] ≤ A0 [2] ≤ · · · ≤ A0 [n]
(1)
Was muß zum Nachweis der Korrektheit zusätzlich noch gezeigt werden?
Die nachfolgenden beiden Aufgabenteile dienen zum Beweis von Ungleichung (1):
(b) Formulieren Sie präzise eine Invariante der for-Schleife in den Zeilen 2-4.
Beweisen Sie diese Invariante mittels geeigneter Induktion.
(c) Formulieren Sie nun unter der Annahme, daß die Invariante aus Teil (b) gilt, eine
Invariante für die for-Schleife in den Zeilen 1-4, welche den Beweis von Ungleichung
(1) ermöglicht.
(d) Wie groß ist die worst-case Laufzeit von Bubble-Sort? Vergleichen Sie diese
Laufzeit mit der entsprechenden Laufzeit von Insertion-Sort.
Herunterladen