2008-08-19 3 views
12

Haben Sie einen Rat/Regeln zur Auswahl eines Multiplikators für die Verwendung in einer (multiplikativen) Hash-Funktion? Die Funktion berechnet den Hash-Wert einer Zeichenfolge.Auswählen eines Multiplikators für eine (String-) Hash-Funktion

+24

Die folgende Seite enthält mehrere Implementierungen von allgemeinen Hashfunktionen, die effizient sind und minimale Kollisionen aufweisen: http://partow.net/programming/hashfunctions/index.html –

Antwort

3

Sie möchten etwas verwenden, das relativ zu der Größe Ihres Satzes prim ist. Auf diese Weise enden Sie nicht mit den gleichen Zahlen, die Sie gerade versucht haben.

1

Historisch scheint 33 eine beliebte Wahl zu sein, und es neigt dazu, ziemlich gut zu funktionieren. Niemand weiß warum, obwohl. Für weitere Details, look here

2

Ich hatte kürzlich eine interessante Diskussion mit einem Kollegen über Hash-Funktion. Unsere Schlussfolgerungen waren wie folgt:

Wenn Sie wirklich eine gute Hash-Funktion schreiben müssen, die Kollisionen mehr als die Standardimplementierungen in den Standardsprachen minimiert, benötigen Sie einen höheren Abschluss in Mathematik.

Wenn Sie Anwendungen schreiben, bei denen eine benutzerdefinierte Hash-Funktion die Leistung Ihrer Anwendung merklich verbessert, sind Sie Google und Sie haben viele Math PhDs, um die Arbeit zu erledigen.

Entschuldigung, um Ihre Frage nicht direkt zu beantworten, aber das Endergebnis ist, dass es wirklich keine Notwendigkeit gibt, Ihre eigene Hash-Funktion für String zu schreiben. Mit welcher Sprache arbeitest du? Ich könnte mir vorstellen, dass es einen einfachen Weg gibt, einen "gut genug" Hash Code zu berechnen.

Verwandte Themen