Christian Scheideler SS 2009

Slides:



Advertisements
Ähnliche Präsentationen
Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Advertisements

Christian Scheideler SS 2009
Christian Scheideler SS 2009
Christian Scheideler SS 2009
Methoden des Algorithmenentwurfs Kapitel 1.4:Approximations-schemata
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Eine dynamische Menge, die diese Operationen unterstützt,
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Claudio Moraga; Gisbert Dittrich
Kapitel 6: Klassifizierung von Sortiertechniken
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
5. Sortier-Algorithmen Vorbemerkungen:
Algorithmentheorie 04 –Hashing
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (11-1 –Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Fibonacci-Heaps – Analyse) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Algorithmentheorie 7 – Bin Packing
Union-Find-Strukturen
WS Algorithmentheorie 15 – Fibonacci-Heaps Tobias Lauer.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Kapitel 5 Stetigkeit.
Kapitel 6 Differenzierbarkeit. Kapitel 6: Differenzierbarkeit © Beutelspacher Juni 2005 Seite 2 Inhalt 6.1 Die Definition 6.2 Die Eigenschaften 6.3 Extremwerte.
Externe Datenstruktur lineare Liste
Minimum Spanning Tree: MST
Kapitel 2: Datenstrukturen
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Effiziente Algorithmen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Splay Trees Von Projdakov Benjamin.
Effiziente Algorithmen
Geoinformation II Vorlesung 2 SS 2001 AVL-Bäume.
Diskrete Mathematik II
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/ /23.1.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Verteilte Algorithmen und Datenstrukturen Kapitel 4: Caching Christian Scheideler Institut für Informatik Universität Paderborn.
Christian Scheideler Institut für Informatik Universität Paderborn
Analyse der Laufzeit von Algorithmen
Grundlagen der Algorithmen und Datenstrukturen Kapitel
Binärbäume.
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
 Präsentation transkript:

Christian Scheideler SS 2009 Methoden des Algorithmenentwurfs Kapitel 2.1: Deterministische Online Algorithmen Christian Scheideler SS 2009 25.03.2017 Kapitel 2

Übersicht Beispiele Notation Paging Scheduling Selbstorganisierende Suchstrukturen 25.03.2017 Kapitel 2

Beipiele Ski-Problem: Ein Paar Ski kann für 500 € gekauft oder für 50 € geliehen werden. Wie lange soll geliehen werden, bevor man sich für den Kauf entscheidet, wenn nicht bekannt ist, wie lange man noch Ski fährt? Optimale Strategie (falls Zukunft nicht bekannt): So lange Ski leihen, bis die Leihkosten gleich den Kaufkosten sind. 25.03.2017 Kapitel 2

Beispiele Geldwechselproblem: Ein Geldbetrag (z.B. 10.000 €) soll in eine andere Währung (z.B. $) gewechselt werden. Zu welchem Zeitpunkt soll getauscht werden, wenn nicht bekannt ist, wie sich der Wechselkurs entwickelt? 25.03.2017 Kapitel 2

Beispiele Paging/Caching: Es soll ein zweistufiges Speichersystem verwaltet werden, das aus einem schnellen Speicher mit kleiner Kapazität und einem langsamen Speicher mit großer Kapazität besteht. Dabei müssen Anfragen auf Speicherseiten bedient werden. Welche Seiten hält man im Cache, um die Anzahl der Cache-Misses zu minimieren? Cache Hauptspeicher 25.03.2017 Kapitel 2

Beispiele Verteilte Systeme: Daten sollen in einem Netzwerk dynamisch so platziert werden, dass möglichst wenige Daten übertragen werden müssen, um die Anfragen zu bedienen. 25.03.2017 Kapitel 2

Beispiele Scheduling: Jobs mit im Voraus bekannter Bearbeitungsdauer treffen hintereinander ein und sollen von m Maschinen bearbeitet werden. Die Jobs müssen dabei unmittelbar einer bestimmten Maschine zugeordnet werden. Hier gibt es verschiedene Optimierungsziele, z.B. die Minimierung der Gesamtbearbeitungszeit. 25.03.2017 Kapitel 2

Notation Online Problem: Statt einer vollständig gegebenen Eingabe I haben wir jetzt eine Eingabesequenz s=(s(1), s(2),…, s(t)) , in der die Eingabeteile s(i) erst nach und nach an den Online Algorithmus übergeben werden. Nach jedem s(i) muss der Online Algorithmus eine Entscheidung treffen, bevor er s(i+1)…s(t) gesehen hat. Diese Entscheidung kann (im Standard-Online-Modell) nicht wieder zurück-genommen werden (wie beim Schach). 25.03.2017 Kapitel 2

