Jenkins-Hash

Beispiele

A$="Das ist ein nicht so langer Text"
B$="Das ist ein nichl so langer Text"
A=JENKINS HASH(A$)
B=JENKINS HASH(B$)
DISP A " " B
: 3706166385,0 4026060997,0
Das Beispiel zeigt sehr deutlich, dass bereits ein minimaler Unterschied in den beiden Zeichenketten zu vollkommen unterschiedlichen Hash-Werten führt.

Referenz

JENKINS HASH( Zeichenkette$ )
Ein Hashwert ist eine Abbildung einer großen Eingabemenge (einer Zeichenkette) auf eine kleinere Zielmenge (z.B. einer Zahl). Hash-Werte werden in der Regel verwendet, um effizientere Suchen zu implementieren. Tatsächlich ist es sehr viel schneller möglich, Zahlenwerte an Stelle von z.B. Zeichenketten zu vergleichen. Hier bietet sich die Verwendung eines Hash-Wertes an.

Wenn nur einzelne Zeichenketten verglichen werden sollen, so bringt die Errechnung eines Hash-Wertes keinen Vorteil. Soll jedoch eine Vielzahl von Zeichenketten immer wieder nach einem bestimmten Muster durchsucht werden, so bietet es sich an, die Zeichenketten in Hash-Werte umzurechnen, und danach statt der Zeichenketten nur noch die numerischen Werte zu vergleichen.

Das grundsätzliche Problem bei der Verwendung von Hash-Werten ist, dass Zeichenketten auf eine einfache Zahl - in der Regel eine natürliche Zahl (also eine Integer) - reduziert werden. Es besteht also immer die Möglichkeit, dass unterschiedliche Zeichenketten den gleichen Hash-Wert liefern, sich somit also ggf. ein Fehltreffer ergibt. Diese sogenannten Kollisionen können nicht vermieden, sondern nur durch Verwendung einer sinnvollen Hash-Funktion minimiert werden. Der Jenkins Hash ist eine solche Hash-Funktion. Mit dieser Funktion wird die numerische Repräsentation der übergebenen Zeichenkette errechnet.

Siehe auch



Schatten