В настоящее время я работаю над приложением, где у меня есть большое количество хеш-значений (строк).
Когда задано хэш-значение запроса (строка), процесс поиска проходит через эти строки и возвращает строки, где Hamming Distance между строкой запроса и строкой результата меньше заданного порогового значения.Поиск строк, где расстояние Хэмминга меньше порогового значения
- Хеш-значения не двоичные строки. например "
1000302014771944008
" - Все значения хэша (строки) имеют одинаковую фиксированную длину.
- Пороговые значения не являются небольшими (обычно
t>25
) и могут варьироваться.
Я хочу реализовать этот процесс поиска, используя эффективный алгоритм, а не используя метод грубой силы.
Я прочитал некоторые исследовательские работы (например, this & this), но они предназначены для двоичных строк или для низких пороговых значений. Я также попробовал Locality-sensitive hashing, но реализации, которые я нашел, были сосредоточены на двоичных строках.
Существуют ли какие-либо алгоритмы или структуры данных для решения этой проблемы?
Любые предложения также приветствуются. Заранее спасибо.
.
Дополнительная информация
Расстояние Хемминга между небинарных строк
string 1: 0014479902266110001131133
string 2: 0014409902226110001111133
-------------------------
1 1 1 = 3 <-- hamming distance
Считается перебором подход
- вычислить расстояние Хэмминга между первой хэш строки а строка хеша запроса.
- , если расстояние Хэмминга меньше порога, затем добавьте строку хеша в список результатов.
- повторите шаги 1 и 2 для всех хэш-строк.
В среднем, какая часть данных возвращается запросом? То есть, как долго ваши хэш-строки и насколько велики ваши пороги, относительно говоря? –
Отсутствие этого вопроса: 1) точное определение расстояния Хэмминга применительно к недвоичным строкам; 2) описание или пример подхода грубой силы, который вы уже рассмотрели. – user3386109
@Timothy Shields Нет ограничений на количество результатов запроса. Пример: длина хэш-строки равна 250 и порог между 25-75 –