Thomas Sliwa - Seminar ber Algorithmen - WS 2006/07 - 13. Februar 2007 Paarweise Unabhängigkeit und Universelle Hash Funktionen 1 Paarweise Unabhägigkeit 1.1 Einleitung Meistens ist die Forderung der totalen Unabhägigkeit von Zufallsvariablen zu streng. Mit Hilfe k-facher bzw. paarweise unabhägiger Variablen kann man den Grad der Zufäligkeit eines Algorithmus minimieren und so in günstigen Fällen Algorithmen konstruieren, die effizient und deterministisch zu berechnen sind. 1.2 Definitionen Definition 13.1. 1. Eine Menge von Ereignissen E1 , E2 , . . . , En ist k-fach unabhängig, wenn für jede beliebige Teilmenge I ⊆ [1, n] mit |I| ≤ k gilt, ! \ Y Pr Ei = Pr (Ei ) . i∈I i∈I 2. Eine Menge von Zufallsvariablen X1 , X2 , . . . , Xn ist k-fach unabhängig, wenn für jede beliebige Teilmenge I ⊆ [1, n] mit |I| ≤ k und für alle Werte xi mit i ∈ I gilt, ! \ Y Pr Xi = xi = Pr (Xi = xi ) . i∈I i∈I 3. Die Zufallsvariablen X1 , X2 , . . . , Xn heißen paarweise unabhängig, wenn sie 2-fach Unabhängig sind. Dies bedeutet, dass für jedes Paar i, j und beliebige Werte a, b gilt, Pr ((Xi = a) ∩ (Xj = b)) = Pr (Xi = a) Pr (Xj = b) . 1.3 Die Konstruktion paarweise unabhängiger Bits Zufallsbits sind gleichverteilt, wenn sie die Werte 0 und 1 mit gleicher Wahrscheinlichkeit annehmen. Es sollen m = 2b −1 gleichverteilte, paarweise unabhängige Zufallsbits aus b unabhängigen Zufallsbits X1 , X2 , . . . , Xb konstruiert werden. Dazu nummeriert man die 2b − 1 nicht leeren Teilmengen mit den Elementen {1, 2, . . . , b} in beliebiger Reihenfolge und lässt Sj die j-te Teilmenge benennen. Schließlich setzte man M X Yj = Xi bzw. Yi = Xi mod 2. i∈Sj i∈Sj Dann gilt folgendes Lemma. Lemma 13.1. Die Yi sind paarweise unabhängig, gleichverteilte Zufallsbits. “L ” Beweis. Sei z das grösste Element von Sj , dann ist Yj = i∈Sj −{z} Xi ⊕ Xz . Hat man nun alle Werte der Xi bis auf Xz ermittelt, weiss man, dass Xz den Wert von Yj gleichverteilt bestimmt. Nun betrachtet man zwei Variablen Yk und Yl , deren Mengenzusammensetzung sich nur um das Element z unterscheidet, d.h. z ist Element von Sl aber nicht Sk . Man bedingt nun für beliebige Werte c, d ∈ {0, 1}: P r (Yl = d | Yk = c). Wir sehen nun, dass diese Wahrscheinlichkeit 1/2 beträgt. Denn wenn wir nun alle Werte Xi aus der Menge (Sk ∪ Sl ) − {z} kennen, dann steht der Wert von Yk bereits fest und der Wert von Yl wird nur noch von dem gleichverteilten Wert von Xz bestimmt. Somit nimmt der Wert von Yk keinerlei Einfluß auf den Wert von Yl . Somit gilt schließlich, Pr ((Yk = c) ∩ (Yl = d)) = Pr (Yl = d | Yk = c) Pr (Yk = c) = Pr (Yl = d) Pr (Yk = c) 1 4 = 1 Thomas Sliwa - Seminar ber Algorithmen - WS 2006/07 - 13. Februar 2007 1.4 Konstruktion paarweise unabhängiger Werte modulo einer Primzahl Gleichverteilte, paarweise unabhängige Werte Y0 , Y1 , . . . , Yp−1 lassen sich auch aus einer Menge {0, 1, . . . , p − 1}, wobei p eine Primzahl ist, generieren. Dazu benötigt man nur zwei unabhängige, gleichverteilte Werte X1 und X2 aus dieser Menge und konstruiert die Yi folgendermaßen: fr i = 0, 1, . . . , p − 1. Yi = X1 + iX2 mod p Lemma 13.2. Die Variablen Y0 , Y1 , . . . , Yp−1 sind paarweise unabhängige, gleichverteilte Zufallsvariablen über {0, 1, . . . , p − 1}. Beweis. Sei ein X2 gegeben, dann gibt es p mögliche verschiedene Werte für X1 , die dann p verschiedene Werte für Yi mod p bedingen. Diese p verschiedenen Werte sind dann gleichwahrscheinlich, da X1 und X2 gleichverteilt sind. Nimmt man nun beliebige Variablen Yi und Yj . Dann muß man, um die paarweise Unabhängigkeit zu zeigen, zeigen, dass für beliebige a, b ∈ {0, 1, . . . , p − 1} gilt Pr ((Yi = a) ∩ (Yj = b)) = 1 . p2 Die Ereignisse Yi = a und Yj = b kann man auch schreiben als X1 + iX2 = a mod p und X1 + jX2 = b mod p. Dieses Gleichungssystem hat die Lösung X2 = i (b − a) b−a mod p und X1 = a − mod p. j−i j−i Nach Voraussetzung sind X1 und X2 ja aber unabhängig und gleichverteilt und somit sind beliebige Yi und Yj paarweise unabhängig. 1.5 Die Tschebyschow Ungleichung für paarweise unabhängige Variablen Wie gesehen kann man mit Chernoff Schranken die äußeren Bereiche einer Wahrscheinlichkeitsverteilung sehr gut abschätzen. Dies geht allerdings nur, wenn die Zufallsvariablen unabhängig voneinander sind. Allerdings kann man die Varianz einer Summe von paarweise unabhängigen Zufallsvariablen berechnen und somit die Tschebyschow Ungleichung dann auf diese anwenden. P Satz 13.3. Sei X = n i=1 Xi , wobei die Xi paarweise unabhängige Zufallsvariablen sind, dann ist Var [X] = n X Var [Xi ] . i=1 Beweis. Im Kapitel Moments and Deviations haben wir gesehen, dass # " n n X X X Cov (Xi , Xj ) . Var [Xi ] + 2 Var Xi = i=1 i<j i=1 Da die X − 1, X2 , . . . , Xn alle paarweise unabhängig sind, gilt analog zu Satz 3.3, dass für beliebige i 6= j E [Xi Xj ] − E [Xi ] E [Xj ] = 0 gilt. Wendet man auf die Summe der paarweise unabhängigen Zufallsvariablen dann die Tschebyschow Ungleichung an erhält man folgendes Korollar. P Korollar 13.4. Sei X = n i=1 Xi , wobei die Xi paarweise unabhängig sind, dann ist Pn Var [X] i=1 Var [Xi ] Pr (|X − E [X]| ≥ a) ≤ = a2 a2 2 Thomas Sliwa - Seminar ber Algorithmen - WS 2006/07 - 13. Februar 2007 2 Universelle Hash Funktionen 2.1 Einleitung Betrachtet man Hashfunktionen absolut gleichverteilt und unabhängig in Bezug auf die erzeugten Hashwerte h (x1 ) , h (x2 ) , . . . , h (xk ) für die Elemente x1 , x2 , . . . , xk , kann man zwar theoretisch gut arbeiten und Eigenschaften herleiten und beweisen. Allerdings ist dieses Modell nicht einfach zu implementieren, da diese total zufälligen Hashfunktionen zu komplex in der Berechnung und Speicherung sind. Daher schränkt man in der Umsetzung die Anforderungen ein. Einerseits durch Pseudo–zufällige Funktionen, die zwar einfach umzusetzen und zu berechnen sind, aber keine Garantien liefern. Andererseits benutzt man Hashfunktionen, die die strengen Forderungen der totalen Zufälligkeit abschwächen, dafür aber gewisse nachweisbare Garantien liefern und effizient in Bezug auf Berechnung und Speicherung sind. Diese sollen folgend vorgestellt werden. Definition 13.2. Sei U ein Universum mit |U | ≥ n und sei V = {0, 1, . . . , n − 1}. Eine Familie von Hashfunktionen H, die von U nach V abbilden, heißt k-universell, wenn für jedes Element x1 , x2 , . . . , xk ∈ U und eine gleichverteilt zufällig gewählte Hashfunktion h ∈ H die Wahrscheinlichkeit Pr (h (x1 ) = h (x2 ) = . . . = h (xk )) ≤ 1 gilt. nk−1 Eine Familie von Hashfunktionen H, die von U nach V abbilden, heißt streng k-universell, wenn für jedes Element x1 , x2 , . . . , xk ∈ U und jeden Wert y1 , y2 , . . . , yk ∈ V sowie eine gleichverteilt zufällig gewählte Hashfunktion h ∈ H die Wahrscheinlichkeit 1 Pr ((h (x1 ) = y1 ) ∩ (h (x2 ) = y2 ) ∩ . . . ∩ (h (xk ) = yk )) = k gilt. n Somit geben Hashfunktionen aus 2-universellen Familien die Garantie, dass zwei Hashwerte h (x1 ) und h (x2 ) mit einer Wahrscheinlichkeit von 1/n den gleichen Wert ergeben, was allerdings nicht für drei Werte h (x1 ) , h (x2 ) , h (x3 ) gilt. Ist die Familie streng 2-universell gilt weiterhin, dass die Werte der Hashfunktion paarweise unabhängig sind, da die Wahrscheinlichkeit, dass es zu einer Kollision kommt 1/n2 beträgt. Man nennt streng 2-universelle Hashfunktionen auch paarweise unabhängige Hashfunktionen. 2.2 2-universelle Familien von Hashfunktionen Sei das Universum U die Menge {0, 1, . . . , m − 1} und sei die Wertebereich der Hashfunktionen V = {0, 1, . . . , n}, wobei m ≥ n. Dann betrachten wir die Familie von Hashfunktionen unter der hinzugezogenen Primzahl p ≥ m, so dass für die Funtktionen ha,b (x) = ((ax + b) mod p) mod n gilt und somit die Familie H = {ha,b | 1 ≤ a ≤ p − 1, 0 ≤ b ≤ b} ist. Dann gilt folgendes Lemma. Lemma 13.5. H ist 2-universell 2.3 Streng 2-universelle Familien von Hashfunktionen ändert man die Konstuktion der Hashfunktionen des vorherigen Abschnitts dahingehend, dass nun das Universums U und der Wertebereich der Hashfunktionen aus {0, 1, . . . , p − 1} unter der Bedingung, dass p Primzahl ist, sind, kann man eine streng 2-universelle Familie definieren. Somit sind die einzelnen Funktionen der Form ha,b (x) = (ax + b) mod p und die Funktionenfamile H = {ha,b | 0 ≤ a, b ≤ p − 1} . Dann gilt folegendes Lemma. Lemma 13.6. H ist streng 2-universell. Nun hat man zwar paarweise unabhängige Hashfunktionen konstruiert, da aber U und V die gleiche Mächtigkeit haben, ist das Resultat nicht praktikabel. Die Schlüsselmenge ist ja von der gleichen Mächtigkeit, wie die Menge der zu speichernden Elemente. 3 Thomas Sliwa - Seminar ber Algorithmen - WS 2006/07 - 13. Februar 2007 Man erweitert die Konstruktion dahingehend, dass das Universum grösser sein˘ kann. Dazu sei ¯ weiterhin V = {0, 1, . . . , p − 1} mit einer Primzahl p. Das Universum ist allerdings definiert mit U = 0, 1, . . . , pk − 1 mir der Primzahl p und einer ganzen Zahl k. Somit kann man die Elemente u aus UPals Vektoren der Form ~ u = (u1 , u2 , . . . , uk ) betrachten, k−1 ui pi = u. Für jeden Vektor ~a = (a0 , a1 , . . . , ak−1 ), wobei für die ui gilt, 0 ≤ ui ≤ p − 1 und 0 ≤ i ≤ k − 1 und somit i=0 wobei 0 ≤ a ≤ p − 1 und 0 ≤ i ≤ k − 1 sind, und einen beliebigen Wert b dann die Hashfunktionen durch ! k−1 X h~a,b (u) = ai ui + b mod p und die Funktionenfamile durch i=0 H = {h~a,b | 0 ≤ ai , b ≤ p − 1fr alle0 ≤ i ≤ k − 1} . Dann gilt folgendes Lemma. Lemma 13.7. H ist streng 2-universell. 2.4 Perfektes Hashen Perfektes Hashen wird für statische Verzeichnisse verwendet. Statische Verzeichnisse sind dadurch charakteresiert, dass auf den Inhalt des Verzeichnisses nach Eingabe nur noch suchend zugegriffen wird. Somit hat man als Ergebnis einer Suche entweder die Speicherstelle des Elements oder die Information, dass sich das Element nicht im Verzeichnis befindet, als Rückgabewert. Gegeben ist eine Menge S von Werten, dann soll eine Hashtabelle derart konstruiert werde, dass man konkrete Aussagen über das worst-case Verhalten treffen kann. Wenn man von perfekten Hashen redet meint man dann eine Suche im Verzeichnis mit einer konstanten Anzahl von Operationen. Falls man viel Platz für das Verzeichnis hat und eine passende Familie 2-universeller Hashunktionen, gilt folgendes Lemma. Lemma 13.8. Wenn h ∈ H gleichverteilt zufällig aus einer 2-universellen Familie von Hashfunktionen, die das Universum U nach [0, n − 1]abbilden, gewählt wird, dann ist für jede Teilmenge S ⊂ U der Grösse m die Wahrscheinlichkeit, dass h perfekt hasht, midestens 1/2, wenn n ≥ m2 . Nun will man aber den benötigten Speicherplatz minimieren bzw. einschränken, da man bisher m2 Speicherstellen benötigt um m Elemente zu speichern. Dazu ändernt man die Konstruktion auf ein zweistufiges Hashen. Man hasht die Werte zuerst mit einer Hashfunktionen aus einer Famile 2-universeller Hashfunktionen in ein Verzeichnis mit m Speicherstellen. Da es zu Kollisionen kommen kann, sucht man sich für jede dieser Speicherstellen aus einer entsprechenden Familie 2-universeller Hashfunktionen eine Funktion aus. Diese wird dann nach dem vorherigen Lemma kollisionsfrei k Elemente hashen, wenn die grösse des Unterverzeichnisses k2 beträgt. Wählt man die Funktion für das Gesamtverzeichnis entsprechend, dann gilt folgender Satz. Satz 13.9. Ein zweistufiger Ansatz liefert ein Schema für perfektes hashen von m Elementen in O (m) Containern. 4