【问题标题】:Performance of RTree vs kd-treesRTree 与 kd-trees 的性能
【发布时间】:2014-01-03 12:13:03
【问题描述】:

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

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

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

【问题讨论】:

  • 致反对的选民。我认为这个问题提出的很好。当涉及到加速结构时,它们的理论逻辑和实际性能往往会大相径庭。事实上,R 树的推动力是 Guttmann 需要一种加速结构,该结构在随机读取速度较慢的磁盘上表现良好。这个概念也可以扩展到缓存。

标签: algorithm spatial nearest-neighbor kdtree r-tree


【解决方案1】:

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

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

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

其他方面,请参考这个较早的问题/答案:

https://stackoverflow.com/a/11109467/1060350

【讨论】:

    猜你喜欢
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多