时间复杂度算法

时间:2013-09-25 07:59:09

标签: algorithm recursion time-complexity

我有一个做O(n)工作的算法,摆脱了 输入的恒定分数1 / k(k> 2),并递归地调用自身 还剩下什么。该算法可以用来描述 T(n)= T(((k-1)/ k)* n)+ O(n)。如何计算T(n)的闭合形式。

2 个答案:

答案 0 :(得分:3)

您可以直接展开它: T(n)= T(((k-1)/ k)^ 2 * n)+ O(((k-1)/ k)* n)+ O(n)等等

注意,n *((k-1)/ k)是n /(k /(k-1)),其暗示分母> 1.

因此,它是一个几何级数,收敛于和/(1 - (k - 1)/ k)= n * k。

因此,如果k是常数,则T(n)= O(n * k)为O(n)。

答案 1 :(得分:1)

您可能希望了解主定理,这是分析此类问题的便捷方法:http://en.wikipedia.org/wiki/Master_theorem

您的算法将属于案例3,与外部工作相比,递归工作可以忽略不计。