RTree 与 kd-trees 的性能

Our*_*ros 1 algorithm spatial kdtree nearest-neighbor r-tree

我在 5 维空间中有大约 10 K 点。我们可以假设点在空间 (0,0,0,0,0) 和 (100,100,100,100,100) 中随机分布。显然,整个数据集可以很容易地驻留在内存中。

我想知道 k 最近邻的哪种算法运行得更快,kd-tree 或 RTree。

虽然我对这两种算法有一些非常高级的想法,但我不确定哪个会运行得更快,以及为什么。如果有的话,我愿意探索其他算法,这些算法可以快速运行。如果可能,请说明为什么算法可以运行得更快。

Ano*_*sse 5

这取决于各种参数。最重要的是您实现这些算法的能力。

我个人发现批量加载的 R*-trees 对于大数据更快,可能是因为它们有更好的扇出。批量加载的 R 树是一个更公平的比较,因为 kd 树通常是批量加载的(实际上,它们根本不支持增量操作)。

对于小数据,kd-trees 可能会更快,而且它们更容易实现。

对于其他事情,请参考这个较早的问题/答案:

/sf/answers/777662721/