【发布时间】:2014-12-01 23:20:40
【问题描述】:
给定d维空间中的n个点,有几种数据结构,如Kd-Trees、Quadtrees等来索引这些点。在这些数据结构上,可以为给定输入点周围的最近邻查询实现直接算法。 是否有书、论文、调查……比较不同数据结构上最近邻查询的理论(大多数预期)运行时间? 我正在查看的数据由相当小的点云组成,因此它们都可以在主内存中进行处理。为了简单起见,我假设数据是均匀分布的。也就是说,我对现实世界的表现不感兴趣,而是对理论结果感兴趣
【问题讨论】:
-
有几篇有趣的文章,一篇在 sci-kit learn 中,scikit-learn.org/stable/modules/… 并参见 en.wikipedia.org/wiki/Ball_tree 文章中的参考资料。 Kd 树对于高维数据可能表现不佳,但通常对于二维数据非常好。
-
我已经在 2d 中实现了 kd 树,一个观察结果是,如果您在规则网格上有点,那么当您搜索时算法会失败,因为您无法决定左/右、上/下当点相同时。我首先通过在每个点上添加一个小的随机数来解决它。我还怀疑,虽然随机间隔的网格假设可能是一个很好的起点,但您将无法从这一点清晰地推断到现实世界的点云,这很可能是非常随机的,这就是不同的数据结构和索引方法真正发挥作用。
标签: algorithm spatial nearest-neighbor spatial-index