Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.

Ähnliche Präsentationen


Präsentation zum Thema: "Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende."—  Präsentation transkript:

1 Friedhelm Meyer auf der Heide 1 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 12,

2 Friedhelm Meyer auf der Heide 2 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Organisatorisches Die letzte Vorlesung über Grundlegende Algorithmen findet am Montag, statt. Die Vorlesung Komplexitätstheorie von Johannes Blömer beginnt am Montag, Wer plant, an dieser Vorlesung teilzunehmen? Voraussichtliche Prüfungstage für die erste Prüfungsphase: 9.12., ,

3 Friedhelm Meyer auf der Heide 3 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Randomisierte Algorithmen

4 Friedhelm Meyer auf der Heide 4 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Beispiel: Randomisierter Quicksort Eingabe: S={s 1,…,s n } ½ N. Algo: Falls n=0, gebe leere Folge aus; falls n=1, gebe s 1 aus. Sonst: - erzeuge zufälliges Splitelement s i, i 2 {1,…,n} - vergleiche jedes s j, j i, mit s i, erzeuge dadurch S 1 ={s j, s j s i } - sortiere S 1 und S 2 rekursiv - gebe sortiertes S 1, s i, sortiertes S 2 aus. Laufzeit (Wir messen die Zahl der Vergleiche): Die Laufzeit hängt von der Ergebnissen der Zufallsexperimente ab. Wir berechnen die erwartete Laufzeit bei zufälliger Wahl der Splitelemente

5 Friedhelm Meyer auf der Heide 5 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Ein elementares Beispiel Best case: 1, worst case: n-k+1 Best case: 1 worst case 1, (tritt mit Wkeit 0 ein) erwartete Zahl von Versuchen: (n-k)/k +1

6 Friedhelm Meyer auf der Heide 6 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Perfektes Hashing

7 Friedhelm Meyer auf der Heide 7 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Perfektes Hashing Sei U = [p]:={0,…, p-1} gegeben, das Universum. Aufgabe: 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). h| S ist injektiv. n · m · c n für eine (kleine) Konstante c ¸ 1. Ein solches h heisst perfekt für S.

8 Friedhelm Meyer auf der Heide 8 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity 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). h| S ist injektiv. 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 2 S in T[h(x)] (Beachte: Hierbei entstehen keine Kollisionen!!) Suche: Für x 2 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) Wie können wir ein h konstruieren, das perfekt für S ist??

9 Friedhelm Meyer auf der Heide 9 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Perfektes Hashing Exkurs zufällige Funktionen Wie gut eignet sich eine zufällige Funktion h:U! [m] ? Zur Beschreibung benötigt man Platz |U| >> n Mit welcher Wkeit w ist h injektiv auf S? w= [ m(m-1)…(m-n+1)]/ [m n ] - Für m=O(n) ist w < 2 -n (für n genügend groß). - Für m¸ n 2 ist w > ½. Weitere Eigenschaften (m=n): Sei B i := h -1 (i)Å S das i-te Bucket von S, b i := |B i | die i-te Bucketgröße. Es gilt: E(b i ) = 1 E(#i : b i ¸ j) · n/ 2 j E(max {b i, i=1,…,n}) · log(n)

10 Friedhelm Meyer auf der Heide 10 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Lineare Hashfunktionen Sei U= [p], p prim. Für a2U sei h a : U ! [m] definiert durch h a (x)= (ax) mod(p) mod(m) Sei H 1 (m):= {h a : U ! [m], a2U}. Im folgenden betrachten wir immer das Zufallsexperiment Wähle h a zufällig, gleichverteilt aus H 1 (m). Satz über lineare Hashfunktionen: Seinen b a (1),…,b a (m) die Größen der Buckets, in die S durch h a zerlegt wird. Dann gilt (b a (j)) 2 < 4n 2 /m + n für mindestens die Hälfte der h a 2 H 1 (m). Insbesondere: Für m=n : (b a (j)) 2 < 5n für mindestens die Hälfte der h a 2 H 1 (m). Für m=2n 2 : mindestens die Hälfte der h a 2 H 1 (m) sind injektiv auf S.

11 Friedhelm Meyer auf der Heide 11 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Analyse der linearen Hashfunktionen Beh1: Seien x,y 2U, x y. Dann gilt h a (x)=h a (y) (x und y kollidieren) für höchstens einen Anteil 2/m aller h a 2 H 1 (m). Bew: h a (x)=h a (y), Es gibt s 2 {0,…, dp/me-1 ] mit a(x-y)=sm mod(p) Da p Primzahl ist, ist obiges eine lineare Gleichung im Körper Z p, hat somit für festes s genau eine Lösung a. Somit gibt es dp/me · (2p)/m viele h a 2 H 1 (m) mit h a (x)=h a (y). Da |H 1 (m)| = p gilt, folgt Beh1.

12 Friedhelm Meyer auf der Heide 12 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Analyse der linearen Hashfunktionen Beh1: Seien x,y 2U, x

13 Friedhelm Meyer auf der Heide 13 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Das perfekte Hashing-Schema Sei Sµ U, |S|=n. Lege Arrays T[0 : n-1] und T*[0 : 10n-1] an. 1.Suche h=h a 2 H 1 (n) mit (b a (j)) 2 < 5n 2.Für j=0,…,n-1: beschrifte T[ j ] mit 2 (b a (j)) 2 und d j = 2 i=0,.., j-1 (b a (i)) 2, d 0 = 0 3.Für j=0 bis n-1: Suche h (j) 2 H 1 (2b a (j) 2 ) injektiv auf B a (j) ( h (j) (x) = a j x mod(p) mod(2b a (j) 2 ) Füge a j ebenfalls zu T[ j ] hinzu 4. Speichere jedes x2 S in T*[h (h(x)) (x) + d h(x) ] Bemerkung: Die Größe von T* reicht aus.

14 Friedhelm Meyer auf der Heide 14 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Das perfekte Hashing-Schema S T[0 : n-1] T*[0 : 10n-1] x a j, d j, 2b a (j) 2 h a (x) = j 2b a (j) 2 djdj T[j] h (j) (x) + d j = a j x mod(p)mod(2b a (j) 2 )+ d j d0d0 d1d1

15 Friedhelm Meyer auf der Heide 15 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Eigenschaften des perfekten Hashing-Schemas Falls wir die Suche nach den Hashfunktionen h a 2 H 1 (m) durch die Prozedur Wähle solange zufälliges h a 2 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).

16 Friedhelm Meyer auf der Heide 16 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Friedhelm Meyer auf der Heide Heinz Nixdorf Institute & Computer Science Department University of Paderborn Fürstenallee Paderborn, Germany Tel.: +49 (0) 52 51/ Fax: +49 (0) 52 51/ Thank you for your attention!


Herunterladen ppt "Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende."

Ähnliche Präsentationen


Google-Anzeigen