Ось проблема найближчого сусіда.
З огляду на реальні (дуже великий !) Плюс цільовий реальний , знайдіть та , SUM яких найближчий до . Ми дозволяємо розумну попередню обробку / індексацію (до ), але під час запиту (заданий ) результат повинен бути повернутий дуже швидко (наприклад, час).
(Простіший приклад: якщо ми хотіли, щоб єдиний єдиний був найближчим до , ми відсортуємо офлайн, , а потім зробимо двійковий пошук під час запиту, ).
Рішення, які не працюють:
1) Сортуйте офлайн, потім у час запиту почніть з обох кінців і перемістіть два покажчики всередину ( http://bit.ly/1eKHHDy ). Не добре, оскільки час запиту.
2) Сортуйте офлайн, а потім під час запиту візьміть кожну та виконайте двійковий пошук "приятеля", який допомагає їй підбити щось близьке до . Не добре, через час запиту .
3) Сортувати всі пари режимі офлайн, а потім виконати двійковий пошук. Не добре, тому що попередня обробка.
Дякую!
пс. Подальші узагальнення, необхідні для практики: (1) і щоб бути 50-мірними векторами, (2) "близько" бути векторною косинусою відстані, і (3) -найбільше найближчих пар - сума-сума, не просто 1-кращий.