Algorithmen und Datenstrukturen

Ähnliche Dokumente
AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

13. Binäre Suchbäume

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Spezialvorlesung Online-Algorithmen. Matthias Westermann Berthold Vöcking Christian Sohler

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen und Datenstrukturen Balancierte Suchbäume

Programmiertechnik II

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. SS 06

Seminarausarbeitung Entwurf und Analyse von Datenstrukturen. Splay Trees. Mirco Lukas und Alexander Werthmann. Datum:

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Vorkurs Informatik WiSe 15/16

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Grundlagen der Programmierung 2. Bäume

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

4 Greedy-Algorithmen (gierige Algorithmen)

Suchen und Sortieren Sortieren. Heaps

Fibonacci-Heaps und Amortisierte Analyse

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Fully dynamic algorithms for the single source shortest path problem.

Algorithmen und Datenstrukturen Suchbaum

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Kapiteltests zum Leitprogramm Binäre Suchbäume

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Datenstrukturen & Algorithmen

Anmerkungen zur Übergangsprüfung

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Sortierverfahren für Felder (Listen)

Algorithmen und Datenstrukturen

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Zeichnen von Graphen. graph drawing

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

Binäre Bäume Darstellung und Traversierung

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Die k kürzesten Wege in gerichteten Graphen

Methoden des Algorithmenentwurfs Kapitel 2.2: Randomisierte Online Algorithmen

B-Bäume I. Algorithmen und Datenstrukturen 220 DATABASE SYSTEMS GROUP

Abschnitt: Algorithmendesign und Laufzeitanalyse

3 Amortisierte Analyse

Kap. 4.2: Binäre Suchbäume

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Approximationsalgorithmen

Programmierung und Modellierung

Codierung, Codes (variabler Länge)

Datenstrukturen und Algorithmen SS07

Algorithmen II Vorlesung am

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Datenstrukturen und Algorithmen

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Algorithmen und Datenstrukturen 2

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

WS 2009/10. Diskrete Strukturen

Graphen: Datenstrukturen und Algorithmen

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Einführung in die Informatik 1

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Lenstras Algorithmus für Faktorisierung

Beispiel. Bsp.: Betrachte Schlussweise in: (3) folgt aus (1) und (2), siehe z.b. Resolutionsregel. was ist mit folgender Schlußweise:

Bestimmung einer ersten

8 Diskrete Optimierung

Teil III: Routing - Inhalt I. Literatur. Geometric Routing. Voraussetzungen. Unit Disk Graph (UDG) Geometric Routing 29

Euklidischer Algorithmus, Restklassenring und seine Struktur, Chinesischer Restklassensatz

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Vorlesung 3 MINIMALE SPANNBÄUME

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

binäre Suchbäume Informatik I 6. Kapitel binäre Suchbäume binäre Suchbäume Rainer Schrader 4. Juni 2008 O(n) im worst-case Wir haben bisher behandelt:

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

2.11 Kontextfreie Grammatiken und Parsebäume

Theoretische Grundlagen der Informatik

Definition. Gnutella. Gnutella. Kriterien für P2P-Netzwerke. Gnutella = +

Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter

Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]

Komplexe Softwaresysteme 2 - SS Dominik Korner

3 Quellencodierung. 3.1 Einleitung

Seminar Analysis Konvexe Funktionen und einige wichtige Ungleichungen

Laufzeit und Komplexität

Numerische Verfahren und Grundlagen der Analysis

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Das Briefträgerproblem

NP-Vollständigkeit. Krautgartner Martin ( ) Markgraf Waldomir ( ) Rattensberger Martin ( ) Rieder Caroline ( )

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Tutorium Algorithmen & Datenstrukturen

3. Übung Algorithmen I

PROSEMINAR ONLINE ALGORITHMEN

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Kapitel 5: Dynamisches Programmieren Gliederung

Bäume und Wälder. Bäume und Wälder 1 / 37

Suchen und Sortieren

Datenstrukturen in Java

368 4 Algorithmen und Datenstrukturen

16. All Pairs Shortest Path (ASPS)

7 Die Determinante einer Matrix

Transkript:

Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 8 Amortisierte Laufzeitanalysen Version vom 6. Dezember 2016 1 / 40

Vorlesung 6. Dezember 2016 2 / 40