Notation 1.1 Definition: Sei P ein Optimierungs-problem und A ein Online Algorithmus für P. Für eine beliebige Eingabesequenz s=(s(1), s(2),…, s(t)) seien A(s) die Kosten von A für s. A heißt c-kompetitiv, wenn es einen von t unabhängigen Parameter a gibt, so dass für alle Eingabesequenzen s gilt: A(s)  cOPT(s) + a 25.03.2017 Kapitel 2

Übersicht Beispiele Notation Paging Scheduling Selbstorganisierende Suchstrukturen 25.03.2017 Kapitel 2

Paging Problem: Eine online eintreffende Folge von Seitenanfragen s=(x1,…,xn) muss durch ein zweistufiges Speichersystem (Cache und Hauptspeicher) bearbeitet werden. Ist eine Seite nicht im Cache vorhanden (Cache-Miss), muss sie vom Hauptspeicher dorthin geladen werden (und verdrängt bei vollem Cache eine dort vorhandene Seite). Ziel: minimiere die Anzahl der Cache-Misses Offline Fall: alle Seitenanfragen im vornherein gegeben. Offline-Algorithmus: MIN Entferne stets diejenige Seite aus dem Cache, deren nächste Anfrage am weitesten in der Zukunft liegt. 25.03.2017 Kapitel 2

Paging 1.2 Satz: MIN ist ein optimaler Offline-Algorith-mus, d.h. er erzeugt für jede Anfragesequenz s die minimale Anzahl an Seitenfehlern. Beweis: s: beliebige Anfragefolge A: optimaler Algorithmus auf s Wir bauen A so um, dass er wie MIN arbeitet. Die Anzahl der Seitenersetzungen wird dabei nicht erhöht. 25.03.2017 Kapitel 2

Paging Beweis (Fortsetzung): Behauptung: angenommen, A und MIN arbeiten auf den ersten i-1 Anfragen identisch, aber auf der i-ten Anfrage verschieden. Dann kann A in Algorithmus A´ transformiert werden, so dass gilt: A´ und MIN arbeiten auf der ersten i Anfragen identisch A´(s)  A(s) Ist diese Behauptung gezeigt, dann können wir A schrittweise in MIN umformen, ohne die Kosten zu erhöhen. 25.03.2017 Kapitel 2

Paging Beweis (Fortsetzung): Wir beweisen nun die Behauptung Die i-te Anfrage referenziere Seite x. A entferne dafür die Seite u aus dem Cache und MIN die Seite v. Algorithmus A´: arbeitet auf den ersten i-1 Anfragen wie A und entfernt bei Anfrage i die Seite v. A´simuliert dann A, bis eines der folgenden Ereignisse eintrifft: a) Ersetzt A die Seite v, dann ersetzt A´ zum gleichen Zeitpunkt die Seite u. b) u wird angefragt und A ersetzt z. In diesem Fall ersetzt A´ die Seite z durch v. v kann nicht vor u angefragt werden, da sonst die MIN-Regel verletzt wird. In beiden Fällen sind A und A´ dann wieder in identischen Konfigurationen und A´ arbeitet wie A weiter. Die Anzahl der Seitenersetzungen hat sich dabei nicht erhöht. 25.03.2017 Kapitel 2

Paging Leider ist MIN ein offline Algorithmus (d.h. er muss die gesamte Anfragefolge s im vornherein kennen). Ein oft verwendeter Online Algorithmus ist der folgende: Algorithmus LRU (Least-Recently-Used): Entferne stets die Seite, die am längsten nicht mehr benutzt wurde. Im worst case ist LRU allerdings recht schlecht, wie die folgenden beiden Resultate zeigen. 25.03.2017 Kapitel 2

Paging 1.3 Satz: Für einen Cache der Größe k ist LRU k-kompetitiv. Beweis: Wir betrachten eine beliebige Anfragefolge s. LRU und OPT starten mit denselben Seiten im Cache. Wir zerlegen s in Phasen P(1), P(2),…, so dass LRU in jedem P(i) mit i2 jeweils exakt k Seitenfehler hat und in der Phase P(1) höchstens einen Seitenfehler. Können wir zeigen, dass OPT in jeder dieser Phasen mindestens einen Seitenfehler hat, so folgt der Satz. Für Phase P(1) ist das sicherlich wahr, da LRU und OPT anfangs dieselben Seiten haben. 25.03.2017 Kapitel 2

Paging Beweis (Fortsetzung): Seien p1,…,pk die Fehlerstellen von LRU in Phase P(i) mit i2 und q die letzte vorangegangene Anfrage. Wir unterscheiden die folgenden Fälle: ij pipj und i piq: Beim Phasenwechsel hat OPT q im Cache und kann höchstens k-1 der Seiten p1,…,pk im Cache haben. Also tritt bei OPT mindestens ein Seitenfehler auf. ij pi=pj: Zwischen den Anfragen pi und pj müssen mindestens k andere verschiedene Seiten angefragt worden sein, sonst hätte LRU diese Seite ja nicht aus dem Cache entfernt. Also gibt es k+1 verschiedene Seiten in dieser Phase und OPT muss mindestens einen Seitenfehler haben. ij pipj, aber i pi=q: Analog zur Argumentation bei Punkt 2 müssten zwischen q und pi mindestens k andere verschiedene Seiten angefragt worden sein. 25.03.2017 Kapitel 2

