use*_*814 5 algorithm math big-o recurrence
Consider the following recurrence
T(n) = 3T(n/5) + lgn * lgn
What is the value of T(n)?
(A) Theta(n ^ log_5{3})
(B) Theta(n ^ log_3{5})
(c) Theta(n Log n )
(D) Theta( Log n )
Answer is (A)
Run Code Online (Sandbox Code Playgroud)
我的方法:
lgn*lgn = theta(n)因为c2lgn <2*lglgn <c1*lgn对于某些n> n0
上图不等式如图所示,c2 = 0.1,c1 = 1

log_5 {3} <1,
因此,通过主定理,答案必须是theta(n),并且没有一个答案匹配.如何解决这个问题呢??
你声称lg n*lg n =Θ(n)是假的.请注意,当n变为无穷大时,(lg n)2/n 的极限趋于0.你可以使用l'Hopital的规则看到这个:
lim n→∞(lg n)2/n
= lim n→ ∞2lg n/n
= lim n→∞2/n
= 0
更一般地,使用类似的推理,您可以证明对于任何ε> 0 ,lg n = o(nε).
让我们尝试使用主定理解决这种复发.我们看到有三个子问题,每个大小为n/5,所以我们应该看一下log 5的值.由于(lg n)2 = o(n log 5 3),我们看到递归是重底的并且可以得出结论,递归求解为O(n log 5 3),这是上面列表中的答案(A).
希望这可以帮助!
为了应用主定理,我们应该检查之间的关系
\n\nn log 5 (3) ~= n 0.682和 (lg(n)) 2
\n\n不幸的是 lg(n) 2 != 2*lg(n):lg(n 2 ) 等于 2*lg(n)
\n\n另外,在主定理中,如果 f(n) 是 O(n log b (a)-ε ),或者 \xce\x98(n log b a ):如果前者成立,我们可以应用情况 1,如果后者满足定理的情况 2。
\n\n乍一看,它看起来不太可能 (lg(n)) 2 = \xce\xa9(n 0.682 ),所以让我们尝试证明 (lg(n)) 2 = O(n 0.682 ),即:
\n\n∃ n 0 , c ∈ N +,使得对于 n>n 0 , (lg(n)) 2 < c * n 0.682
\n\n让我们两边都开平方根(假设 n > 1,不等式成立)
\n\nlg(n) < c 1 * n 0.341,(其中 c 1 = sqrt(c))
\n\n现在我们可以假设 lg(n) = log 2 (n) (否则乘法因子可能会被我们的常数吸收 - 正如您所知,常数因子在渐近分析中并不重要)并对两边求幂:
\n\n2 lg(n) < 2 c 2 * n 0.341 <=> n < 2 c 2 * n 0.341 <=> n < (n 2 0.341 ) c 2 <=> n < (n 2 0.341 ) c 2 <=> n < (n 1.266 ) c 2
\n\n选择 c 2 = 1 且 n 0 = 1立即成立
\n\n因此,f(n) = O(n log b (a)-ε )确实成立,我们可以应用主定理的情况 1 ,并得出结论:
\n\nT(n) = O(n log 5 3 )
\n\n结果相同,但更正式一点。
\n