假设解决重复问题,我发现:
T(n) = c*n*(1-n) = c*n - c*n^2
其中c是一个正常数,n是输入的大小
我是否应该考虑这种递归的渐近时间复杂度O(n),因为n ^ 2项为负?
更新:
例如,假设我们有以下重复发生:
T(n)= T(a * n)+ O(n),其中a小于1:=> T(n)= c * n *(1 + a + a ^ 2 + a ^ 3 + ...对于log a n个项)=> T(n)= c * n *(1-a ^ log a n)/(1-a)=> T(n)= c * n *(1- n)/(1- a)〜c * n *(1-n)
@ meowgoesthedog在注释中建议的错误是由于推理上的不正确跳跃(存在log (1 / a) n个术语而不是log a n);正确的推导如下:
T(n)= T(a * n)+ O(n),其中a小于1:=> T(n)= c * n *(1 + a + a ^ 2 + a ^ 3 + ...对于log (1 / a) n个项)=> T(n)= c * n *(1-a ^ log (1 / a) n)/(1-a)=> T(n)= c * n *(1- n)/(1- a)〜c * n *(1-1 / n)〜O(n)