Hashing

Aus Infostudium Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Offenes Hashing

Beim offenen Hashing ist es möglich, dass mehrere Elemente (in der Regel beliebig viele) den selben Hashwert besitzen. Die Hashtabelle besteht also aus m linearen Listen, wobei m die Anzahl der verschiedenen Hashwerte ist. Wird ein Element in die Hashtabelle eingetragen, wird es hinten an die Liste angehängt, die mit dem jeweiligen Hashwert beginnt.

Geschlossenes Hashing

Im Gegensatz zum offenen Hashing ist es hier nur möglich, höchstens einem Element einen bestimmten Hashwert zuzuweisen. Bildet die gewählte Hashfunktion mehrere Elemente auf ein und den selben Hashwert ab, versucht man mit Kollisionsstrategien, die Eindeutigkeit wiederherzustellen. Diese Kollisionsstrategien machen es allerdings unmöglich, ein Element einfach aus der Hashtabelle zu entfernen. Es muss durch einen speziellen "Deleted-Eintrag" ersetzt werden.

Kollisionsstrategien

Lineares Sondieren

c ist eine Konstante, wobei c und m teilerfremd sein sollten.

Mittel-Quadrat-Methode

x quadrieren und dann zum Beispiel die vorletzen beiden Stellen als Speicherposition benutzen.

Quadratisches Sondieren

Verfeinerung:

h(x,0) = h(x)

h(x,2j − 1) = (h(x) + j2) mod m

h(x,2j) = (h(x) − j2) mod m

Doppelhashing

  • Die beste in der Vorlesung vorgestellte Strategie zur Kollisionsbehandlung

Wichtiges

m sollte immer eine Primzahl sein

Persönliche Werkzeuge