Эффективно найти двоичные строки с низким расстоянием Хэмминга в большом наборе



:



учитывая большой (~100 миллионов) список беззнаковых 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.

548   0  

Comments

    Ничего не найдено.