Amortisierte Laufzeitanalysen Bestimme die maximalen durchschnittlichen (amortisierten) Kosten pro Operation für eine beliebige Folge von Operationen! (Amortisation := Prozess, in dem anfängliche Aufwendungen für ein Objekt durch dadurch entstehende Erträge gedeckt werden.) Das Bankkonto-Paradigma: Betrachte eine Folge von m Operationen. Wir ordnen jedem Bearbeitungszustand einen nichtnegativen Kontostand und jeder Operation amortisierte Kosten zu. Sei Φ i der Kontostand nach der Ausführung der i-ten Operation. Dann sind die amortisierten Kosten a i der i-ten Operation die tatsächlichen Kosten t i plus die Differenz der Kontostände: a i = t i + Φ i Φ i 1 3 / 40

Amortisierte Laufzeitanalysen Die gesamten amortisierten Kosten sind: m i=1 a i = a 1 + a 2 + a 3 + + a m = t 1 + Φ 1 Φ 0 + t 2 + Φ 2 Φ 1 + t 3 + Φ 3 Φ 2 = +. + t m + Φ m Φ m 1 m i=1 t i + Φ m Φ 0 also m m a i = t i + Φ m Φ 0 i=1 i=1 4 / 40

Amortisierte Laufzeitanalysen Φ 0 ist der Anfangskontostand und Φ m der Endkontostand. Ist Φ 0 Φ m, so ist der gesamte zur Ausführung der m Operationen benötigte amortisierte Aufwand m i=1 a i eine obere Schranke für den tatsächlichen Aufwand. m t i = i=1 m a i (Φ m Φ 0 ) i=1 m i=1 a i 5 / 40

Selbstanordnende Listen Wir betrachten eine Liste mit n Elementen, auf der wir eine Folge s = s 1,..., s m von m Zugriffsoperationen ausführen. Sei A ein beliebiger Algorithmus zur Selbstanordnung der Elemente, der das Element zuerst sucht und es dann durch Vertauschungen einige Positionen in Richtung Anfang oder Ende der Liste bewegt. Der Zugriff auf das Element auf Position k soll genau k Einheiten kosten. Eine Vertauschung in Richtung Listenanfang soll kostenfrei sein. Eine Vertauschung in Richtung Listenende soll genau eine Einheit kosten. 6 / 40

Selbstanordnende Listen Sei C A (s i ) die Schrittzahl zur Ausführung der Zugriffsoperation s i, 1 i m, und C A (s) die gesamte Schrittzahl zur Ausführung aller Zugriffsoperationen der Folge s. Sei F A (s i ) bzw. F A (s) die Anzahl der kostenfreien Vertauschungen und X A (s i ) bzw. X A (s) die Anzahl kostenbehafteten Vertauschungen. Unsere Algorithmen MF (Move-to-Front), T (Transpose) und FC (Frequently-Count) führen keine kostenbehafteten Vertauschungen durch. Somit gilt X MF (s) = X T (s) = X FC (s) = 0 7 / 40

Selbstanordnende Listen Das Element auf Position k kann maximal mit allen (k 1) vorangehenden Elementen kostenfrei vertauschen werden. Für jede Operation ist also die Anzahl der kostenfreien Vertauschungen höchstens so groß wie die Kosten der Operation minus 1. Daher gilt für jede Strategie A (mit m Operationen) F A (s) = F A (s 1 ) + F A (s m ) C A (s 1 ) 1 + C A (s 2 ) 1. + C A (s m ) 1 = C A (s) m also F A (s) C A (s) m. 8 / 40

Selbstanordnende Listen Satz Für jeden Algorithmus A der obigen Art und für jede Folge s von m Zugriffsoperationen gilt: C MF (s) 2 C A (s) + X A (s) F A (s) m Dieser Satz besagt grob (falls die Anzahl der kostenbehafteten Vertauschungen nicht größer ist als die der kostenfreien Vertauschungen +m), dass die MF-Regel höchstens doppelt so schlecht ist, wie jede andere Regel zur Selbstanordnung von Listen. 9 / 40

Selbstanordnende Listen Beweis. Für zwei Listen L 1, L 2, die die selben Elemente in möglicherweise unterschiedlicher Anordnung enthalten, sei inv(l 1, L 2 ) die Anzahl der Inversionen von Elementen in L 2 bzgl. L 1, d.h., inv(l 1, L 2 ) ist die Anzahl der Elementpaare x i, x j die deren Anordnung in L 2 eine andere ist als in L 1. Beispiel: L 1 : 4, 3, 5, 1, 7, 2, 6 L 2 : 3, 6, 2, 5, 1, 4, 7 inv(l 1, L 2 ) = 12 In L 2 steht 3 vor 4, 6 vor 2, 6 vor 5, 6 vor 1, 6 vor 4, 6 vor 7, 2 vor 5, 2 vor 1, 2 vor 4, 2 vor 7, 5 vor 4 und 1 vor 4. Diese Elementpaare stehen jedoch in L 1 in umgekehrter Reihenfolge. 10 / 40

