我已经尝试过,但是没有找到 T(n)= 3t(n / 3)+ n / lg(n) 谁能给我解决办法
答案 0 :(得分:0)
可视化此问题的一种好方法是递归树图。
The first three levels of the tree are drawn here.
第一阶段,我们的总工作量为n / lg n
对于第二级,我们有3个电话(n/3) / lg (n/3)
。汇总这些调用,可以得出n / lg (n/3)
在该级别的总工作量。
对于第三级,我们有9个呼叫(n/9) / lg (n/9)
。在这些级别上汇总这些调用,得出的总工作量为n / lg (n/9)
或n / lg (n/3^2)
。
递归调用将继续,直到我们调用T(1)。在n/3^k = 1
或k = log3(n)
处满足此条件
所以现在我们对所有等于this.的水平进行了简单的求和
n是一个常数,可以从等式中取出。展开总和即可得到this equation.
我们可以简化求和as shown here.
在大Theta中,求和可以简化为Θ(n*(1+log(logn))
,因为求和是谐波序列。
进一步简化,我们有Θ(n+n*log(logn))
,并且由于Big Theta的规则,我们可以简化为最终的Θ(nlog(logn))
Big Bigta,因为前n个会以较慢的速度增长并且不会对我们的最终方程式至关重要。
但是等等!您要求BigO。幸运的是,Big Theta同时提供了问题的上限和下限。大O仅提供上限。这对我们意味着什么? Big Theta实际上是Big O,但是相反,您可以说重复关系是O(nlog(logn))
。
希望这会有所帮助!