Paging 1.4 Satz: Sei A ein deterministischer online Paging-Algorithmus. Ist A c-kompetitiv, dann ist ck. Beweis: Wir geben eine Folge an, die k+1 verschiedene Seiten p1,…,pk+1 verwendet. Anfangs seien die Seiten p1,…,pk im Cache. Der Gegner fragt nun stets diejenige Seite an, die bei A nicht im Cache vorhanden ist. Bei A tritt also bei jeder Anfrage ein Seitenfehler auf, d.h. A(s)=|s|. OPT muss höchstens alle k Anfragen eine Seite ersetzen, da nur k+1 Seiten vorhanden sind, und also nach einem Seitenfehler auf jeden Fall die nächsten k Seiten im Speicher sind. Damit ist c=A(s)/OPT(s)  |s|/(|s|/k) = k. 25.03.2017 Kapitel 2

Paging Bemerkung: Auch wenn LRU im worst case eine schlechte Kompetitivität hat, so gibt es dennoch keinen besseren deterministischen Algorithmus. In der Tat gibt es sogar deterministische Algorithmen mit unbeschränkter Kompetitivität: Algorithmus MRU (Most-Recently-Used): Entferne diejenige Seite, die zuletzt gefragt wurde Betrachte die Sequenz s=p1,…, pk, pk+1, pk, pk+1,… Bei MRU sind die Seitenfehler unbeschränkt während OPT nur einen Seitenfehler hat. 25.03.2017 Kapitel 2

Übersicht Beispiele Notation Paging Scheduling Selbstorganisierende Suchstrukturen 25.03.2017 Kapitel 2

Scheduling Problem: Eine online eintreffende Folge von Jobs s=(J1,…,Jn) soll auf m identischen Maschinen verteilt werden. Jeder Job Ji sei spezifiziert durch eine Ausgabezeit tiIN und Bearbeitungszeit piIN, wobei ti<ti+1 für alle i. Der Online Algorithmus muss jeden Job Ji zum Zeitpunkt ti einer Maschine zuweisen. Ziel: minimiere den Makespan, d.h. die Zeit bis der letzte Job bearbeitet ist. Algorithmus: Greedy-Scheduling Weise jeden Job der Maschine zu, die zurzeit am wenigsten ausgelastet ist. 25.03.2017 Kapitel 2

Scheduling 1.5 Satz: Greedy ist 3-kompetitiv. Beweis: Sei t der letzte Zeitpunkt, zu dem eine Maschine unbeschäftigt ist, bevor sie bis zum Ende beschäftigt ist, und sei M diese Maschine. Für alle Jobs, die vor dem Zeitpunkt t generiert wurden, gilt, dass diese vor t mit der Bearbeitung begonnen haben, denn ansonsten hätte Greedy diese M zugewiesen. M t 25.03.2017 Kapitel 2

Scheduling J´ Beweis (Fortsetzung): Sei J die Menge der Jobs, die nach t generiert werden. Ergänzen wir J um die nach t noch abzuarbei-tenden Reste der Jobs, die vor t generiert worden sind, auf J´, so ergibt sich für diese Jobmenge ein Greedy Schedule wie für den Greedy Approximationsalgorithmus. J´ M t 25.03.2017 Kapitel 2

Scheduling Beweis (Fortsetzung): J bestehe aus n Jobs mit Aufwand p1,…, pn Betrache Maschine i mit höchster Last Li. Sei j der letzte Job in Maschine i. Da Job j Maschine i zugeordnet wurde, hatte i vorher die kleinste Last. Es gilt also Li – pj ≤ Lk für alle k. vor j nach j j t Li - tj Li 25.03.2017 Kapitel 2

Scheduling Beweis (Forsetzung): Es gilt: Li-pj ≤ Lk für alle k{1,…,m} und damit Lk  Li – pmax. Wir wissen: Sj=1m Lj  Sj=1n pj+(m-1) pmax Also ist Li+(m-1)(Li – 2pmax)  Sj=1n pj Daraus folgt: mLi ≤ Sj=1n pj +(m-1)2pmax  Li ≤ (1/m) Sj=1n pj +2((m-1)/m)pmax ≤ OPT(s) + 2(1-1/m)OPT(s) ≤ 3 OPT(s) Alte Jobs vor t 25.03.2017 Kapitel 2

Scheduling Genauere Analyse: Greedy ist 2-1/m-kompetitiv. Ist das scharf? Ja! Beispiel: m Maschinen, m(m-1) Jobs der Länge L>>m(m-1), (so dass Zeit für Genierung der Jobs vernachlässigbar) ein Job der Länge mL m=10 Makespan ~ 19L 25.03.2017 Kapitel 2

