什么是最好的R树变种

时间:2016-01-03 22:25:55

标签: spatial-index r-tree

我最近在R-tree及其变体上阅读论文和代码:线性,二次,R * -tree,以及R树包装(STR)。在我看来,不同的技术在树创建,范围搜索和knn搜索的时间复杂性方面是不同的。 STR树似乎比其他人更好。然而,这些论文来自上个世纪。我怀疑近20年后,目前最好的R树变种是什么?

2 个答案:

答案 0 :(得分:4)

另一个更新的树是X-tree(也基于R-Tree)。

如果您正在寻找一般空间索引,而不仅仅是R-Trees,我可以推荐PH-Tree。它可以轻松地与R-Tree变体竞争矩形或范围查询,具有相当好的kNN查询支持(仅比21维度的Cover-Tree慢50%),它可以很好地扩展到大型和/或集群数据集,并且相当节省空间。最好的事情可能是它具有出色的更新性能,插入/移动/删除只需要比查找更长的时间。另一个优点是它不需要重新平衡,这意味着任何更新都不会超过2个节点。

缺点:

  • 低维度的实现相当复杂,但如果您对Java实现很好,here is mine
  • 高维度的实现不太复杂,但对于少于10个维度而言也很慢,here
  • 它主要更喜欢群集数据,但通过更均匀分布的数据,性能仍然可以。

答案 1 :(得分:2)

R * - 树被证明效果非常好并且仍然是最佳变体。

诸如STR之类的批量加载技术是更快(更好)构建初始树而不是逐个插入对象的绝佳补充。

通常,您需要一个带有STR批量加载的R * -tree。