Selbstanordnende Listen Beweis Fortsetzung. Sei L A,i die Liste, die Algorithmus A nach dem i-ten Zugriff hinterlässt und L MF,i die Liste, die die MF-Regel nach dem i-ten Zugriff hinterlässt. Der Kontostand nach dem i-ten Zugriff ist definiert durch inv(l A,i, L MF,i ). Der initiale Kontostand ist inv(l A,0, L MF,0 ) = 0, da beide Algorithmen mit der selben Liste beginnen. Der Kontostand ist immer 0. 11 / 40

Selbstanordnende Listen Beweis Fortsetzung. L A,i 1 s i x i x i k i s i L MF,i 1 Betrachte nun den Zugriff auf das Element s i (den i-ten Zugriff). Sei k i die Position, an der das Element s i in L MF,i 1 steht. Sei x i die Anzahl der Elemente, die in L MF,i 1 vor s i, aber in L A,i 1 hinter s i stehen. Jedes dieser x i Elemente ist mit s i eine Inversion. 12 / 40

Selbstanordnende Listen Beweis Fortsetzung. L A,i 1 s i x i x i k i s i L MF,i 1 Nun gilt inv(l A,i 1, L MF,i ) = inv(l A,i 1, L MF,i 1 ) x i + (k i 1 x i ), da durch das Vorziehen von s i in L MF,i 1 insgesamt x i Inversionen verschwinden und k i (1 + x i ) Inversionen entstehen. k i (1 + x i ) ist die Anzahl der übrigen Elemente in L MF,i 1 vor dem Element s i. 13 / 40

Selbstanordnende Listen Beweis Fortsetzung. L A,i 1 s i x i x i k i s i L MF,i 1 Jedes anschließende Vorziehen von s i in L A,i 1 mit Algorithmus A verkleinert die Anzahl der Inversionen. Jedes anschließende Vertauschen von s i in L A,i 1 zum Listenende mit Algorithmus A erhöht die Anzahl der Inversionen. 14 / 40

Selbstanordnende Listen Beweis Fortsetzung. Somit gilt inv(l A,i, L MF,i ) = inv(l A,i 1, L MF,i 1 ) x i +(k i 1 x i ) F A (s i )+X A (s i ) Da die tatsächlichen Kosten für den Zugriff auf s i mit der MF-Regel k i sind, erhält man für die amortisierten Kosten a i der i-ten Operation a i = k i + inv(l A,i, L MF,i ) inv(l A,i 1, L MF,i 1 ) = k i x i + (k i 1 x i ) F A (s i ) + X A (s i ) = 2(k i x i ) 1 F A (s i ) + X A (s i ) 15 / 40

Selbstanordnende Listen Beweis Fortsetzung. Da die tatsächlichen Kosten für den Zugriff auf s i in L A,i 1 mit Algorithmus A, C A (s i ), mindestens k i x i sind (k i x i 1 Elemente stehen in beiden Listen vor dem Element s i, also auch in der Liste L A,i 1 vor s i ), folgt a i 2C A (s i ) + X A (s i ) F A (s i ) 1 m 2C A (s) + X A (s) F A (s) m i=1 a i Da die Summe der amortisierten Kosten eine obere Schranke für die Summe der tatsächlichen Kosten sind, folgt die Aussage des Satzes. 16 / 40

Splay-Bäume Bei Splay-Bäumen werden alle drei Operationen (Suchen, Einfügen, Entfernen) auf die Splay-Operation zurückgeführt. Wir messen die Kosten einer Splay-Operation durch die Anzahl der ausgeführten Rotationen (plus 1, falls keine Operation ausgeführt wird). Jede zig-operation zählt eine Rotation und jede zig-zig- und zig-zag-operation zählt zwei Rotationen. Wir ordnen jedem Splay-Baum, der durch eine Folge von Operationen erzeugt wurde, einen Kontostand zu. Manchmal werden viele, ein anderes Mal werden wenige Rotationen ausgeführt. Führen wir eine billige Operation (mit wenigen Rotationen) durch, so sparen wir etwas, was wir dem Konto gutschreiben. 17 / 40

