是否有可能在子二次时间内找到最接近所有点的点?

时间:2017-01-27 23:05:55

标签: algorithm distance

算法问题。

输入:

  • 数据点列表X
  • 数据点dist(x,y)的度量函数,需要O(1)时间来评估和服从三角不等式

是否存在可以返回数据点向量Y的算法,以便Y[i]是次要时间内XX[i]中的最近点?

显然这在O(n ^ 2)中是可能的,因为你可以直接检查每个点。我想知道是否有可能利用三角不等式来改善这一点。我也会对具有可证明边界的近似算法感兴趣(例如Y[i]之类的距离不超过X[i]的距离(1 + log(n))乘以最小值。

1 个答案:

答案 0 :(得分:3)

没有这样的算法。考虑一个度量,其中除了一对点之外的所有点都在距离1处。如果没有查询其特定距离oracle条目,则无法找到该对。在最坏的情况下,这需要Omega(n ^ 2)查询。

Cover trees可用于解决确切的邻居问题。时间限制取决于度量的所谓倍增维度