RB-Tree:搜索执行时间

时间:2014-02-05 18:52:20

标签: algorithm data-structures complexity-theory time-complexity red-black-tree

我必须使用RB树为“算法和数据结构”类项目实现间隔树,因此要求绘制插入和搜索T(n)。我知道这个函数必须用对数曲线上限,实际上这个图显示了这个,但我仍然对“奇怪的函数趋势”有所怀疑。我写了一个循环,插入一个随机区间,并在0 < N < 100000的每个值的同一步骤中搜索到树,这就是结果:

enter image description here

期待类似的趋势是正确的吗?

1 个答案:

答案 0 :(得分:1)

这是完全合理的预期。

插入到红色/黑色树中有两个组件:基线Θ(log n)组件,用于下降到叶子以插入元素,然后一些额外的“修复”工作来维护红色/黑色树不变量。事实证明,第二个组件是摊销的O(1),这意味着平均只需要一定量的工作就可以进行修复,但是不时的修复工作都会增加。

如果您已经看到红/黑树和2-3-4树之间的连接,这可能会更容易理解。通常只需将一个键添加到叶节点即可停止2-3-4树中的插入。每隔一段时间,您必须拆分一个4节点并将一个密钥传播到树中较高的节点,该节点通常会立即停止。但是,每隔一段时间,你就必须分割一个叶子,然后将一个节点分开,然后将一个密钥传播两层。在进行这样的插入时你会得到的典型模式是你会得到一系列快速操作,然后是一个慢一点,然后是一些更快的操作,然后是一个慢一点,然后一些更快的操作,那个比其他人更慢的等等。你似乎在你的情节中得到了这个,所以我认为没有什么可担心的。

希望这有帮助!