确定n维点之间的距离

时间:2009-10-04 04:38:28

标签: mysql performance distance multidimensional-array n-dimensional

我正在构建一个mySQL表,列出了n维的点,每个维度都被编入索引。鉴于n维系统中的任何一点,我希望能够按照它们与所选点的距离的顺序输出所有其他点。

一个简单的解决方案是使用毕达哥拉斯定理计算每个点的距离... sqrt(x ^ 2 + y ^ 2)= z。我一直在寻求一种更有效的方法。只需要大致的订单,所以我非常开放。

感谢。

-diddle

2 个答案:

答案 0 :(得分:1)

这类事情的常用技巧是考虑平方距离而不是消除平方根的实际距离,但是,如果我正确理解问题,则无需检索实际距离。指数。在这种情况下,您只需使用每个组件的绝对值之和。

答案 1 :(得分:0)

除了已经给出的内容之外,您还可以考虑“分组”您的分数 - 即(至少在心理上)在您的“地图”上绘制网格,并根据它们落入哪个方格来跟踪点。基本上,你从同一个方块中的点开始,然后是围绕所选点的正方形的“环”中的点,然后是下一个环向外的点,依此类推。根据您使用的网格大小,您可以根据需要进行精确或近似。当然,2D网格用于2D点 - 如果有更多维度,则必须增加网格的维度以匹配。