Scheduling Genauere Analyse: Greedy ist 2-1/m-kompetitiv. Ist das scharf? Ja! Beispiel: m Maschinen, m(m-1) Jobs der Länge L>>m(m-1), (so dass Zeit für Genierung der Jobs vernachlässigbar) ein Job der Länge mL m=10 Optimaler Makespan ~ 10L 25.03.2017 Kapitel 2

Übersicht Beispiele Notation Paging Scheduling Selbstorganisierende Suchstrukturen 25.03.2017 Kapitel 2

Wörterbuch 8 4 11 20 18 3 25.03.2017 Kapitel 4

Wörterbuch insert(15) 8 4 11 20 18 15 3 25.03.2017 Kapitel 4

Wörterbuch delete(20) 8 4 11 20 18 15 3 25.03.2017 Kapitel 4

Wörterbuch lookup(8) ergibt 8 8 4 11 18 15 3 25.03.2017 Kapitel 4

Suchstruktur S: Menge von Elementen Jedes Element e identifiziert über key(e). Operationen: S.insert(e: Element): S:=S  {e} S.delete(k: Key): S:=S\{e}, wobei e das Element ist mit key(e)=k S.lookup(k: Key): gibt eS aus mit key(e)=k, falls es ein solches e gibt, und sonst  25.03.2017 Kapitel 2

Statische Suchstruktur 1. Speichere Elemente in sortiertem Feld. lookup: über binäre Suche ( O(log n) Zeit ) lookup(14) 1 3 5 10 14 19 28 31 58 60 82 85 89 94 98 25.03.2017 Kapitel 2

Binäre Suche Eingabe: Zahl x und ein sortiertes Feld A[1],…,A[n] Binäre Suche Algorithmus: l:=1; r:=n while l < r do m:=(r+l) div 2 if A[m] = x then return m if A[m] < x then l:=m+1 else r:=m return l 25.03.2017 Kapitel 2

Dynamische Suchstruktur insert und delete Operationen: Sortiertes Feld schwierig zu aktualisieren! Worst case: (n) Zeit 15 1 3 5 10 14 19 28 31 58 60 82 85 25.03.2017 Kapitel 2

Suchstruktur … 2. Sortierte Liste (mit -Element) Problem: insert, delete und lookup kosten im worst case (n) Zeit (z.B. ständig wird 19 angefragt) Besser: sortiere Elemente nach Zugriffshäufigkeit, aber Zugriffshäufigkeit nicht von vornherein bekannt. Was ist online möglich? 1 3 19  … 25.03.2017 Kapitel 2

Suchstruktur … 2. Sortierte Liste (mit -Element) Zentrale Frage: für welche insert, delete und lookup Operationen weichen wir für jede gegebene Operationsfolge s so wenig wie möglich ab von der Laufzeit eines optimalen Offline Algorithmus, der alle Anfragen zu Beginn an kennt und damit eine optimale Strategie für die Anordnung und Umordnung der Elemente in der Liste berechnen kann? 1 3 19  … 25.03.2017 Kapitel 2

Selbstorganisierende Liste Sei eine beliebige lookup-Anfragefolge s gegeben. Bei einem Zugriff auf ein Listenelement entstehen Kosten, die von der Position des Elements abhängen. Das angefragte Element kann nach seiner Anfrage an eine beliebige Position weiter vorne in der Liste bewegt werden (mit keinen Zusatzkosten). Außerdem ist es möglich, zwei benachbarte Elemente mit Kosten 1 zu vertauschen. Kosten 7 lookup(k) k k k 25.03.2017 Kapitel 2

Selbstorganisierende Liste Die folgenden Online Strategien bieten sich an: Move-to-Front (MTF): Das angefragte Element wird an den Kopf der Liste bewegt. Transpose: Das angefragte Element wird mit dem Vorgänger in der Liste vertauscht. Frequency-Count (FC): Verwalte für jedes Element der Liste einen Zähler, der mit Null initiailisiert wird. Bei jeder Anfrage wird der Zähler um eins erhöht. Die Liste wird nach jeder Anfrage gemäß nicht steigenden Zählerständen sortiert. Interessanterweise ist MTF die beste Strategie. 25.03.2017 Kapitel 2

Exkurs: Amortisierte Analyse S: Zustandsraum einer Datenstruktur s: beliebige Folge von Operationen Op1, Op2, Op3,…,Opn s0: Anfangszustand der Datenstruktur Zeitaufwand T(s) = i=1n TOpi(si-1) Op1 Op2 Op3 Opn s0 s1 s2 …. sn 25.03.2017 Kapitel 2

