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
Antwort
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.
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
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.
- 1. Konstruieren eine Hashtabelle/Hashfunktion
- 2. Auswählen eines guten Wörterbuchschlüssels
- 3. Auswählen eines eindeutigen Bezeichners in C für eine eingebettete Anwendung
- 4. Auswählen eines Namens für eine Open-Source-Bibliothek
- 5. Safari 4 Webseitenvorschau, benutzt welche Hashfunktion?
- 6. Zeile für Ebene eines Faktors auswählen
- 7. Android Auswählen eines bestimmten Dateispeicherorts
- 8. Auswählen eines Python-Webframeworks
- 9. eine string für cout
- 10. Auswählen eines InstallShield-Projekttyps
- 11. Auswählen eines Entwurfsmusters
- 12. Was ist der kanonische Weg, eine Hashfunktion für TEqualityComparer.Construct zu schreiben?
- 13. Auswählen Kinder eines Objekts
- 14. Ändern des Multiplikators einer Integritätsbedingung basierend auf der Größenklasse
- 15. Alle Kontrollkästchen eines Formulars auswählen
- 16. Einen String aus der Python-Enumeration auswählen
- 17. Auswählen nach Monat eines Felds
- 18. sql alle für nur eine Tabelle auswählen
- 19. Das richtige Design für eine Website auswählen?
- 20. Wie Rails Formular für eine Sammlung auswählen
- 21. Eine geeignete Tabellengröße für einen Hash auswählen
- 22. Auswählen eines Ordners mit msoFileDialogFolderPicker
- 23. Auswählen eines Schwimmers in MySQL
- 24. Auswählen eines bestimmten Elements innerhalb eines div?
- 25. MySql innerhalb eines anderen auswählen?
- 26. Auswählen einer Spalte eines Arrays
- 27. Auto Layout: Animieren von Änderungen an NSLayoutConstraint-Multiplikators
- 28. Auswählen eines Matplotlib-Backends für ein bestimmtes IPython-Profil
- 29. Auswählen der Größe eines System.Drawing.Icon?
- 30. Auswählen eines Elements in jQuery
Die folgende Seite enthält mehrere Implementierungen von allgemeinen Hashfunktionen, die effizient sind und minimale Kollisionen aufweisen: http://partow.net/programming/hashfunctions/index.html –