Zum Hauptinhalt springen

Schlüsseltransformationen (Hashing)

Unter Schlüsseltransformationen (Hashing) versteht man die Transformation einer großen Datenmenge in eine kleinere. Die größere Datenmenge wird dabei als Schlüssel, die kleinere als Hashcode bezeichnet. Die Transformation erfolgt über eine sogenannte Hashfunktion (auch Streuwertfunktion). Wichtig dabei ist, dass der Hashcode nur vom Zustand des Schlüssels abhängen darf.

Hashtabellen

Hashtabellen sind spezielle Datenstrukturen, die für den schnellen Zugriff konzipiert wurden. Mit Hilfe einer Hashfunktion wird der Index berechnet, an der ein Schlüssel gespeichert wird. Bei Hashtabellen soll durch das Hashing eine gleichmäßige Streuung der Einträge in der Tabelle erreicht werden. Aus diesem Grund werden Hashtabellen auch als Streuwerttabellen bezeichnet.

IndexSchlüsselHashcode
0Butter630
1
2Brot407
3Milch493
4Eier389

Hashfunktionen

Die Divisionsrest-Methode stellt eine einfache und schnelle Hashfunktion dar. Die Berechnung des Index erfolgt dabei gemäß der Formel ℎ(𝑘) = 𝑘 𝑚𝑜𝑑 𝑚.

SchlüsselHashcodeIndex
Brot407407 𝑚𝑜𝑑 5 = 2
Butter630630 𝑚𝑜𝑑 5 = 0
Milch493493 𝑚𝑜𝑑 5 = 3
Eier389389 𝑚𝑜𝑑 5 = 4
Legende

ℎ(𝑘) = Index, 𝑘 = Hashcode, 𝑚𝑜𝑑 = Modulo-Operation, 𝑚 = Tabellengröße

Kollisionen

Werden zu unterschiedlichen Schlüsseln dieselben Indizes ermittelt, entstehen dadurch sogenannte Kollisionen. Um Kollisionen bestmöglichen zu vermeiden, muss eine geeignete Tabellengröße sowie eine geeignete Hashfunktion gewählt werden. Zur Auflösung von Kollisionen gibt es verschiedene Möglichkeiten.

Beim geschlossenen Hashing mit offener Adressierung wird bei einer Kollision über unterschiedliche Verfahren eine freie Stelle in der Hashtabelle gesucht: Beim linearen Sondieren wird mit festen Intervallschritten nach einer freien Stelle gesucht, beim quadratischen Sondieren wird der Intervallschritt nach jedem erfolglosen Versuch quadriert und beim doppelten Hashing wird der Intervallschritt mit Hilfe einer zusätzlichen Hashfunktion berechnet.

IndexSchlüssel
0Eier
1Brot
2
3Butter
4Milch