Je recherche une fonction de hachage sur les ensembles H (.) Et une relation R (.,.) Telle que si A est inclus dans B alors R (H (A), H (B)). Bien sûr, R (.,.) Doit être facile à vérifier (temps constant), et H (A) doit être calculé en temps linéaire.
Un exemple de H et R est:
- , où k est un entier fixe et h (x) une fonction de hachage sur des entiers.
- R (H (A), H (B)) = ((H (A) & H (B)) == H (A))
Y a-t-il d'autres bons exemples? (bien est difficile à définir mais intuitivement si R (H (A), H (B)) alors whp A est inclus dans B).
Modification ultérieure :
- Je recherche une famille de fonctions de hachage. J'ai beaucoup d'ensembles; 3 à 8 éléments dans chaque ensemble; 90% d'entre eux ont 3 ou 4 éléments. L'exemple de fonction de hachage que j'ai donné n'est pas très bien distribué dans ce cas.
- Le nombre de bits de H (.) (Dans mon exemple, k) qui devrait être petit (c'est-à-dire H (.) Doit tenir dans un entier ou long).
- Une belle propriété de R est que si H (.) A k bits, alors R (.,.) Est vrai pour les paires (3 ^ k - 2 ^ k) / 4 ^ k, c'est-à-dire. pour très peu de paires.
- Les filtres Bloom sont particulièrement bons pour les grands ensembles. J'ai essayé d'utiliser BF pour ce problème, mais les résultats optimaux étaient avec une seule fonction.
(crosspost de stackoverflow , je n'ai pas reçu une réponse assez bonne)