algorithm - 是否可以找到次二次时间所有点的最近点?

标签 algorithm distance

一道算法题。

输入:

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

是否有一种算法可以返回数据点向量 Y 使得 Y[i]X 中最接近的点X[i] 次二次时间?

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

最佳答案

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

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

关于algorithm - 是否可以找到次二次时间所有点的最近点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41904461/

相关文章:

algorithm - 伪代码解释器?

c++ - 使用多重映射算法 (std::minmax_element) 在成对的多重映射中找到最大/最小键 <Class object, enum>?

javascript - 将 CSS 样式(或类)添加到组件中 React 对象数组的每个元素

mysql - 哪一个运行起来更安全/更好?

c++ - 计算距离 : method "must return a value"?

r - 使用 R 中的 Ramps 包指定线性混合模型的相关结构

algorithm - 两个 n 位数字相乘的最快算法是什么?

python - 反向传播算法卡在多层感知器中

r - 编写一个函数,根据数据帧的列值在矩阵中查找元素

Android:如何记录我的行进距离?