如何通过迭代方法解决递归....?

时间:2018-10-21 17:44:51

标签: discrete-mathematics

我已经尝试过,但是没有找到 T(n)= 3t(n / 3)+ n / lg(n) 谁能给我解决办法

1 个答案:

答案 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 = 1k = 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))

希望这会有所帮助!