【发布时间】:2013-12-13 05:14:54
【问题描述】:
我有一组点,需要知道哪个点与任何其他点的欧几里得距离最远。
为了得到这个点,我把我所有点的每一个距离,做一个平均,取最大的平均作为最远点。
有没有更快的方法来找出那个点?
【问题讨论】:
-
您是否已经确定了“孤立”的定义并想要一个更快的算法?还是您在问“最孤立”是否有更好/更快的定义?
-
为了提高性能:确保2点之间的距离计算一次,因为dist(p1,p2) = dist(p2,p1)
-
您应该在问题中澄清这一点。听起来您想要平均到 所有 点的距离以测量“隔离”,这与“最远最近的邻居”不同。
-
也许建立一个你的点的k-d树。您可以使用它来找到每个点的最近邻居,并取所有这些中最大的。你应该得到一个 O(log n) 而不是 O(n*n) 算法。
-
哦,另外,如果你的意思是欧几里得距离(作为距离的度量),使用距离的平方就足够了。
标签: algorithm computational-geometry