Exkurs: Amortisierte Analyse Zeitaufwand T(s) = i=1n TOpi(si-1) Eine Familie von Funktionen AX(s), eine pro Operation X, heißt Familie amortisier-ter Zeitschranken falls für jede Sequenz s von Operationen gilt T(s)  A(s) := c + i=1n AOpi(si-1) für eine Konstante c unabhängig von s 25.03.2017 Kapitel 2

Exkurs: Amortisierte Analyse 1.6 Satz: Sei S der Zustandsraum einer Datenstruktur, sei s0 der Anfangszustand und sei F:SIR+ eine nichtnegative Funktion. Für eine Operation X und einen Zustand s mit ss´ definiere AX(s) := (s´) - (s) + TX(s). Dann sind die Funktionen AX(s) eine Familie amortisierter Zeitschranken. X 25.03.2017 Kapitel 2

Exkurs: Amortisierte Analyse Zu zeigen: T(s)  c + i=1n AOpi(si-1) Beweis: i=1n AOpi(si-1) = i=1n [(si) - (si-1) + TOpi(si-1)] = T(s) + i=1n [(si) - (si-1)] = T(s) + (sn) - (s0)  T(s) = i=1n AOpi(si-1) + (s0) - (sn)  i=1n AOpi(si-1) + (s0) konstant 25.03.2017 Kapitel 2

Selbstorganisierende Liste 1.7 Satz: MTF ist 2-kompetitiv. Beweis: Wir zeigen mit amortisierter Analyse, dass A(s)2OPT(s) ist. Wir verwenden die Potentialfunktion F, die eine Konfiguration von A und OPT auf eine reelle Zahl abbildet, wobei für alle t F(t)0 und F(0)=0 gilt. Wir wollen zeigen, dass für alle Zeitpunkte t gilt: A(s(t))+F(t)-F(t-1)  cOPT(s(t)) Damit ist A c-kompetitiv, denn durch das Summieren über alle t ergibt sich: St=1m (A(s(t))+F(t)-F(t-1))  c St=1m OPT(s(t))  A(s)+F(m)-F(0)  cOPT(s)  A(s)  cOPT(s) - F(m)  cOPT(s) 25.03.2017 Kapitel 2

Selbstorganisierende Liste Beweis (Fortsetzung): Wir wählen als Potentialfunktion F die Anzahl der Inversionen in der Liste, wobei eine Inversion ein geordnetes Paar (x,y) von Listenelementen ist, so dass x vor y in OPT´s Liste ist und x hinter y in MTF´s Liste ist. MTF: 1 8 5 9 4 3 7 2 Inversionen: (1,2), (2,3), (2,4), (2,5), (2,7), (2,8), (2,9), (3,4), (3,8), (3,9), (4,7), (5,8), (7,9) OPT: 2 1 5 3 8 7 9 4 25.03.2017 Kapitel 2

Selbstorganisierende Liste Beweis (Fortsetzung): Sei s(t)=x. x befinde sich direkt nach k in OPTs Liste und direkt nach l in MTFs Liste. Außerdem verschiebe OPT das Listenelement x nach vorne, so dass es direkt nach dem Listenelement i eingeführt wird. OPT: i k x MTF: i l x 25.03.2017 Kapitel 2

Selbstorganisierende Liste Durch OPTs Verschieben von x nach vorne können höchstens k-i neue Inversionen entstehen. Durch MTFs Verschieben von x werden anschließend l-i Inversionen aufgehoben und höchstens i neue Inversionen erzeugt. Also gilt: MTF(s(t))+DF(t))  (l+1)+(k-i)+(i-(l-i)) = k+i+1  2k+1 < 2(k+1) = 2OPT(s(t)) 25.03.2017 Kapitel 2

Selbstorganisierende Liste Bemerkung: Satz 1.7 lässt sich für insert- und delete-Operationen erweitern, wenn diese wie folgt implementiert werden. Insert(e): Füge Element e vorne in die Liste ein. Delete(k): Lösche Element e mit key(e)=k aus der Liste raus. 25.03.2017 Kapitel 2

Selbstorganisierende Liste 1.8 Satz: Sei A ein deterministischer online Algorithmus für selbstorganisierende Listen. Ist A c-kompetitiv, dann ist c2. Beweis: Sei eine Liste mit n Elementen gegeben. Der Gegner erzeugt eine Anfragesequenz s, in der stets das letzte Element in A´s Liste angefragt wird. Für |s|=m ist A(s)=mn. 25.03.2017 Kapitel 2

Selbstorganisierende Liste Beweis (Fortsetzung): Wir betrachten die Offline-Strategie SL, die s mit einer statischen Liste beantwortet, in der die Elemente nach nicht-steigenden Häufigkeiten sortiert sind. Sei m ein Vielfaches von n. Der worst case für SL ist, dass jedes Element gleich häufig angefragt wird. Dann entstehen für i=1..n ja m/n-mal Kosten i. Also ist OPT(s)  Si=1n im/n + = (n+1)m/2 + n(n-1)/2 Daraus folgt, dass c = A(s)/OPT(s)  2n/(n+1) = 2-2/(n+1) n 2 Aufwand für Umsortieren m 25.03.2017 Kapitel 2

