如何解决递归T(n)= 5T(n / 7)+ logn?

时间:2019-06-23 16:57:28

标签: big-o recurrence logarithm

我正在尝试求解递归T(n)= 5 * T(n / 7)+ log(n),T(1)= Theta(1)

我尝试使用递归树方法,但由于试图找到树的高度而陷入困境,因为我有log(n),所以我不知道如何在此处应用主定理。谢谢您的时间。

1 个答案:

答案 0 :(得分:0)

您在这里问了两个问题:

  1. 递归树的深度是多少?

  2. 如何使用Master定理解决递归关系?

对于问题(1),如果您试图调整递归树的大小,则有助于观察递归运行时输入大小的变化。例如,零递归展开后,我们有T(n)。经过一次递归扩展,我们有了

  

T(n)= 5T(n / 7)+ log n,

,请注意,T的参数为n /7。经过两次递归扩展,我们得到

  

T(n)= 25T(n / 49)+ 5 log(n / 7)+ log n,

其中T的参数现在为n /49。在第三次递归扩展后,我们得到

  

T(n)= 125T(n / 343)+ 25 log(n / 49)+ 5 log(n / 7)+ log n,

并且T的参数现在为n / 343。

一个值得思考的好问题:如果您是我在这种情况下的深层迭代,那么T的论点是什么?并且考虑到当参数为1时递归停止,您如何解决递归终止处的i值?

第二个问题-您如何在此处使用“主定理”? -由于对数项,直接将主定理应用于该问题有点棘手。当您想使对数词消失时,可以使用的一种有用技术是将重复发生夹在另外两个更简单的重复之间。注意,例如,T(n)夹在这两个重复之间:

  

L(n)= 5L(n / 7)+ n 0

     

U(n)= 5L(n / 7)+ n ε,对于任何ε> 0。

这些递归更直接地适合于主定理,并且如果您对选择ε的方法很聪明(提示:请使其非常小!),则可以证明L(n)和U(n)两者给出相同的渐近边界。由于T(n)夹在两者之间,因此T(n)也将具有相同的渐近增长,您将得到答案。

希望这会有所帮助!