Sí, de hecho, no hay atajos. Si quieres todas las distancias tienes que calcularlas todas.
Sin embargo, si su pregunta fue provocada por un problema real del mundo real, puede estar satisfecho con las soluciones aproximadas.
Si es así, aquí hay algunas ideas para ayudarlo:
- Si solo está comparando distancias, en realidad no necesita la distancia en sí, puede usar la distancia al cuadrado y evitar raíces cuadradas innecesarias y costosas.
- La distancia de Manhattan es menos precisa pero más rápida que la distancia euclidiana.
- Si solo necesita encontrar N puntos más cercanos, considere usar algo como un árbol kd, quadtree o árbol BSP.
- Si sus partículas tienen una interacción de corto alcance entre sí, como en una simulación de fluidos como la hidrodinámica de partículas suavizadas (SPH), puede usar una cuadrícula uniforme de cubos para acelerar los cálculos.
- Otra idea, al colocar los puntos en una cuadrícula uniforme, puede calcular las distancias reales a los puntos en los cubos cercanos, pero simplemente use la distancia al centro del cubo como una medida aproximada para todos los puntos en los cubos más distantes.
- Y finalmente, es posible que pueda usar la GPU para acelerar mucho esto.