递归关系T(n)= T(n ^(1/2))+ T(n-n ^(1/2))+ n

时间:2012-05-11 01:25:41

标签: algorithm asymptotic-complexity recurrence

我的朋友和我发现了这个问题,我们无法弄清楚如何解决它。它不是琐碎和标准的替换方法并不真正起作用(或者我们不能正确应用它)这应该是快速排序与排名问题的枢轴。

这是重复:

T(n)= T(n ^(1/2))+ T(n-n ^(1/2))+ n

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

首先放轻松:

T(n)= T(nn ^(1/2))+ n,迭代次数为n ^(1/2),在每次迭代中你都有nk sqrt(n)时间复杂度,总时间复杂度为:Σnk sqrt(n)为0< = k< = sqrt(n),即n ^(3/2)。

现在解决你自己的问题:

T(n) = T(n^(1/2))+T(n-n^(1/2)) + n

再次计算到达零或1的步数:第一部分`T(n ^(1/2))取O(log log n)时间,第二部分取O(sqrt(n))次到达零或1(参见我的answer相关问题),所以第二部分支配第一部分,同样在每次迭代时,第二部分的时间复杂度导致sqrt(n)额外项目,这对于第一部分时间复杂度(n-sqrt(n)),所以你的总运行时间是n * sqrt(n)。