当前位置: 首页 > 知识库问答 >
问题:

为什么摊开树的摊开分析只关注摊开操作而不考虑向下搜索

涂浩皛
2023-03-14

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

然而,我没有找到对完整字典操作的实际分析,例如插入、删除。。。这些操作中的每一个操作除了使用splay操作外,还使用向下搜索树来找到要插入或删除的节点的正确位置。只有找到该节点后,才能开始展开操作。

人们倾向于发表这样的声明:

  • “八字树操作的复杂性与相关八字树操作的复杂性相同”
  • [“在我们的分析中,我们注意到执行搜索、插入或删除的时间与相关显示的时间成正比”,《古德里奇之书》第456页,标题为“C语言中的数据结构和算法”

我有两个问题:

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

一个人怎样才能得出这个结论?

共有1个答案

韦嘉颖
2023-03-14

一个人如何才能得出这样的结论,即执行搜索的时间与展开的时间成正比?这意味着向下遍历节点的时间也与八字形的连接成正比?

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

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

是的,如果有可能在事后不展开搜索。出于前面讨论的原因,我们将它们视为不可分割的,因此我们有效地用一个常数乘以一个长时间splay用于覆盖搜索的摊销积分。

 类似资料:
  • 问题内容: 与渐进分析有何不同?您何时使用它,为什么? 我读过一些写得不错的文章,例如: http://www.ugrad.cs.ubc.ca/~cs320/2010W2/handouts/aa-nutshell.pdf http://www.cs.princeton.edu/~fiebrink/423/AmortizedAnalysisExplained_Fiebrink.pdf 但我仍然没有完

  • Edit:您可以假设hashtable使用基本链接,其中元素位于相应链表的末尾。我的真正问题是关于概率算法的摊销分析。 编辑2:我在quicksort上发现了这篇文章,“摊销运行时间和预期运行时间之间有一个微妙但重要的差异。使用随机枢轴的quicksort的预期运行时间为O(n log n),但其最坏的运行时间为θ(n^2)。这意味着quicksort的成本很小,但随着n的增加,这种可能性接近于零

  • 根据下面引号中的规范,实现了一个队列(该语言使用Ruby,但希望每个人都能读懂)。 使用堆栈实现队列。也就是说,只使用push和pop操作来写入队列和出队列。 就性能而言,enqueue应该是O(1),但dequeue在最坏的情况下可能是O(n)。从时间上看,出队时间应为O(1)。证明您的解决方案实现了这一点。 我在想,你怎么证明排队的摊销时间?谢了!

  • 本文向大家介绍解释息税折旧及摊销前的收益(EBITDA)。,包括了解释息税折旧及摊销前的收益(EBITDA)。的使用技巧和注意事项,需要的朋友参考一下 EBITDA指未计息税折旧和摊销前的收益。EBITDA通过排除非运营决策来专注于企业的运营决策。 公司/行业之间的盈利能力可以使用EBITDA进行分析。息税折旧摊销前利润为正值表示公司正在通过其运营获得利润,而息税折旧摊销前利润为负意味着该公司未通

  • 问题内容: 你能给我解释一下打电话之间有什么区别 和 看来在这两种情况下被调用,是 那么,该开关的作用是什么? 问题答案: PEP 338 部分的第一行说: Python 2.4添加了命令行开关-m,以允许使用Python模块名称空间定位模块以作为脚本执行。激励性的示例是标准库模块,例如pdb和profile,而Python 2.4实现对于此有限目的是很好的。 因此,您可以通过这种方式在Pytho

  • 问题内容: 我正在使用以下查询: 令人惊讶的是,该语句不包含错误值为NULL的行。我的意图是仅筛选错误值为连接错误’‘的行。我需要提供其他条件(或错误为NULL)以检索正确的结果。 为什么MYSQL会滤除带有NULL值的结果?我以为IN关键字会返回一个布尔结果(1/0),现在我知道某些MYSQL关键字不返回布尔值,它也可能会返回NULL ....但是为什么将NULL当作特殊值呢? 问题答案: 这个