Selbstorganisierende Liste 1.9 Satz: Transpose ist für keine Konstante c c-kompetitiv. Beweis: Betrachte die Liste 1,…,n und die Anfragefolge s=(n,n-1,n,n-1,…,n,n-1) mit |s|=m. Dann entstehen für Transpose Kosten von Transpose(s)=mn. Mit MTF entstehen auf derselben Folge Kosten von MTF(s)=n+n+2(m-2) = 2n+2m-4. Für n>m ist also c = Transpose(s)/OPT(s)  Transpose(s)/MTF(s)  m/4 25.03.2017 Kapitel 2

Selbstorganisierende Liste 1.10 Satz: FC ist für keine Konstante c c-competitiv. Beweis: Übung. 25.03.2017 Kapitel 2

Suchstruktur … Selbstorganisierende Liste (mit -Element) Problem bleibt: insert, delete und lookup kosten im worst case (n) Zeit Einsicht: Wenn lookup effizient zu implementieren wäre, dann auch alle anderen Operationen 1 19 3  … 25.03.2017 Kapitel 2

Suchstruktur Idee: füge Navigationsstruktur hinzu, die lookup effizient macht Navigationsstruktur 1 3 19 1 … 25.03.2017 Kapitel 2

Binärer Suchbaum (ideal) lookup(14) 10 3 19 1 5 14 28 1 3 5 10 14 19 28 1 25.03.2017 Kapitel 2

Binärer Suchbaum Suchbaum-Regel: Damit lookup Operation einfach zu imple- mentieren. k Für alle Schlüssel k´ in T1 und k´´ in T2: k´ < k < k´´ T1 T2 25.03.2017 Kapitel 2

Lookup(k) Operation Für alle Schlüssel k´ in T1 Suchstrategie: Starte in Wurzel des Suchbaums Für jeden erreichten Knoten v: Falls key(v) > k, gehe zum linken Kind von v, sonst gehe zum rechten Kind Für alle Schlüssel k´ in T1 und k´´ in T2: k´ < k < k´´ T1 T2 25.03.2017 Kapitel 2

