Найти ближайшие вектора(точки)

148
02 января 2019, 08:10

Дано n-мерное векторное пространство. В пространстве имеются вектора напр.

[ 0.02182626 -0.03014402 -0.06414173 -0.01990378  0.00629869...]

Как найти некоторое заданное число ближайших векторов(точек) к выбранному при большом количестве векторов(1кк+) и n>1000.

Банальнейшим решением является перебор расстояний до всех векторов, по формуле расстояния между точками, и нахождение минимального значения. Формула для расстояния между точками в n-мерном пространстве:

sqrt((a1 - b1)2 + (a2 - b2)2 + ... + (an - bn)2), где sqrt - квадратный корень, a и b - координаты точек, 2 -ка после скобок- возведение в квадрат

Такое решение, вероятно, является медленным. Возможно кто то подскажет решение на одном из указанных языков. Важна, именно, скорость нахождения ближайших соседей.

Есть ли теорема указывающая на путь нахождения ближайших точек быстрее всего(с наименьшими затратами ресурсов)?

READ ALSO
Не получается добавить товар в админке(voyager) laravel

Не получается добавить товар в админке(voyager) laravel

Вытащил данные с базы данных и установил voyagerПосле установки зашел в админ панель и настроил bread

169
Как завершить сессию в Yii2?

Как завершить сессию в Yii2?

Как завершить сессию для администратора в yii2, чтобы его попросило заново вводить пароль? Я сменил пароль, но если до этого вошли - админ остается...

163
Как правильно написать rule для RBAC?

Как правильно написать rule для RBAC?

yii2-advanced, использую RBAC, необходимо настроить доступ групп пользователей к редактированию групп продуктов У аккаунта каждого пользователя...

181
Диапазон символов в регулярном выражении

Диапазон символов в регулярном выражении

Какие символы включает регулярное выражение [а-яА-Я]+? Известно, что оно не включает символы ё и ъИ для того, чтобы охватить весь алфавит русского...

196