Aquí hay un problema vecino más cercano.
Dados los reales (¡muy grande !), Más el objetivo real , encuentre y cuyo SUM sea más cercano a . Permitimos un preprocesamiento / indexación razonable de (hastap a i a j p a 1 , … , a n O ( n log n ) p O ( log n ) ), pero en el momento de la consulta (dado ), el resultado debe devolverse muy rápido (por ejemplo, tiempo).
(Ejemplo más simple: si solo quisiéramos el SINGLE que está más cerca de , clasificaríamos fuera de línea, p a 1 , … , a n O ( n log n ) O ( log n ) , luego haría una búsqueda binaria en el momento de la consulta, )
Soluciones que no funcionan:
1) Ordene fuera de línea, luego en el momento de la consulta, comience desde ambos extremos y mueva dos punteros hacia adentro ( http://bit.ly/1eKHHDy O ( n ) ). No es bueno, debido al tiempo de consulta .
2) Ordene fuera de línea, luego en el momento de la consulta, tome cada y realice una búsqueda binaria para un "amigo" que lo ayude a sumar algo cercano aa i p O ( n log n ) . No es bueno, debido al tiempo de consulta .
3) Ordenar todos los paresO ( n 2 ) sin conexión, luego realice una búsqueda binaria. No es bueno, debido al preprocesamiento de .
¡Gracias!
PD. Otras generalizaciones necesarios para la práctica: (1) y para ser 50-dimensionales vectores, (2) "cerca" de ser vector de distancia coseno, y (3) -mejor más cercano pares-que-suma, no solo 1 mejor. p k