Algorithm 八字树的摊销分析

Algorithm 八字树的摊销分析,algorithm,data-structures,big-o,analysis,amortized-analysis,Algorithm,Data Structures,Big O,Analysis,Amortized Analysis,Splay树的插入/删除可以通过不同的方式完成。一种流行的方法是插入键并将其展开到根。但我也读过一种不同的方法,想法是将它拆分成两棵树,这样左边的树就有了insert键。另一种删除方法也是如此,将要删除的键展开到根目录,然后合并左树和右树 但按照我的理解 如果插入顺序是递增的,则拆分树将始终导致右树为空,从而在每次按此顺序插入任何键时增加不平衡 删除也是一样,如果我们总是删除树中的最大元素,在合并操作中,右边的子树将为空。这是一个巨大的不平衡 我的问题是,在这个替代过程中,摊销运行时间是否也

Splay树的插入/删除可以通过不同的方式完成。一种流行的方法是插入键并将其展开到根。但我也读过一种不同的方法,想法是将它拆分成两棵树,这样左边的树就有了insert键。另一种删除方法也是如此,将要删除的键展开到根目录,然后合并左树和右树

但按照我的理解

  • 如果插入顺序是递增的,则拆分树将始终导致右树为空,从而在每次按此顺序插入任何键时增加不平衡
  • 删除也是一样,如果我们总是删除树中的最大元素,在合并操作中,右边的子树将为空。这是一个巨大的不平衡

我的问题是,在这个替代过程中,摊销运行时间是否也保持
O(logN)
?如果是,怎么做?我试着在网上搜索,但找不到任何答案。任何一种直觉都会非常有用:)

是的,摊销时间仍然是O(log(n))

直觉是splay tree在单个操作的成本和不平衡之间的相互作用。诚然,你可以看手术并说“这很昂贵”或者“这会导致很多不平衡”,但是你需要同时考虑这两件事。 使用第一个示例,插入确实会导致巨大的不平衡,但它们中的每一个都是O(1)。在m个这样的操作结束时,树是不平衡的,但在这一点上,成本仅为O(m)。接下来,第一次不同的操作可能会非常昂贵,但也会减少不平衡


这一系列删除的直觉是相似的。直觉上,它也在这两者之间取得了平衡。

是的,现在就知道了。我觉得自己太傻了,我没有跟踪到插入的成本真的很低:)@Zarif?!没有理由感到沉默。这些摊销数据结构是基于一个美丽的和不平凡的原则,这需要学习。。。