Splay-Bäume Führen wir eine teure Operation (mit vielen Rotationen) durch, so können wir einen erforderlichen Mehraufwand dem Konto entnehmen, falls das Konto ein Guthaben enthält. Für einen Knoten p sei s(p) die Anzahl aller inneren Knoten (Schlüssel) im Teilbaum mit Wurzel p. Sei r(p) der Rang von p, definiert durch r(p) = log(s(p)). Für einen Baum T mit Wurzel p und für einen in p gespeicherten Schlüssel x seien r(t ) und r(x) definiert als r(p). Der Kontostand Φ(T ) eines Suchbaumes T sei die Summe aller Ränge der inneren Knoten von T. 18 / 40

Splay-Bäume Lemma Der amortisierte Aufwand der Operation splay(t, x) ist höchstens 3 (r(t ) r(x)) + 1. Beweis. Ist x in der Wurzel von T gespeichert, so wird nur auf x zugegriffen und keine weitere Operation ausgeführt. Der tatsächliche Aufwand (= 1) stimmt mit dem amortisierten Aufwand überein und das Lemma gilt. Angenommen es wird wenigstens eine Rotation durchgeführt. Für jede bei der Ausführung von splay(t, x) durchgeführte Rotation, die einen Knoten p betrifft, betrachten wir die Größe s(p) und den Rang r(p) = log(s(p)) von p unmittelbar vor und die Größe s (p) und den Rang r (p) = log(s (p)) von p unmittelbar nach Ausführung der Rotation. 19 / 40

Splay-Bäume Beweis Fortsetzung. Wir werden zeigen, dass jede zig-zig- und jede zig-zag-operation auf p mit amortisiertem Aufwand 3(r (p) r(p)) und jede zig-operation mit amortisiertem Aufwand 3(r (p) r(p)) + 1 ausführbar ist. Angenommen obige Aussage wäre bereits gezeigt. Sei r (i) (x) der Rang von x nach Ausführung der i-ten von insgesamt k zig-zig-, zig-zag- oder zig-operationen. (Nur die letzte Operation kann eine zig-operation sein.) Dann ergibt sich als amortisierter Aufwand von splay(t, x) 3(r (1) (x) r(x)) + 3(r (2) (x) r (1) (x)). + 3(r (k) (x) r (k 1) (x)) + 1 = 3(r (k) (x) r(x)) + 1 20 / 40

Splay-Bäume Beweis Fortsetzung. Da x durch die k Operationen zur Wurzel gewandert ist, gilt r (k) (x) = r(t ) und damit das Lemma. Was wir noch beweisen müssen: Jede zig-zig- und zig-zag-operation auf p ist mit amortisiertem Aufwand 3(r (p) r(p)) und jede zig-operation mit amortisiertem Aufwand ausführbar. 3(r (p) r(p)) + 1 21 / 40

Splay-Bäume Beweis Fortsetzung. Fall 1: (zig-operation) q p p q 3 1 1 2 2 3 Dann ist q = ϕ(p) die Wurzel. Es wird eine Rotation ausgeführt. Die tatsächlichen Kosten sind 1. Es können höchstens die Ränge von p und q geändert worden sein. 22 / 40

Splay-Bäume Beweis Fortsetzung. Die amortisierten Kosten der zig-operation sind daher: a zig = 1 + Φ (T ) Φ(T ) = 1 + (r (p) + r (q) + ) (r(p) + r(q) + ) = 1 + (r (p) + r (q)) (r(p) + r(q)) = 1 + r (q) r(p), weil r (p) = r(q) 1 + r (p) r(p), weil r (p) r (q) 1 + 3(r (p) r(p)), weil r (p) r(p) 23 / 40

Splay-Bäume Beweis Fortsetzung. Für die nächsten beiden Fälle formulieren wir folgende Hilfsaussage: Sind a und b positive Zahlen und gilt a + b c, so folgt log(a) + log(b) 2 log(c) 2 Beweis der Hilfsaussage: Das geometrische Mittel zweier positiver Zahlen ist niemals größer als das arithmetische Mittel (Analysis): ab (a + b)/2 ab c/2 ab (c/2) 2 log(ab) log((c/2) 2 ) log(a) + log(b) 2 log(c/2) log(a) + log(b) 2 log(c) 2 log(2) log(a) + log(b) 2 log(c) 2 24 / 40

