Übung Algorithmen und Datenstrukturen Sommersemester 2015 Marc Bux, Humboldt-Universität zu Berlin
Agenda Schreibtischtest zu Suchverfahren Amortisierte Analyse Max-Heaps und HeapSort 2
Agenda Schreibtischtest zu Suchverfahren Amortisierte Analyse Max-Heaps und HeapSort 3
Aufgabe Schreibtischtests zu Suchverfahren 4
Agenda Schreibtischtest zu Suchverfahren Amortisierte Analyse Max-Heaps und HeapSort 5
Binärzähler Geg.: k-bit Binärzähler Array von k Bits b 0, b 1,, b k 1 Entspricht Binärzahl b k 1 b 1 b 0 bzw. Dezimalzahl i b i 2 i Operation: Zahl inkrementieren D. h. Addition von 1 Kosten = Anzahl der Bitänderungen jedes Bit kostet 1 n b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 Bitwechsel n b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 23 0 0 0 1 0 1 1 1 24 0 0 0 1 1 0 0 0 4 Bitwechsel 6
Binärzähler Kostenabschätzung Gesucht: Kosten für n Inkrement-Operationen, wenn Zähler bei 0 beginnt Best-case: 1 Bitwechsel Worst-case: Alle Bits werden verändert k Ergibt Kosten: n k = O(nk) Problem sehr pessimistische Abschätzung, da Worst-case eher selten n b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 127 0 1 1 1 1 1 1 1 128 1 0 0 0 0 0 0 0 k Bitwechsel 7
Binärzähler Kostenabschätzung (2) n b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 #BW Gesamt 0 0 0 0 0 0 0 0 0 n #BW kn 1 0 0 0 0 0 0 0 1 1 1 1 8 2 0 0 0 0 0 0 1 0 2 2 3 16 3 0 0 0 0 0 0 1 1 1 3 4 24 4 0 0 0 0 0 1 0 0 3 4 7 32 5 0 0 0 0 0 1 0 1 1 5 8 40 6 0 0 0 0 0 1 1 0 2 6 10 48 7 0 0 0 0 0 1 1 1 1 7 11 56 8 0 0 0 0 1 0 0 0 4 8 15 64 9 0 0 0 0 1 0 0 1 1 9 16 72 10 0 0 0 0 1 0 1 0 2 10 18 80 Häufig geringe Kosten Abschätzung zu pessimistisch 8
Amortisierte Analyse Amortisation (frz. amortir, tilgen ): Anfängliche Aufwendungen für spätere Erträge Gegeben: Datenstruktur D, Operationen Q Ziel: Zeit- oder Speicherkomplexität einer Datenstruktur im schlechtesten Fall ermitteln Bessere obere Schranken der Laufzeit bei n Operationen (Amortisierter Worst-case) Voraussetzungen: nicht alle Operationen sind teuer teure Operationen benötigen viele vorangehende günstigere Mehrere Vorgehensweisen: Guthabenmethode (Bankkontomethode) Potentialmethode Grundidee: Anfängliche (eigentlich günstige) Operation teurer bewerten um spätere (teure) Operationen auszugleichen 9
Potentialmethode Potentialfunktion Φ: D i R ordnet jedem Zustand der Datenstruktur ein Potential zu Seien c i die realen Kosten der i-ten Operation Amortisierte Kosten d i = c i + Φ D i Φ D i 1 ergibt sich aus den realen Kosten und dem Potentialzuwachs Amortisierte Gesamtkosten: n i=1 d i n = c i + Φ D i Φ D i 1 = i=1 n i=1 c i + Φ D n Φ D 0 Ziel: Finde eine Potentialfunktion Φ, so dass 1. Φ D von einer Eigenschaft von D abhängt, 2. Φ D i Φ D 0, 3. d i lässt sich für alle i berechnen. Dann sind die amortisierten Gesamtkosten obere Schranke für die tatsächlichen Gesamtkosten Herangehensweise: Ermitteln einer Potentialfunktion, die hinreichend (aber nicht unnötig viel) Potential für spätere teure Operationen sammelt 10
Potentialmethode Binärzähler Φ(D i ): Anzahl der Einsen im Zähler In der i-ten Operation springen t i Bits auf 0 und 0-1 Bits auf 1 Es folgt: c i t i + 1 Falls Φ D i = 0, so ist Φ D i 1 = k Falls Φ D i > 0, so ist Φ D i Φ D i 1 t i + 1 In beiden Fällen gilt Φ D i Φ D i 1 t i + 1 Es folgt: d i = c i + Φ D i Φ D i 1 d i t i + 1 + Φ D i 1 t i + 1 Φ D i 1 2 Es gilt: 1. Φ D hängt von einer Eigenschaft von D ab, 2. Φ D i Φ D 0, 3. d i 2. n i=1 d i 2n Ο n ist obere Schranke für die Komplexität 11
Aufgabe Dynamische Arrays Dynamisches Array: Größe des Arrays wird verdoppelt, wenn es voll ist Beispiel: Datenstruktur ArrayList in Java Kosten bei Folge von Push-Operationen: By ScottDNelson (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons 12
Potentialmethode Dynamische Arrays Aufgabe: Analysieren Sie mittels der Potentialmethode die Worst-Case-Komplexität eines Dynamischen Arrays, in welches n Elemente eingefügt werden. Zur Erinnerung: Die Potentialfunktion sollte von der Datenstruktur abhängen, das Potential der initialisierten Datenstruktur niemals unterschritten wird und hinreichend (aber nicht unnötig viel) Potential für teure Operationen sammeln. Sei m die aktuelle Größe des Arrays; Φ D i = 2 n m 2 Falls n < m, dann ist c i = 1, Φ D i Φ D i 1 = 2 und damit d i = 1 + 2 = 3 Falls n = m, dann ist c i = 1 + m, Φ D i Φ D i 1 = 2 m und damit d i = 1 + m + 2 m = 3 n i=1 d i 3n Ο n ist obere Schranke für die Komplexität 13
Agenda Schreibtischtest zu Suchverfahren Amortisierte Analyse Max-Heaps und HeapSort 14
Aufgabe MaxHeaps und HeapSort Sortieren Sie das Array A = [17,48,1,2,9,18,17,29,22,5,56,34] mit Hilfe des Algorithmus HeapSort. 15
Ausblick: Nächste Woche Rückgabe der Abgaben zum dritten Übungsblatt Besprechung der Bewertung zum dritten Übungsblatt Besprechung der Lösungen des vierten Übungsblatts Vorstellen der Aufgaben des fünften Übungsblatts Fragen?