Вот проблема ближайшего соседа.
Учитывая реалы (очень большой !), плюс цель реальная , найти а также чья сумма ближе всего , Мы разрешаем разумную предварительную обработку / индексацию (вплоть до ), но во время запроса ), результат должен быть возвращен очень быстро (например, время).
(Более простой пример: если бы мы только хотели ОДИН это ближе всего к мы бы отсортировали не в сети, затем выполните бинарный поиск во время запроса, ).
Решения, которые не работают:
1) Сортировка в автономном режиме, затем во время запроса начните с обоих концов и переместите два указателя внутрь ( http://bit.ly/1eKHHDy ). Не хорошо, из-за время запроса.
2) Сортировка в автономном режиме, а затем во время запроса, принять каждый и выполнить бинарный поиск для «приятеля», который помогает ему суммировать что-то близкое к , Не хорошо, из-за время запроса.
3) Сортировка всех пар в автономном режиме, а затем сделать бинарный поиск. Не хорошо, из-за Предварительная обработка.
Спасибо!
пс. Дальнейшие обобщения, необходимые для практики: (1) а также быть 50-мерными векторами, (2) "близко", чтобы быть векторным косинусным расстоянием, и (3) -бест ближайших пар-та-сумма, а не только 1-лучший.