通用表单:T(n) = aT(n/b) + f(n)
所以我必须将n ^ logb(a)与f(n)
进行比较如果n^logba
> f(n)
案例1 和T(n)=Θ(n^logb(a))
如果n^logba
< f(n)
案例2 和T(n)=Θ((n^logb(a))(logb(a)))
这是对的吗?或者我误解了什么?
案例3怎么样?适用时?
答案 0 :(得分:17)
注意:我知道现在回答这个问题为时已晚。我只是把它放在这里为后代:)
解决复发的主要定理
复发是在解决复杂问题的分而治之的策略中发生的。
它解决了什么?
考虑下图:
让我们说我们有一个大小n的问题需要解决。在每个步骤中,问题可以分为子问题,每个子问题的尺寸较小,其中尺寸减小了b倍。
上述陈述用简单的词语表示大小为n的问题可以分为相对较小的子问题n / b。
此外,上图显示,当我们多次划分问题时,每个子问题都会很小,以至于可以在恒定时间内解决。
对于以下推导,请考虑 log 到基数 b
让我们说H是树的高度,那么H = logn。 叶数= a ^ logn。
三个主要定理案例
案例1: 现在让我们假设操作成本在每个级别上增加一个重要因素,并且当我们到达叶级别时,f(n)的值变为多项式小于值n ^ loga。那么整体运行时间将主要由最后一级的成本决定。因此T(n)=θ(n ^ loga)
案例2: 让我们假设每个级别的操作成本大致相等。在那种情况下,f(n)大致等于n ^ loga。因此,总运行时间将是总水平数的f(n)倍。 T(n)=θ(n ^ loga * logn)其中k可以> = 0。其中logn是k> = 0
的树的高度案例3: 让我们假设每个级别上的操作成本在每个级别上降低一个重要因子,并且当我们到达叶级别时,f(n)的值变为多项式大于值n ^ loga。那么整体运行时间将主要由第一级的成本决定。因此T(n)=θ(f(n))
如果您对更详细的阅读感兴趣,也许还有一些练习的例子。您可以随时访问我的博客条目。 Master Method to Solve Recurrences
答案 1 :(得分:5)
我认为你误解了它。 如果n ^ logba> f(n)是情况1,T(n)=Θ(n ^ logb(a))
这里你不应该担心f(n)你得到的结果是T(n)=Θ(n ^ logb(a))。 f(n)是T(n)的一部分..如果得到结果T(n),那么该值将包括f(n)。 所以,没有必要考虑那个部分。
如果你不清楚,请告诉我。