Universelle Hash-Funktion

Aus testwiki
Version vom 25. August 2023, 13:10 Uhr von 141.24.210.198 (Diskussion) (Gemäß der Definition muss die Kollisionswahrscheinlichkeit nicht gleich 1/n, sondern kann auch kleiner sein (in der Tat gib es auch solche Hash-Funktionen).)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Eine Universelle Hash-Funktion (manchmal auch als universale Hash-Funktion bezeichnet) ist ein randomisierter Algorithmus, für welchen gilt, dass die Wahrscheinlichkeit einer Kollision in einer Menge mit n Elementen höchstens 1/n beträgt.

Die Grundidee hinter universellem Hashing ist, die Hash-Funktion zu randomisieren: die Hash-Funktion wird aus einer Klasse von Funktionen zufällig ausgewählt. Somit kann die Wahrscheinlichkeit für schlechtes Laufzeitverhalten gleichmäßig über alle Eingaben verteilt werden.

Definition

Sei H eine endliche Menge von Hash-Funktionen, die eine Menge K von Schlüsseln auf die Menge {0,1,,m1} abbilden. Eine solche Menge wird als universell bezeichnet, wenn für jedes Paar voneinander verschiedener Schlüssel k,lK die Anzahl der Hash-Funktionen, für die h(k)=h(l) gilt, höchstens gleich |H|/m ist. Mit anderen Worten, mit einer zufällig aus H ausgewählten Hash-Funktion ist die Wahrscheinlichkeit für eine Kollision zwischen den Schlüsseln k und l nicht größer als die Wahrscheinlichkeit 1/m einer Kollision, wenn h(k) und h(l) zufällig und unabhängig aus der Menge {0,1,,m1} gewählt werden.

Falls n Elemente in einer Hashtabelle T der Größe m mittels einer zufälligen Hashfunktion h aus einer c-universellen Familie gespeichert werden, dann ist für jedes T[i] mit mindestens einem Schlüssel die erwartete Anzahl Schlüssel in T[i] in O(1+c*(n/m)).[1]

Literatur

  • Cormen et al.: Introduction to Algorithms. 2. Auflage. MIT Press, 2001, Kapitel 11.3.3

Einzelnachweise

  1. Cormen et al., op. cit.