Дано: Огромный набор N-мерных векторов - {V1, V2, V3, ..., Vm} Пример вектора:
[72, 100, 34, 45, 87, 123, 99, 32] // N = 8
Входные данные: В качестве входных данных нам дается другой вектор с тем же размером, что и набор, описанный выше. Назовем этот вектор X.
Цель: Найти наиболее похожие (или верхние K схожих векторов, K относительно мала) из заданного набора для вектора X. Сходство определяется как https://en.wikipedia.org/wiki/Euclidean_distance.
Я ищу подход, который может дать мне сложность O (log M), где M - это число векторов в наборе.
Заметим, что N может быть относительно большим (например, 100, 500, 1000). M огромен (как несколько миллионов или миллиардов).
Я смотрю в https://en.wikipedia.org/wiki/Locality-sensitive_hashing.