2011-09-29 6 views
2

Un filtre Bloom nécessite k fonctions de hachage, qui renvoient une valeur comprise entre 0 et m (m est la longueur du tableau de bits). Je dois implémenter un tel filtre bloom et j'ai déjà lu quelques articles théoriques sur ces filtres (comment ils fonctionnent, combien de fonctions de hachage vous avez besoin, comment se comporte l'erreur etc.)Bloom Filter: Comment trouver des fonctions de hachage k?

Maintenant j'ai deux questions sur les fonctions de hachage :

  • Comment trouver les fonctions de hachage k - quelles fonctions de hachage dois-je utiliser?
  • Comment trouver les fonctions de hachage qui retournent une valeur entre 0 et m? Alternativement, comment puis-je mapper la sortie d'une fonction de hachage à la plage 0-m?

Répondre

0

Vous pouvez obtenir un tas de valeurs de hachage à un moment donné avec une fonction de hachage cryptographique comme MD5 ou SHA. Diviser la valeur de hachage cryptographique en N bits de m bits, et les traiter comme vous le feriez en sortie de N fonctions de hachage normales.

+0

Fractionnement le résultat semble être un bon conseil, mais hash cryptographique ne sont pas considérés comme des choix judicieux pour les structures de données déclenchée par hachage, car ils sont plus sur ce qui rend difficile récupérer l'entrée plutôt que de bien fonctionner. –

0
  • Les caractéristiques des fonctions de hachage k qui doivent être utilisées sont
    donné sur la page wikipedia: Bloom Filter et aller dans le
    Description de l'algorithme où il est dit - L'exigence de la conception k différent hachage indépendant fonctions ...

  • Pour de bons tutoriels sur le hachage universel: Nice MIT lecture

0

U pourrait utiliser toutes les fonctions de hachage .... il existe de nombreuses fonctions de hachage simple hash disponibles dans le réseau. Référez http://en.wikipedia.org/wiki/List_of_hash_functions

Utilisez une fonction de hachage pour obtenir une valeur de hachage et, pour l'obtenir dans la plage de 0 m, utilisez l'opérateur de module (%). i.e bitlocation = hachage% m;

il pourrait ne pas être efficace, mais il fonctionne ...

Questions connexes