【发布时间】:2016-04-07 09:22:09
【问题描述】:
我对此感到非常沮丧。
在 CLRS 第 3 版第 95 页(第 4.5 章)中,它提到像
T(n) = 2T(n/2) + n lg n
无法用主定理解决,因为差异
f(n)/n^(log_b(a)) = (n lg n)/n^1 = lg n
不是多项式。
但后来我遇到像this 这样的页面,在页面底部,它提到了完全相同的重复,并说它可以用主定理解决,因为它属于“扩展案例 2”即使差异是非多项式的。它变为n lg^2 n(将f(n) 上的日志因子加一)。
然后我遇到像 this 这样的页面,在示例 (e) 中似乎是扩展案例 2 的明确应用(重复是 T(n) = 4T(n/2) + n^2 lg n),但随后解决方案不是 n^2 log^2 n,而是 @987654329 @!是我错了还是论文错了?
谁能把矛盾说清楚,什么时候可以使用主定理,什么时候不能使用?多项式差分检查何时重要,何时不重要?扩展案例 2 是否可用,或者它实际上违反了什么?
编辑:
我尝试直接从第二篇论文中解决递归(e),我得到:
T(n) = n^2 lg^2(n)/2 + n^2 lg(n)/2
这不是大θn^2 lg^2 n吗?
【问题讨论】:
-
请注意,书中主定理的案例 2 与您在其他地方遇到的通用形式(包括您的示例)不同。广义形式从何而来?书中的习题4.6-2,其实很容易自己证明。 :-)
-
@MichaelFoukarakis 那么您会说多项式差分规则仅适用于情况 1 和 3?
-
多项式差分“规则”比多项式情况更严格。它适用于所有 3 种情况。在第二种情况下,它只是允许放松。
标签: algorithm big-o asymptotic-complexity polynomials master-theorem