Algorithmen und Komplexität

Werbung
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Algorithmen und Komplexität
Teil 1: Grundlegende Algorithmen
WS 08/09
Friedhelm Meyer auf der Heide
Vorlesung 13, 25.11.08
Friedhelm Meyer auf der Heide
1
HEINZ NIXDORF INSTITUTE
Organisatorisches
University of Paderborn
Algorithms and Complexity
Die letzte Vorlesung über Grundlegende Algorithmen
findet am Montag, 1.12. statt.
Die Vorlesung Komplexitätstheorie von Johannes
Blömer beginnt am Montag, 8.12.
Voraussichtliche Prüfungstage für die erste
Prüfungsphase: 9.12., 12.12., 15.12.
Friedhelm Meyer auf der Heide
2
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Randomisierte Algorithmen
Friedhelm Meyer auf der Heide
3
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Perfektes Hashing
Friedhelm Meyer auf der Heide
4
HEINZ NIXDORF INSTITUTE
Perfektes Hashing
University of Paderborn
Algorithms and Complexity
Zu S⊆U, |S|=n, berechne eine Hashfunktion h:U → [m] mit:
• h kann in konstanter Zeit ausgewertet werden.
• h benötigt Speicherplatz O(n).
Wie können wir ein h konstruieren,
• h|S ist injektiv.
das perfekt für S ist??
• n m c n für eine (kleine) Konstante c ≥ 1.
Ein solches h heisst perfekt für S.
Eine perfekte Hashfunktion für S liefert eine Datenstruktur für ein statisches
Wörterbuch, d. h. für den Datentyp, der die Suchoperation in S unterstützt.
- Lege Hashtableau T an, d.h. ein Array T[0 : m-1]
- Speichere x ∈ S in T[h(x)] (Beachte: Hierbei entstehen keine Kollisionen!!)
Suche: Für x ∈ U liefert “search(x)” (die assoziierte Information zum)
Schlüssel x.
Dazu muss nur in T[h(x)] nachgeschaut werden.
Suchzeit O(1), Speicherplatz O(n)
Friedhelm Meyer auf der Heide
5
HEINZ NIXDORF INSTITUTE
Lineare Hashfunktionen
University of Paderborn
Algorithms and Complexity
Sei U= [p], p prim. Für a∈U sei ha: U → [m] definiert durch
ha(x)= (ax) mod(p) mod(m)
Sei H1(m):= {ha: U → [m], a∈U}. Im folgenden betrachten wir immer das
Zufallsexperiment “Wähle ha zufällig, gleichverteilt aus H1(m).”
Für m=n : Σ(ba(j))2 < 5n für mindestens die Hälfte der ha ∈ H1(m).
Für m=2n2 : mindestens die Hälfte der ha ∈ H1(m) sind injektiv auf S.
Friedhelm Meyer auf der Heide
6
HEINZ NIXDORF INSTITUTE
Das perfekte Hashing-Schema
University of Paderborn
Algorithms and Complexity
d0
d1
dj
h(j)(x)
+ dj =
aj x mod(p)mod(2ba(j)2)+ dj
ha(x) = j
x
aj, dj, 2ba(j)2
2ba(j)2
T[j]
S
T[0 : n-1]
T*[0 : 10n-1]
Friedhelm Meyer auf der Heide
7
Eigenschaften des perfekten Hashing-Schemas
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Falls wir die Suche nach den Hashfunktionen ha ∈ H1(m) durch die Prozedur
”Wähle solange zufälliges ha∈ H1(m), bis eins mit
der gesuchten Eigenschaft gefunden ist”
realisieren, reichen wegen des Satzes über lineare Hashfunktionen erwartet
zwei Versuche (vgl. “Pralinen finden”). Ein Versuch benötigt Zeit O(m) (für den
Test der Eigenschaft).
Satz: Das oben beschriebene Schema hat folgende Eigenschaften:
• Es benötigt Platz O(n).
• Eine Suchanfrage benötigt konstante Zeit.
• Die Zeit um die Datenstruktur aufzubauen beträgt
- O(p n) im worst case,
- erwartet O(n).
Friedhelm Meyer auf der Heide
8
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
A new data structure for dictionaries:
Skiplists
Friedhelm Meyer auf der Heide
9
HEINZ NIXDORF INSTITUTE
Dictionaries (dynamische Wörterbücher)
University of Paderborn
Algorithms and Complexity
Support the operations find, insert, delete.
Examples:
Search trees like
- AVL-trees, red-black- trees, 2-3-trees, …
O(log(n)) time per operation
Hashing structures like
- Hashing with chaining, linear probing, double hashing, …
Friedhelm Meyer auf der Heide
10
HEINZ NIXDORF INSTITUTE
A new realization of dictionaries: Skiplists
University of Paderborn
Algorithms and Complexity
A skiplist is a linked list with shortcuts
Friedhelm Meyer auf der Heide
11
HEINZ NIXDORF INSTITUTE
Find in Skiplists
University of Paderborn
Algorithms and Complexity
Friedhelm Meyer auf der Heide
12
HEINZ NIXDORF INSTITUTE
Insert in Skiplists
University of Paderborn
Algorithms and Complexity
Insert(x):
- Find x,
- Flip a coin until, after some number h of trials,
head appears
- Insert x at the corresponding position on the h
lowest levels
h is the height of x.
How large is h?
Friedhelm Meyer auf der Heide
13
The height of a Skiplist is logarithmic, with high
probability
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Thus, the expected size (number of nodes) is 2n.
Prob(h ≥ 2log(n)) = 1/n²
The height of the skiplist is the maxium height of its elements.
Lemma: Prob(Height of Skiplist ≥ 2log(n)) 1/n
Friedhelm Meyer auf der Heide
14
HEINZ NIXDORF INSTITUTE
Delete in Skiplists
University of Paderborn
Algorithms and Complexity
Delete(x)
- Find(x)
- Remove it on all levels it is present by connecting
its predecessor with its successor
Friedhelm Meyer auf der Heide
15
HEINZ NIXDORF INSTITUTE
Expected time per operation is logarithmic
University of Paderborn
Algorithms and Complexity
Note: We only analyse search; the other operations are dominated by this.
Consider the reversed search path: (H:= height of skiplist)
- In each step, it goes upwards with probability ½.
- Thus, after expected 2H steps, it is on level H,
which is expected < 2log(n).
Friedhelm Meyer auf der Heide
16
HEINZ NIXDORF INSTITUTE
Summing up
University of Paderborn
Algorithms and Complexity
A Skiplist is a randomized datastructure that has the
following properties:
- its expected size is O(n)
- Find, insert, delete need expected time O(log(n)).
Thus Skiplists have a performance comparable to
balanced search trees,
but are much easier to implement.
Friedhelm Meyer auf der Heide
17
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Grundlegende Begriffe über
randomisierte Algorithmen
Friedhelm Meyer auf der Heide
18
Grundlegende Begriffe über
randomisierte Algorithmen
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Ein randomisierter Algorithmus A, gestartet mit Eingabe x, darf,
zusätzlich zu den üblichen Operationen, Operationen vom Typ
“R :=random(M)” ausführen.
Dabei ist M eine endliche Menge, “R :=random(M)” weist der Variablen R
ein zufällig, uniform gewähltes Element aus M zu.
Eine Rechnung R von A gestartet mit x ergibt sich durch sukzessive
Festlegung der Ergebnisse ai ∈ Mi, i=1,…s, der Zufallsexperimente
“Ri :=random(Mi)”, i=1,…,s, die während der Rechnung R ausgeführt
werden.
Die Wahrscheinlichkeit für das Auftreten von R bei Eingabe x ist somit
Pr(R)= 1/|M1| * 1/|M2| * … * 1/|Ms|.
|R|:= Länge von R; C := Menge aller Rechnungen von M gestartet mit x.
Friedhelm Meyer auf der Heide
19
Grundlegende Begriffe über
randomisierte Algorithmen
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Tail
Estimates)
((Sog.
Sog. Tail
Estimates)
Friedhelm Meyer auf der Heide
20
HEINZ NIXDORF INSTITUTE
Unsere Beispiel “Praline suchen”
University of Paderborn
Algorithms and Complexity
Wir schreiben k = εn
E:= Erwartete Zahl von Versuchen
= (n-k)/k +1 =(1- ε)/εε +1
Prob(#Versuche > s) = ((n-k)/n)s = (1 - ε)s
Prob(#Versuche > E (1+d)) = (1 - ε)E (1+d) ≈ [e- (1 - ε) (1 - ε)]1+d
Da e- (1 - ε) (1- ε) < 1 ist, fällt diese W’keit exponentiell mit d.
Beispiel: Für ε = ½ ist E=2, also
Prob(#Versuche > E (1+d)) = (1/2)2 + 2d .
Das ist < 1/1Mio bereits für d=9, also bei 20 Versuchen
Friedhelm Meyer auf der Heide
21
HEINZ NIXDORF INSTITUTE
University of Paderborn
Algorithms and Complexity
Thank you for
your attention!
Friedhelm Meyer auf der Heide
Heinz Nixdorf Institute
& Computer Science Department
University of Paderborn
Fürstenallee 11
33102 Paderborn, Germany
Tel.: +49 (0) 52 51/60 64 80
Fax: +49 (0) 52 51/62 64 82
E-Mail: [email protected]
http://www.upb.de/cs/ag-madh
Friedhelm Meyer auf der Heide
22
Herunterladen