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.