Splay-Bäume Beweis Fortsetzung. Fall 2: (zig-zag-operation) r r q p 1 p 1 q 4 2 2 3 3 4 p r q 1 2 3 4 Sei q = ϕ(p) und r = ϕ(ϕ(p)). Die Operation hat tatsächliche Kosten von 2, weil zwei Rotationen durchgeführt werden. 25 / 40

Splay-Bäume Beweis Fortsetzung. Fall 2: (zig-zag-operation) r r q p 1 p 1 q 4 2 2 3 3 4 p r q 1 2 3 4 Es können sich höchstens die Ränge von p, q und r ändern, ferner ist r (p) = r(r). Also gilt für die amortisierten Kosten: 26 / 40

Splay-Bäume Beweis Fortsetzung. a zig zag = 2 + Φ (T ) Φ(T ) = 2 + (r (p) + r (q) + r (r) + ) (r(p) + r(q) + r(r) ) = 2 + (r (p) + r (q) + r (r)) (r(p) + r(q) + r(r)) = 2 + r (q) + r (r) r(p) r(q) Weil p vor Ausführung der zig-zag-operation Sohn von q war, gilt r(q) r(p) und somit a zig zag 2 + r (q) + r (r) 2r(p) 27 / 40

Splay-Bäume Beweis Fortsetzung. Ferner gilt s (q) + s (r) s (p). Aus der Definition des Ranges und obiger Hilfsaussage folgt und somit r (q) + r (r) = log(s (q)) + log(s (r)) 2 log(s (p)) 2 = 2r (p) 2, a zig zag 2(r (p) r(p)) 3(r (p) r(p)), weil r (p) r(p) 28 / 40

Splay-Bäume Beweis Fortsetzung. Fall 3: (zig-zig-operation) r q q p r p 4 3 1 2 3 4 1 2 p q 1 r 2 3 4 Sei wieder q = ϕ(p) und r = ϕ(ϕ(p)). Die Operation hat tatsächliche Kosten von 2, weil zwei Rotationen durchgeführt werden. 29 / 40

Splay-Bäume Beweis Fortsetzung. Fall 3: (zig-zig-operation) r q q p r p 4 3 1 2 3 4 1 2 p q 1 r 2 3 4 Also gilt wie im vorherigen Fall r (p) = r(r) und für die amortisierten Kosten: 30 / 40

Splay-Bäume Beweis Fortsetzung. a zig zig = 2 + Φ (T ) Φ(T ) = 2 + (r (p) + r (q) + r (r) + ) (r(p) + r(q) + r(r) ) = 2 + (r (p) + r (q) + r (r)) (r(p) + r(q) + r(r)) = 2 + r (q) + r (r) r(p) r(q) Da vor Ausführung der zig-zig-operation p Sohn von q und nachher q Sohn von p ist, folgt r(p) r(q) und r (p) r (q), und somit a zig zig 2 + r (p) + r (r) 2r(p) Diese Summe ist genau dann kleiner oder gleich 3(r (p) r(p)), wenn r(p) + r (r) 2r (p) 2. 31 / 40

Splay-Bäume Beweis Fortsetzung. Aus der zig-zig-operation folgt, dass s(p) + s (r) s (p). Mit obiger Hilfsaussage und der Definition der Ränge erhält man die obige Ungleichung. Damit ist das Lemma bewiesen. Bemerkung: Nur im Fall 3 (der zig-zig-operation) ist die Abschätzung der amortisierten Kosten scharf. 32 / 40

Splay-Bäume Satz Das Ausführen einer beliebigen Folge von m Such-, Einfüge, Entferne-Operationen, in der höchstens n mal Einfügen vorkommt und die mit dem anfangs leeren Splay-Baum beginnt, benötigt höchstens O(m log(n)) Schritte. 33 / 40

Splay-Bäume Beweis. Das Lemma, das wir gerade bewiesen haben, lautete: Der amortisierte Aufwand der Operation splay(t, x) ist höchstens 3 (r(t ) r(x)) + 1. Für jeden im Verlauf der Operationsfolge erzeugten Baum gilt s(t ) n, also r(t ) log(n). Der amortisierte Aufwand einer einzelnen Splay-Operation splay(t, x) ist also nach dem Lemma a Splay 3r(T ) + 1 3 log(n) + 1 Jede Operation erzeugt ein konstantes Vielfaches der Kosten der Splay-Operation, nach m Operationen ist also die amortisierte Laufzeit (und damit auch die Laufzeit selbst) aus O(m log(n) + m) = O(m log(n)) 34 / 40

