Trouvez rapidement les chaînes binaires, avec une faible distance de Hamming dans le grand ensemble

Problème:

Donné une grande (~100 m) liste des entiers 32 bits non signés, un entier 32 bits non signé valeur d'entrée, et un maximum La Distance De Hamming, le retour de tous les membres de la liste qui sont au sein de la Distance de Hamming de la valeur d'entrée.

Réelle structure de données pour contenir la liste est ouverte, les exigences de performance de dicter une solution de mémoire, le coût pour construire la structure de données est secondaire, à faible coût, à la requête de la structure des données est critique.

Exemple:

For a maximum Hamming Distance of 1 (values typically will be quite small)

And input: 
00001000100000000000000001111101

The values:
01001000100000000000000001111101 
00001000100000000010000001111101 

should match because there is only 1 position in which the bits are different.

11001000100000000010000001111101

should not match because 3 bit positions are different.

Mes pensées jusqu'à présent:

Pour le cas dégénéré de Hamming Distance de 0, il suffit d'utiliser une liste triée et faire une recherche binaire pour la valeur d'entrée.

Si la Distance de Hamming-ci ne serait jamais 1, j'ai pu flip chaque bit de l'entrée d'origine et répétez l'32 fois.

Comment puis-je efficacement (sans la numérisation de l'ensemble de la liste) découvrir les membres de la liste avec une Distance de Hamming > 1.

  • Comment à propos de la mutation de l'critères attendus de hamming distance, de façon récurrente fonction peut le faire. La prochaine étape sera d'obtenir l'union de deux personnes de la liste?.
  • Voici un article récent sur ce problème: Grande échelle de Hamming distance le traitement de la requête.
  • Vous avez dit "Pour un maximum de Distance de Hamming de 1 (les valeurs sont en général sera assez faible)". Pouvez-vous dire ce "tout petit" signifiait?
  • Aussi, ont été les ~100 millions de numéros uniques, ou il ya des doublons?
  • Il n'y a pas de doublons. La plus grande distance de l'intérêt serait 4-5.
InformationsquelleAutor Eric J. | 2011-06-17