R树和R*树的范围搜索复杂度

Posted

技术标签:

【中文标题】R树和R*树的范围搜索复杂度【英文标题】:range search complexity of R tree and R* tree 【发布时间】:2016-03-11 00:49:58 【问题描述】:

R 树和 R* 树的范围搜索复杂度是多少?我了解范围搜索的过程:类似于 DFS 搜索,它访问每个节点,如果节点的边界框与目标范围相交,则将该节点包含在结果集中。更准确地说,我们还需要考虑它使用的分支定界策略:如果父节点不与目标相交,那么我们就不会访问它的子节点。那么复杂度应该小于 O(n),其中 n 是节点的数量。给定叶子(或数据点)的数量,我真的不知道如何计算节点数。 有人可以在这里给我一个解释吗?谢谢你。

【问题讨论】:

【参考方案1】:

显然,如果您的范围在每个维度上都是 [-∞;∞],那么最坏的情况必须至少为 O(n)。由于树的原因,它可能与 O(n log n) 一样糟糕。

假设答案是单个条目,平均情况可能是 O(log n) - 只需要遵循几条穿过树的路径(如果重叠足够少的话)。

它记录到您的页面大小的基础。所以它通常不会超过 5,因为你永远不会想要超过 1000^5=10^15 个对象的树。

出于所有实际目的,假设运行时复杂度只是答案集大小 O(s)。选择 2% 的数据所需的时间是 1% 的两倍。

【讨论】:

谢谢。这很有意义。

以上是关于R树和R*树的范围搜索复杂度的主要内容,如果未能解决你的问题,请参考以下文章

查找有序表折半查找判定树二叉排序树3阶B-树

[LeetCode] 938. Range Sum of BST

查找树(搜索树)

JAVA数据结构之红-黑树

LEETCODE - 938. 二叉搜索树的范围和

B树与B+树的区别