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
Organisatorisches 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
Randomisierte Algorithmen Friedhelm Meyer auf der Heide 3
Perfektes Hashing Friedhelm Meyer auf der Heide 4
Perfektes Hashing 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
Lineare Hashfunktionen Sei U= [p], p prim. Für a U sei h a : U [m] definiert durch h a (x)= (ax) mod(p) mod(m) Sei H 1 (m):= {h a : U [m], a U}. Im folgenden betrachten wir immer das Zufallsexperiment Wähle h a zufällig, gleichverteilt aus H 1 (m). Für m=n : Σ(b a (j)) 2 < 5n für mindestens die Hälfte der h a H 1 (m). Für m=2n 2 : mindestens die Hälfte der h a H 1 (m) sind injektiv auf S. Friedhelm Meyer auf der Heide 6
Das perfekte Hashing-Schema d 0 d 1 x h a (x) = j a j, d j, 2b a (j) 2 h (j) (x) + d j = a j x mod(p)mod(2b a (j) 2 )+ d j d j 2b a (j) 2 T[j] S T[0 : n-1] T*[0 : 10n-1] Friedhelm Meyer auf der Heide 7
Eigenschaften des perfekten Hashing-Schemas Falls wir die Suche nach den Hashfunktionen h a H 1 (m) durch die Prozedur Wähle solange zufälliges h a H 1 (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
A new data structure for dictionaries: Skiplists Friedhelm Meyer auf der Heide 9
Dictionaries (dynamische Wörterbücher) 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
A new realization of dictionaries: Skiplists A skiplist is a linked list with shortcuts Friedhelm Meyer auf der Heide 11
Find in Skiplists Friedhelm Meyer auf der Heide 12
Insert in Skiplists 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 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
Delete in Skiplists 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
Expected time per operation is logarithmic 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
Summing up 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
Grundlegende Begriffe über randomisierte Algorithmen Friedhelm Meyer auf der Heide 18
Grundlegende Begriffe über randomisierte Algorithmen 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 a i M i, i=1, s, der Zufallsexperimente R i :=random(m i ), 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/ M 1 * 1/ M 2 * * 1/ M s. 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 (Sog. Tail Tail Estimates) Estimates) Friedhelm Meyer auf der Heide 20
Unsere Beispiel Praline suchen 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
Thank you for your attention! Friedhelm Meyer auf der Heide Heinz Nixdorf Institute & Computer Science Department Fürstenallee 11 33102 Paderborn, Germany Tel.: +49 (0) 52 51/60 64 80 Fax: +49 (0) 52 51/62 64 82 E-Mail: fmadh@upb.de http://www.upb.de/cs/ag-madh Friedhelm Meyer auf der Heide 22