求解递归关系:T(n)= 3T(n / 5)+ lgn * lgn

时间:2014-06-12 07:02:42

标签: 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)

我的方法:

lgn * lgn = theta(n),因为c2lgn< 2 * lglgn< c1 * lgn表示某些n> n0

上图不等式如图所示,c2 = 0.1,c1 = 1

log_5 {3}< 1,

因此,通过主定理,答案必须是theta(n),并且没有一个答案匹配。如何解决这个问题呢??

2 个答案:

答案 0 :(得分:7)

你声称lg n * lg n =Θ(n)是假的。请注意,当l变为无穷大时,(lg n) 2 / n的极限趋于0。你可以用l'Hopital的规则来看这个:

  

lim n→∞(lg n) 2 / n

     

= lim n→∞ 2 lg n / n

     

= lim n→∞ 2 / n

     

= 0

更一般地说,使用类似的推理,你可以证明lg n = o(n ε)对于任何ε> 0

让我们尝试使用主定理解决这种复发。我们看到有三个大小为n / 5的子问题,所以我们应该看一下log 5 3的值。因为(lg n) 2 = o(n log 5 3 ),我们看到递归是重底的,可以得出结论,递推求解为O(n log 5 3 ),即上面列表中的答案(A)。

希望这有帮助!

答案 1 :(得分:4)

要应用主定理,我们应检查

之间的关系

n log 5 (3)〜= n 0.682 和(lg(n)) 2 < / p>

不幸的是lg(n) 2 != 2 * lg(n):它是lg(n 2 )等于2 * lg(n)

另外,在主定理中,如果f(n)为O(n log b (a)-ε),或者代替Θ,则存在很大差异(n log b a ):如果前者成立,我们可以应用案例1,如果后者持有定理的案例2。

乍一看,它看起来非常不可能(lg(n)) 2 =Ω(n 0.682 ),所以让我们试着证明(lg(n) )) 2 = O(n 0.682 ),即:

0 ,c∈N + ,这样对于n> n 0 ,(lg(n)) 2 &lt; c * n 0.682

让我们取两边的平方根(假设n> 1,不等式成立)

lg(n)&lt; c 1 * n 0.341 ,(其中c 1 = sqrt(c))

现在我们可以假设,lg(n)= log 2 (n)(否则乘法因子可以被我们的常数吸收 - 正如你所知,常数因子在渐近分析中无关紧要并且指导双方:

2 lg(n)&lt; 2 c 2 * n 0.341 &lt; =&gt; n&lt; 2 c 2 * n 0.341 &lt; =&gt; n&lt; (n 2 0.341 c 2 &lt; =&gt; n&lt; (n 2 0.341 c 2 &lt; =&gt; n&lt; (N 1.266 C <子> 2

如果选择c 2 = 1且n 0 = 1

,则立即生效

因此,确实f(n)= O(n log b (a)-ε),我们可以应用< b>硕士定理,并得出结论:

T(n)= O(n log 5 3

同样的结果,更正式一点。