什么时候可以实际应用主定理?
Posted
技术标签:
【中文标题】什么时候可以实际应用主定理?【英文标题】:When can the Master Theorem actually be applied? 【发布时间】: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 种情况。在第二种情况下,它只是允许放松。 【参考方案1】:书上说不能用Case 3解决:
即使它看起来具有正确的形式:...您可能会错误地认为案例 3 应该适用
但是,这个递归公式可以使用主定理解决,案例 2。
T(n) = 2T(n/2) + nlgn:
我们定义:
a = 2, b = 2, f(n) = nlgn
使用Master theorem case 2:
c = log_2(2) = 1
k = 1
而f(n)
确实在Theta(nlogn)
中。
所以,掌握定理案例 2 的所有条件都适用,我们可以推断:
T(n)
在Theta(n^c * log(n)^(k+1)) = Theta(n*log(n)^2)
中
长话短说,Master theorem 有 3 个案例。每个案例都有其适用的先决条件。案例 3 有更复杂的先决条件,因为它也需要收敛。 由于案例 3 的先决条件不适用于此公式,因此您不能使用案例 3。但是,案例 2 的先决条件 - 确实适用,您可以使用它。
【讨论】:
它确实提到案例 3 不适用,但前几行它说主定理作为一个整体不适用于它(“主方法不适用于递归.. .”),然后不久之后说“您可能错误地认为案例 3 应该适用......”。在第 96 页,它声称复发“落入案例 2 和案例 3 之间的间隙”。书错了吗? 这个怎么样:你是否同意以下陈述:CLRS是错误的,主定理案例2适用于T(n) = 2T(n/2) + n lg n
并且有很大的Thetan lg^2 n
,我链接的第二篇论文是错误的和@ 987654332@ 也是 case 2,因此大 Theta n^2 lg^2 n
,而“多项式差分”的概念仅适用于处理 case 1 和 case 3?
(1) CLRS 不能确定这不是案例 2,它实际上是在向您指出案例 2 的证明作为解决此问题的方法。我确实同意书中的措辞有点误导。 (2) 只有case 3需要“多项式差分”,case 1和case 2不需要。
书中哪里指出案例 2 是问题的解决方案?您是否有其他版本的 CLRS 提到了这一点?在我的书中,它将递归称为无法用主定理解决,并使用案例 3 作为您可以尝试的示例,但由于多项式差分规则,这将是不正确的。它没有提及甚至暗示适用案例 2。它直接声称它无法用 Master Theorem 解决(我不同意)。
上面写着(See Exercise 4.6-2 for a solution.)
。这个练习是案例 3 的证明......(第 3 版)以上是关于什么时候可以实际应用主定理?的主要内容,如果未能解决你的问题,请参考以下文章