Dado un conjunto de varios millones de puntos con coordenadas x, y, ¿cuál es el algoritmo de elección para encontrar rápidamente los primeros 1000 puntos más cercanos de una ubicación? "Rápidamente" aquí significa aproximadamente 100 ms en una computadora hogareña.Algoritmo para encontrar puntos cercanos?
Fuerza bruta significaría hacer millones de multiplicaciones y luego ordenarlas. Si bien una simple aplicación de Python podría hacer eso en menos de un minuto, aún es demasiado larga para una aplicación interactiva.
Se conocerá el cuadro delimitador de los puntos, por lo que sería posible dividir el espacio en una cuadrícula simple. Sin embargo, los puntos se distribuyen de forma desigual, así que sospecho que la mayoría de los cuadros de cuadrícula estarán vacíos y, de repente, algunos de ellos contendrán una gran parte de los puntos.
Editar: No tiene que ser exacto, en realidad puede ser bastante inexacto. No sería un gran problema si los primeros 1000 son solo algunos puntos aleatorios de los 2000 principales, por ejemplo.
Editar: El conjunto de puntos rara vez cambia.
¿Tiene que ser exacto o también está bien si, por ejemplo? 900 de 1000 seleccionados se encuentran entre los 1000 más cercanos? – TonJ
¿Se ha solucionado el conjunto de puntos? ¿Buscarás los 1000 puntos más cercanos para varias ubicaciones diferentes, antes de que cambie el conjunto de puntos? –