5. Übung

Werbung
Prof. Dr. Burkhard Monien
Paderborn, den 8. Mai 2006
Abgabe 15. Mai 2006, 11 Uhr, Kästen Flur D3
Übungen zur Vorlesung
Datenstrukturen und Algorithmen
SS 2006
Blatt 5
AUFGABE 14 (4 Punkte):
Angenommen, die Funktion Partiton teilt Teilarrays der Größe n immer in zwei Teilarrays auf,
von denen eins (1 − α) · n Elemente und das andere α · n Elemente enthält, mit 12 ≤ α < 1. Zeigen
log n
Sie, dass dann jedes Blatt im Rekursionsbaum für Quicksort höchstens Tiefe − log
α besitzt. Aufund Abrundungen dürfen ignoriert werden.
AUFGABE 15 (6 Punkte):
Die Laufzeit T (n) von Algorithmus A sei gegeben durch die Rekursionsgleichung T (n) = 7·T ( n2 )+n2 .
Die Laufzeit S(n) von Algorithmus B sei gegeben durch die Rekursionsgleichung S(n) = a·S( n4 )+n2 .
Bestimmen Sie die asymptotische Laufzeit beider Algorithmen und den größten Wert von a, für den
B asymptotisch schneller als A ist. Begründen Sie Ihre Antworten!
AUFGABE 16 (12 Punkte):
Betrachten Sie den folgenden Algorithmus zum Aufbau eines max-Heaps aus einem beliebigen Array
A.
Build-Max-Heap’(A):
1 heap-size[A] ← 1
2 for i ← 2 to length[A]
3
do Max-Heap-Insert(A, A[i])
Max-Heap-Insert(A, key):
1
2
3
4
5
6
heap-size[A] ← heap-size[A] + 1
A[heap-size[A]] ← key
i ← heap-size[A]
while i > 1 and A[P arent(i)] < A[i]
do A[i] ↔ A[P arent(i)]
i ← P arent(i)
1. Illustrieren Sie die Operationen von Build-Max-Heap’(A) am Beispiel des Arrays
A = [7, 10, 8, 5, 25, 2, 3, 23, 17].
2. Vergleichen Sie nun Build-Max-Heap’(A) mit dem Algorithmus Build-Max-Heap(A) aus
der Vorlesung. Erstellen beide Methoden den gleichen Heap, wenn sie mit dem gleichen Array
A gestartet werden? Beweisen Sie die Gleichheit oder geben Sie ein Gegenbeispiel an!
3. Zeigen Sie, dass Build-Max-Heap’(A) in Laufzeit O(n · log n) einen max-Heap aufbaut.
Beweisen Sie dazu die Korrektheit des Algorithmus und leiten Sie seine Laufzeit her.
Herunterladen