问题:
给定一个大的(约1亿)无符号32位整数列表、一个无符号32位整数输入值和一个最大的 汉明距离,返回输入值指定汉明距离内的所有列表成员。
实际的数据结构保持列表是开放的,性能要求决定了内存解决方案,建立数据结构的成本是次要的,低成本查询数据结构是关键。
例如:
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.
到目前为止我的想法是:
对于汉明距离为0的退化情况,只需使用排序列表并对特定的输入值进行二进制搜索。
如果汉明距离只有1,我可以翻转原始输入中的每个位,然后重复上面的32次。
如何有效地(不扫描整个列表)发现汉明距离 > 1的列表成员。