当 f(n) 为负时,主定理如何应用?

Posted

技术标签:

【中文标题】当 f(n) 为负时,主定理如何应用?【英文标题】:When f(n) is negative, how does master theorem apply? 【发布时间】:2017-02-03 06:56:16 【问题描述】:

试图解决这个递归:

T(n) = 4T(n/2) + 2500 - sqrt(n)
here a = 4, b=2 but my f(n) = 2500 -sqrt(n) 
n^ logb(a) = n ^ log2 (4) = n ^2 

但是 f(n) 是常数 -sqrt(n)

我的问题:

    我可以假设 f(n) = Theta(sqrt n) 还是我应该知道一些技巧?

    1234563或者可以忽略。

这快把我逼疯了!请帮忙!谢谢!!

【问题讨论】:

说实话,我是第一次使用大师定理,这只是我试图解决这个问题以利用大师定理。如果 f(n) 是某个常数 - sqrt(n) 或者即使它是常数 -n,我的问题仍然存在;我们是考虑常数和减号还是干脆忽略常数? 【参考方案1】:

Master Theorem 有几个先决条件和案例要求。违反其中任何一项,则该定理或案例不适用。正如我所看到的,这种情况违反了 f(n) 为正的定理要求。

实际上,这表示一旦通过 2500^2 个节点,进程间通信开销为负:在计算完成之前收集和整理结果。

我强烈怀疑问题陈述中有错误。

【讨论】:

以上是关于当 f(n) 为负时,主定理如何应用?的主要内容,如果未能解决你的问题,请参考以下文章

Python常用语法

什么时候可以实际应用主定理?

主定理:当 f(n) 包含对数的负幂时的问题

使用 fmtlib,当值为负时,零填充数值更短,我可以调整这种行为吗?

在主定理中找到 f(n) 的值

在 T(n) = T(n/2) + n 上应用主定理