Fibonacci-Heaps Definition der Kontostandsfunktion Φ(): Der Kontostand Φ(H) für einen Fibonacci-Heap H sei die Anzahl der Bäume in der Wurzelliste plus zwei mal die Anzahl der markierten Knoten, die nicht in der Wurzelliste auftreten. (Für mehrere Fibonacci-Heaps sei der Gesamtkontostand die Summe der Kontostände der einzelnen Fibonacci-Heaps.) Φ(H) = 0, falls H noch keine Elemente speichert. Φ(H) ist niemals negativ. 35 / 40

Fibonacci-Heaps Die Operation insert(h, k): Die tatsächlichen Kosten sind aus O(1), der Kontostand erhöht sich um 1, die amortisierten Kosten sind aus O(1). Die Operation access-min(h): Die tatsächlichen Kosten sind aus O(1), der Kontostand bleibt unverändert, die amortisierten Kosten sind aus O(1). Die Operation merge(h 1, H 2 ): Die tatsächlichen Kosten sind aus O(1), der Gesamtkontostand bleibt unverändert, die amortisierten Kosten sind aus O(1). 36 / 40

Fibonacci-Heaps Die Operation delete-min(h) Die Laufzeit von delete-min(h) ist von der Anzahl der Verschmelze-Operationen und somit von der Anzahl der Knoten in der Wurzelliste abhängig. Das Verschmelzen zweier Bäume vom gleichen Rang kostet eine Einheit, welche durch das Verschwinden eines Baumes aus der Wurzelliste ausgeglichen wird. Die Anzahl der markierten Knoten, die nicht in der Wurzelliste auftreten, bleibt entweder unverändert oder nimmt ab (falls markierte Knoten in die Wurzelliste aufgenommen werden). Sei w(h) die Anzahl der Bäume in der Wurzelliste von H vor der Ausführung von delete-min(h). Sei x(h) die Anzahl der markierten Knoten in H, die nicht in der Wurzelliste auftreten. Sei rang(k) der Rang des Minimalelementes k. 37 / 40

Fibonacci-Heaps Die Wurzelliste wird um maximal rang(k) O(log(n)) Knoten erweitert und einmal durchlaufen. Die tatsächlichen Kosten der delete-min(h) Operation betragen somit rang(k) + w(h). Sei H der entstehende Heap. Dann gilt w(h ) O(log(n)) und x(h ) x(h). Also ändert sich der Kontostand von w(h) + 2x(H) auf w(h ) + 2x(H ). amortisierte Gesamtlaufzeit: rang(k) + w(h) + (w(h ) + 2x(H )) (w(h) + 2x(H)) O(log(n)) 38 / 40

Fibonacci-Heaps Die Operation decrease(h, k, y): Die Laufzeit von decrease(h, k, y) ist von der Anzahl der indirekten Abtrennungen (der markierten Knoten) abhängig. Jede Abtrennung eines Knotens verursacht eine Kosteneinheit. 1 Wird ein Knoten von seinem unmarkierten Vater abgetrennt, dann kostet dies eine Einheit. Durch die Aufnahme in die Wurzelliste und die Markierung des Vaters nimmt der Kontostand um 3 Einheiten zu. Dies kommt höchstens ein Mal vor! Tatsächliche Kosten plus Kontostandsdifferenz = 4. 2 Wird ein Knoten von seinem markierten Vater abgetrennt, dann kostet dies ebenfalls eine Einheit. Die Anzahl der Knoten in der Wurzelliste erhöht sich um 1. Die Anzahl der markierten Knoten erniedrigt sich um 1. Tatsächliche Kosten plus Kontostandsdifferenz = 0. Insgesamt: amortisierte Gesamtlaufzeit: O(1) 39 / 40

Fibonacci-Heaps Amortisierte Laufzeitabschätzung für delete(h, k) delete(h, k) = decrease(h, k, y) und delete-min(h) amortisierte Gesamtlaufzeit: O(log(n)) Satz Führt man, beginnend mit dem anfangs leeren Fibonacci-Heap H, eine beliebige Folge s von m Operationen aus, dann ist die dafür insgesamt benötigte Zeit beschränkt durch die gesamte amortisierte Zeit, wobei 1 die amortisierte Zeit einer einzelnen delete-min(h)-operation aus O(log(n)) ist, 2 die amortisierte Zeit einer einzelnen delete(h, k)-operation aus O(log(n)) ist und 3 die amortisierten Zeiten aller anderen Operationen aus O(1) sind. Bitte merken! 40 / 40