Pregunta

Estoy construyendo una tabla de MySQL listado de puntos en n dimensiones, cada dimensión se indexa. Dado cualquier punto en el sistema n-dimensional, me gustaría ser capaz de salida de todos los otros puntos en el orden de su distancia desde el punto elegido.

Una solución sencilla sería calcular distancias desde cada punto usando el teorema de Pitágoras ... sqrt (x ^ 2 + y ^ 2) = z. He estado buscando un método más eficiente. Sólo se necesita un orden aproximado, así que estoy muy abierto de mente.

Gracias.

-diddle

¿Fue útil?

Solución

Además de lo que se ha dado, se podría también considerar "binning" sus puntos - es decir (al menos mentalmente) trazar una cuadrícula sobre el "mapa", y realizar un seguimiento de puntos en función de qué cuadrado que caen en. Básicamente, se empieza con los puntos en la misma plaza, a continuación, los que están en un "anillo" que rodea la plaza del punto elegido, entonces el siguiente anillo exterior, y así sucesivamente. Dependiendo del tamaño de la cuadrícula que utilice, usted puede hacer esto de forma tan precisa y aproximada a su gusto. Por supuesto, una rejilla 2D es para puntos 2D -. Si tiene más dimensiones, que tendrá que aumentar la dimensionalidad de la red para que coincida

Otros consejos

Una técnica común para este tipo de cosas es tener en cuenta la distancia al cuadrado en lugar de la distancia real que elimina la raíz cuadrada, pero, si yo soy la comprensión de la pregunta correctamente, no es necesario para recuperar la distancia real de su índice. En ese caso es posible que utilices la suma del valor absoluto de cada componente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top