Binärer Suchbaum Formell: für einen Baumknoten v sei key(v) der Schlüssel in v d(v) die Anzahl Kinder von v Suchbaum-Regel: (s.o.) Grad-Regel: Alle Baumknoten haben zwei Kinder (sofern #Elemente >1) Schlüssel-Regel: Für jedes Element e in der Liste gibt es genau einen Baumknoten v mit key(v)=key(e). 25.03.2017 Kapitel 2

Lookup(10) 10 3 19 1 5 14 28 1 3 5 10 14 19 28 1 25.03.2017 Kapitel 2

Insert und Delete Operationen Strategie: insert(e): Erst lookup(key(e)) bis Element e´ in Liste erreicht. Falls key(e´)>key(e), füge e vor e´ ein und ein neues Suchbaumblatt für e und e´ mit key(e), so dass Suchbaum-Regel erfüllt. delete(k): Erst lookup(k) bis ein Element e in Liste erreicht. Falls key(e)=k, lösche e aus Liste und Vater v von e aus Suchbaum, und setze in dem Baumknoten w mit key(w)=k: key(w):=key(v) 25.03.2017 Kapitel 2

Insert(5) 10 1 14 28 1 10 14 28 1 25.03.2017 Kapitel 2

Insert(5) 10 1 14 5 28 1 5 10 14 28 1 25.03.2017 Kapitel 2

Insert(12) 10 1 14 5 28 1 5 10 14 28 1 25.03.2017 Kapitel 2

Insert(12) 10 1 14 5 12 28 1 5 10 12 14 28 1 25.03.2017 Kapitel 2

Delete(1) 10 1 14 5 12 28 1 5 10 12 14 28 1 25.03.2017 Kapitel 2

Delete(1) 10 14 5 12 28 5 10 12 14 28 1 25.03.2017 Kapitel 2

Delete(14) 10 14 5 12 28 5 10 12 14 28 1 25.03.2017 Kapitel 2

Delete(14) 10 12 5 28 5 10 12 28 1 25.03.2017 Kapitel 2

Binärbaum Problem: Binärbaum kann entarten! Beispiel: Zahlen werden in sortierter Folge eingefügt Lookup benötigt (n) Zeit im worst case 1 3 10 14 19 5 28 Lösung: Splay Baum 25.03.2017 Kapitel 2

Splay-Baum Üblicherweise: Implementierung als interner Suchbaum (d.h. Elemente direkt integriert in Baum und nicht in extra Liste) Hier: Implementierung als externer Such-baum (wie beim Binärbaum oben) 25.03.2017 Kapitel 2

Splay-Baum lookup(19) In Baum Zeiger auf Listenelement 10 3 19 1 5 14 28 1 3 5 10 14 19 28 1 25.03.2017 Kapitel 2

Splay-Baum Ideen: Im Baum Zeiger auf Listenelemente Bewege Schlüssel von zugegriffenem Element immer zur Wurzel 2. Idee: über Splay-Operation 25.03.2017 Kapitel 2

Splay-Operation Bewegung von Schlüssel x nach oben: Wir unterscheiden zwischen 3 Fällen. 1a. x ist Kind der Wurzel: x y zig x y A C B C A B 25.03.2017 Kapitel 2

Splay-Operation Bewegung von Schlüssel x nach oben: Wir unterscheiden zwischen 3 Fällen. 1b. x ist Kind der Wurzel: y A B C x A B C y x zig 25.03.2017 Kapitel 2

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 2a. x hat Vater und Großvater rechts: x z y y D A x z zig-zig C B A B C D 25.03.2017 Kapitel 2

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 2b. x hat Vater und Großvater links: y B C D x z A A B C z y D x zig-zig 25.03.2017 Kapitel 2

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 3a. x hat Vater links, Großvater rechts: z x y zig-zag x D y z A A B C D B C 25.03.2017 Kapitel 2

Splay-Operation Wir unterscheiden zwischen 3 Fällen. 3b. x hat Vater rechts, Großvater links: z x y A x zig-zag z y D B C A B C D 25.03.2017 Kapitel 2

Splay-Operation Beispiel: zig-zag Operation (3a) x 10 3 19 1 5 14 28 1 25.03.2017 Kapitel 2

Splay-Operation 5 10 3 19 1 14 28 1 3 5 10 14 19 28 1 25.03.2017 Kapitel 2

Splay-Operation Beispiele: x x zig-zig, zig-zag, zig-zag, zig zig-zig, zig-zag, zig-zig, zig 25.03.2017 Kapitel 2

Splay-Operation Baum kann im worst-case immer noch sehr unbalanciert werden! Aber amortisierte Kosten sind sehr niedrig. 1 3 10 14 19 5 28 25.03.2017 Kapitel 2

Splay-Operation lookup(k)-Operation: Laufe von Wurzel startend nach unten, bis k im Baumknoten gefunden (Abkürzung zur Liste) oder bei Liste angekommen k in Baum: rufe splay(k) auf Amortisierte Analyse: m Splay-Operationen auf beliebigem Anfangsbaum mit n Elementen (m>n) 25.03.2017 Kapitel 2

Splay-Operation Gewicht von Knoten x: w(x) Baumgewicht von Baum T mit Wurzel x: tw(x)= yT w(y) Rang von Knoten x: r(x) = log(tw(x)) Potential von Baum T: (T) = xT r(x) 1.11 Lemma: Sei T ein Splay-Baum mit Wurzel u und x ein Knoten in T. Die amortisierten Kosten für splay(x,T) sind max. 1+3(r(u)-r(x)). 25.03.2017 Kapitel 2

Splay-Operation Beweis von Lemma 1.11: Induktion über die Folge der Rotationen. r und tw : Rang und Gewicht vor Rotation r’ und tw’: Rang und Gewicht nach Rotation 1. Fall: Amortisierte Kosten:  1+r’(x)+r’(y)-r(x)-r(y)  1+r’(x)-r(x) da r’(y)  r(y)  1+3(r’(x)-r(x)) da r’(x)  r(x) A B C x y zig Laufzeit (# Rot.) Änderung von  25.03.2017 Kapitel 2

Splay-Operation 2. Fall: Amortisierte Kosten:  2+r’(x)+r’(y)+r’(z)-r(x)-r(y)-r(z) = 2+r’(y)+r’(z)-r(x)-r(y) da r’(x)=r(z)  2+r’(x)+r’(z)-2r(x) da r’(x)r’(y) und r(y)r(x) A B C x y D z zig-zig 25.03.2017 Kapitel 2

Splay-Operation 2. Fall: Behauptung: Es gilt, dass 2+r’(x)+r’(z)-2r(x)  3(r’(x)-r(x)) d.h. r(x)+r’(z)  2(r’(x)-1) r’(x) A B C x y D z zig-zig r(x) r’(z) 25.03.2017 Kapitel 2

Splay-Operation r’(x) 2. Fall: Behauptung: Es gilt, dass r(x)+r’(z)  2(r’(x)-1) Ersetzungen: r(x)  log x , r’(z)  log y , r’(x)  log 1. Betrachte die Funktion f(x,y)=log x + log y. Zu zeigen: f(x,y)  -2 für alle x,y0 mit x+y1. A B C x y D z zig-zig r(x) r’(z) 25.03.2017 Kapitel 2

Splay-Operation 1.12 Lemma: Die Funktion f(x,y)=log x + log y hat in dem Bereich x,y0 mit x+y1 im Punkt (½,½) ihr Maximum. Beweis: Da die Funktion log x streng monoton wachsend ist, kann sich das Maximum nur auf dem Geradensegment x+y=1, x,y0, befinden. Neues Maximierungsproblem: betrachte g(x) = log x + log(1-x) Einzige Nullstelle von g’(x) = 1/x - 1/(1-x) ist x=1/2. Für g’’(x)= -(1/x2 + 1/(1-x)2)) gilt g’’(1/2) < 0. Also hat Funktion f im Punkt (½,½) ihr Maximum. 25.03.2017 Kapitel 2

Splay-Operation r’(x) 2. Fall: Behauptung: Es gilt, dass r(x)+r’(z)  2(r’(x)-1) Ersetzungen: r(x)  log x , r’(z)  log y , r’(x)  log 1. Es folgt: f(x,y)=log x + log y  -2 für alle x,y0 mit x+y1. Die Behauptung ist also korrekt. A B C x y D z zig-zig r(x) r’(z) 25.03.2017 Kapitel 2

Splay-Operation 3. Fall: Amortisierte Kosten:  2+r’(x)+r’(y)+r’(z)-r(x)-r(y)-r(z)  2+r’(y)+r’(z)-2r(x) da r’(x)=r(z) und r(x)r(y)  2(r’(x)-r(x)) denn… zig-zag A B C y x D z 25.03.2017 Kapitel 2

Splay-Operation 3. Fall: …es gilt: 2+r’(y)+r’(z)-2r(x)  2(r’(x)-r(x))  2r’(x)-r’(y)-r’(z)  2  r’(y)+r’(z)  2(r’(x)-1) analog zu Fall 2 zig-zag A B C y x D z 25.03.2017 Kapitel 2

Splay-Operation Beweis Lemma 1.11: Induktion über die Folge der Rotationen. r: Rang vor Rotation r’: Rang nach Rotation Für jede Rotation ergeben sich amortisierte Kosten von max. 1+3(r’(x)-r(x)) (Fall 1) bzw. 3(r’(x)-r(x)) (Fälle 2 und 3) Aufsummierung der Kosten ergibt mit Wurzel u max. 1 + Rot. 3(r’(x)-r(x)) = 1+3(r(u)-r(x)) 25.03.2017 Kapitel 2

Splay-Operation Baumgewicht von Baum T mit Wurzel x: tw(x)= yT w(y) Rang von Knoten x: r(x) = log(tw(x)) Potential von Baum T: (T) = xT r(x) 1.13 Lemma: Sei T ein Splay-Baum mit Wurzel u und x ein Knoten in T. Die amortisierten Kosten für splay(x,T) sind max. 1+3(r(u)-r(x)) = 1+3log (tw(u)/tw(x)). 1.14 Korollar: Sei W=x w(x) und wi das Gewicht von ki in i-tem lookup. Für m lookup-Operationen sind die amor-tisierten Kosten O(m+3i=1m log (W/wi)). 25.03.2017 Kapitel 2

Splay-Baum 1.15 Satz: Die Laufzeit für m lookup Operationen in einem n-elementigen Splay-Baum T ist höchstens O(m+(m+n)log n). Beweis: Sei w(x) = 1 für alle Schlüssel x in T. Dann ist W=n und r(x)  log W = log n für alle x in T. Erinnerung: für eine Operationsfolge F ist die Laufzeit T(F)  A(F) + (s0) für amortisierte Kosten A und Anfangszustand s0 (s0) = xT r0(x)  n log n Aus Korollar 1.14 ergibt sich Theorem 1.15. 25.03.2017 Kapitel 2

Splay-Baum Angenommen, wir haben eine Wahrscheinlichkeitsvertei- lung für die Suchanfragen. p(x) : Wahrscheinlichkeit für Schlüssel x H(p) = x p(x)log(1/p(x)) : Entropie von p 1.16 Satz: Die Laufzeit für m lookup Operationen in einem n-elementigen Splay-Baum T ist höchstens O(mH(p) + nlog n). Beweis: Folgt aus Korollar 1.14 mit w(x) = np(x) für alle x. Bemerkung: Laufzeit (mH(p)) für jeden statischen binären Suchbaum! Es ist aber seit der Enwicklung von Splay Bäumen vor 25 Jahren immer noch ein offenes Problem, ob diese konstant kompetitiv auch gegenüber dynamischen binären Suchbäumen sind. 25.03.2017 Kapitel 2

Splay-Baum Operationen Bemerkung: Die amortisierte Analyse kann erweitert werden auf insert und delete, wenn diese wie folgt implementiert sind. insert(e): wie im binären Suchbaum splay-Operation, um key(e) in Wurzel zu verschieben delete(k): 25.03.2017 Kapitel 2

Fragen? 25.03.2017 Kapitel 2