【问题标题】:Why is amortized analysis of splay tree only focusing on the splay operation and not accounting for the downwards search为什么splay树的摊销分析只关注splay操作而不考虑向下搜索
【发布时间】:2020-08-13 19:24:54
【问题描述】:

展开树中的每个字典操作都使用展开操作将节点带到树的根部。这种展开操作的摊销效率通常使用潜在方法进行分析,并在许多在线资源(包括维基百科)页面中进行了描述。然后将该展开操作的摊销时间报告为 O(m lg n)。

但是,我在任何地方都找不到完整字典操作的实际分析,例如插入、删除、... 除了展开操作之外,这些操作中的每一个都使用向下搜索树来找到要插入或删除的节点的正确位置。只有找到该节点后,才能开始展开操作。

人们倾向于做出如下陈述:

我有两个问题:

  • 如何得出这样的结论,即执行搜索的时间与展开的时间成正比?这种暗示向下遍历到节点的时间也与splay的平局成正比?
  • 向下遍历的摊销时间效率是多少?它是一个常数吗,仅仅是因为你没有通过简单地向下遍历来改变树的结构(所以你的潜力保持不变)?这个常数不是比 = N,因为这是最坏的情况吗?

如何得出这个结论?

【问题讨论】:

    标签: algorithm time-complexity binary-search-tree amortized-analysis splay-tree


    【解决方案1】:

    如何得出这样的结论,即执行搜索的时间与展开的时间成正比?这种暗示向下遍历到节点的时间也与splay的平局成正比?

    展开阶段在搜索阶段遍历的每个节点上运行。由于在搜索阶段每个节点所做的工作是恒定的,我们推断在任何操作序列上,搜索 = O(splay),因此 O(search + splay) = O(splay)。

    向下遍历的摊销时间效率是多少?它是一个常数吗,仅仅是因为你没有通过简单地向下遍历来改变树的结构(所以你的潜力保持不变)?而且这个常数不是比 = N,因为这是最坏的情况吗?

    是的,如果可以在不张开之后进行搜索。由于前面讨论过的原因,我们将它们视为不可分割的,因此我们有效地乘以一个常数,以覆盖搜索。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 2021-06-02
      • 2012-06-21
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      相关资源
      最近更新 更多