Есть ли что-то быстрее BK-Tree?

Я собираюсь хранить много данных для поиска по ним с помощью «расстояния хемминга».


Объем ~1 000 000. Решил использовать BK дерево, но при том-же миллионе поиск получается долгий, примерно 10-20 секунд.


Само дерево: dumpz.org/192335/ (Cython)


Может есть другие, более быстрые алгоритмы?
  • Вопрос задан
  • 3952 просмотра
Решения вопроса 1
Mrrl
@Mrrl
Заводчик кардиганов
Какого порядка расстояния, которые предполагаются в запросе?
Я бы взял обычное бинарное дерево (ветвление по значению какого-нибудь бита; в каждом узле указано, по какому биту ветвиться). Тогда поиск(дерево,d)=поиск(поддерево с правильным значением бита,d)+поиск(поддерево с неправильным значением бита,d-1).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AxisPod
@AxisPod
А к примеру воспользоваться специализированными средствами, например sphinx?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы