找到最接近其他点的点

时间:2012-04-25 05:48:48

标签: algorithm

给定具有x和y坐标的N个点(在2D中)。你必须找到一个点P(在N个给定点),使得从其他(N-1)点到P的距离之和最小。

代表。 N个点给定p1(x1,y1),p2(x2,y2)...... pN(xN,yN)。 我们在p1,p2 ...... PN中找到了一个点P,它与所有其他点的距离之和最小。

我使用蛮力方法,但我需要更好的方法。我也试过找到中位数,平均值等,但它并不适用于所有情况。

然后我想出了一个想法,我将X视为多边形的顶点并找到该多边形的质心,然后我将从Y最接近质心的位置选择一个点。但我不确定质心是否最小化了它到多边形顶点的距离之和,所以我不确定这是否是一个好方法?有没有解决这个问题的算法?

3 个答案:

答案 0 :(得分:2)

如果你的分数分布很好,并且如果有这么多的强力(计算从每个点到每个其他点的总距离)没有吸引力,下面的内容可能会给你一个足够好的答案。通过'很好地分布',我的意思是(大致)均匀地或(大致)随机地在多个位置没有标记的聚类。

在您的空间中创建一个统一的k*k网格,其中k是一个奇数。如果您的点分布很好,那么您正在寻找的点(可能)位于此网格的中心单元格中。对于网格中的所有其他单元格,计算每个单元格中的点数并近似每个单元格中点的平均位置(使用单元格中心或计算单元格中点的平均值(x,y))。 / p>

对于中心单元格中的每个点,计算到中心单元格中每个其他点的距离,以及到其他单元格中的点的加权平均距离。当然,这将是从其他单元格中的点到“平均”位置的距离,通过其他单元格中的点数加权。

您必须将k的较高值的准确性提高与增加的计算负荷相关联,并找出最适合您的点的方法。如果跨越细胞的点的分布远非均匀,那么这种方法可能不合适。

这种方法在大规模模拟中得到广泛应用,其中点具有在距离上操作的属性,例如重力和电荷。是否适合您的需求,我不知道。

答案 1 :(得分:1)

考虑的要点称为几何中位数

质心或质心,与几何中位数类似地定义为最小化每个样本距离的平方和,可以通过一个简单的公式找到 - 它的坐标是样本坐标的平均值但是没有这样的公式对于几何中位数是已知的,并且已经表明,通常不存在明确的公式,也不存在仅涉及算术运算和第k个根的精确算法。

答案 2 :(得分:0)

我不确定我是否理解您的问题,但是当您计算最小生成树时,从任意点到树中任何其他点的总和是最小的。