algorithm - 给定一个点列表,如何确定哪些点彼此之间的距离在一定范围内

标签 algorithm data-structures

给出 2d 点的列表和最大距离 d,有什么比 O(n^2) 更好的方法来查找每个点位于 d 范围内的点。我不需要解决方案,只需要一些起始想法。

最佳答案

使用kd树等空间索引结构,可以获得O(n log n)

编辑

啊,我想我误解了你的评论。如果您在查询中设置 n 个最近邻,在最坏的情况下,单个搜索成本为 O (n log n),但您可以在每个找到的最近点上放置一个标志,以指示它们是否已经属于特定簇。然后您不必再次对这些点执行最近邻查询。所以最终的复杂度仍然是O(n log n)。以下是有关此类范围搜索的更多详细信息 http://www.cs.utah.edu/~lifeifei/cs6931/kdtree.pdf .

我在这里假设期望的行为是从考虑中删除一个点(如果它已经属于一个集群)。也许您可以澄清一下问题说明?

关于algorithm - 给定一个点列表,如何确定哪些点彼此之间的距离在一定范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24481809/

相关文章:

javascript - 灵活的算法来计算所有可能场景的可能性

algorithm - 如何用多个变量简化 Big O 代数

python - 分而治之。查找数组中的大多数元素

data-structures - 程序范围的数据结构?

scala - Scala 的 collection.mutable.PriorityQueue 线程安全吗?

python - 存储/检索数据结构

algorithm - BFS 算法 Introduction to algorithms book by cormen,leiserson etal

c - 自下而上集生成和排序

python - 编辑 .txt 文件 - 算法不工作

java - RLE 风格压缩的数据结构