【发布时间】:2019-02-04 18:08:09
【问题描述】:
给定一组点 D 和某个数字 K 我想找到 D 中的所有数字,使得 K 和任何找到的数字之间的距离小于或等于整数 N?
示例: 假设我们有 D={5,9,0,6,7} 和 K=8 和 N=1 那么结果应该是 {9,7}
我正在考虑使用 k-d 树或 VP 树,但据我所知(如果我错了,请纠正我)找到最近的邻居并且在我的示例中不关心 N。
【问题讨论】:
-
@dWinder 我只是在探索可能的方法,不包括蛮力搜索,所以没有时间复杂度限制
-
如果是这样,为什么不对集合 D 进行迭代并检查每个点?这可以在
O(n)上完成,这在大多数情况下都很好——我的意思是你搜索的方法是否低于O(n)?您可以预处理为排序 D 吗?这将给O(logn+answer size) -
@dWinder 假设我有非常大的数据集,我正在寻找更好的解决方案,比如 VP 树左右
-
预处理是可能的,但请允许我更好地解释我想要找到的内容:对于大型数据集,而不是迭代 DI 中的每个元素想要和算法消除大量不需要的元素与n进行比较
-
使用 VP 树将具有相同的时间复杂度(在
n*logn构建树并在logn搜索与简单数组相同)
标签: search tree computer-science nearest-neighbor