【问题标题】:Where is the addition from the recurrence relation, in the summation?总和中递归关系的加法在哪里?
【发布时间】:2019-05-26 07:33:57
【问题描述】:

在本 coursera 课程中,讲师展示了如何将递推关系转换为已完成工作的实际总和。我不明白总和中表示的每个级别O(n^d) 的恒定工作量在哪里。不应该是a(n/b)+O(n^d),而不是aO(n/b)^d

【问题讨论】:

  • 你能具体说清楚你不明白的部分吗?
  • 不应该是a(n/b)+O(n^d),而不是aO(n/b)^d吗?

标签: algorithm recurrence divide-and-conquer


【解决方案1】:

根据big-O的定义,abd为常数且大于1aO((n/b)^d))O(n^d)等价。

【讨论】:

  • 但重复显示为:a(n/b)+O(n^d)。那么总工作不应该由aO(n/b)+O(n^d)代表吗?
  • @DaniloSouzaMorães 如果d > 1 他们是euivalentinO。他们都是O(n^d)
  • 我认为我没有正确解释我的问题。我会再试一次:递归关系是将 O(n^d) 添加到 a(n/b)。 O(n^d) + a(n/b) 如何等同于 aO((n/b)^d))?它是如何从 ADDing 到 MULTiplying 的?
【解决方案2】:

在你的图片的主定理中,在每个级别,工作都不是别的,而是将当前级别O(n)problem分成a-th下一级O(n/b)problems,然后将它们组合起来。

level 0中,我们在树中只有一个节点,这个devide and combineprocedure的时间复杂度是O(n^d)(根据你的图片给定的知识,不同的算法有不同的devide and combine时间复杂度)。

level 1中,我们有a-th节点,每个节点都有一个devide and combine过程,其中时间复杂度是O((n/b)^d),所以devide and combine在这个级别的总工作量是aO((n/b)^d)

整个工作的总时间复杂度,是devide and combine每一层时间复杂度的总和。请记住,整个工作不是别的,而是一直在做devide and combine

【讨论】:

  • 该公式来自主定理。我以为它是通用的
  • 它确实可以代表不同的情况,如O(n),O(n^2),O(n^3)等。但它不能代表O(lgn)O(nlgn)。我怀疑这些时间复杂性在某些情况下。请参阅维基百科链接:en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms)。通用的应该是f(n)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
相关资源
最近更新 更多