尝试使用递归树T(n) = 3T(n/3) + n/lg n.
在第一级(n/3)/(log(n/3)) + (n/3)/(log(n/3)) + (n/3)/(log(n/3)) = n/(log(n/3))
。
在第二级,结果是n/(log(n/9))
。
我可以以n.loglogn
这是一个普遍的疑问,我需要对此有所了解。
注意:
在该函数k中必须为Theta(n^k log^k (n))
的任何函数都应该> = 1。在这种情况下,k为-1,因此主定理不会进入图像
答案 0 :(得分:7)
确实,Master定理不适用。
T(n)= 3T(n / 3)+ n / logn。
设g(n)= T(n)/ n。
然后n g(n)= 3 (n / 3)* g(n / 3)+ n / logn。
因此
g(n)= g(n / 3)+ 1 / log n。
这给出了g(n)= Sum 1 / log n + 1 / log n / 3 + 1 / log n / 9 + ...
= Theta(Sum 1 / logn + 1 /(logn -1)+ 1 /(log n - 2)+ ...)= Theta(积分1 / x在1和logn之间)= Theta(log log n )。
因此T(n)= n g(n)= Theta(n log logn。)
你猜对了。
答案 1 :(得分:4)
如果您使用树来显示问题,您会看到每个等级的总和是:
(等于n / log(n)) - 排名1:
依此类推,每个等级的总和为n/log(n/(3^i))
,我是当前等级。所以,我们一起得到:
如果我们打开方程式,我们得到:
(从结束开始然后向后......首先当i = log(base3)n然后返回时)
由于日志基数在theta中无关紧要,我们得到:
是:
(西格玛):
这是一个谐波系列,等于:
并且由于ln是以e为基数的日志,并且日志基数在theta中无关紧要,我们最终得到:
等于:
所以,它是theta(n log log n)。
答案 2 :(得分:1)