Algorithm 递推关系:迭代求解

Algorithm 递推关系:迭代求解,algorithm,iteration,time-complexity,recurrence,upperbound,Algorithm,Iteration,Time Complexity,Recurrence,Upperbound,存在如下递归关系: T(n) = 2 T(n-1) + O(1) for n > 1 otherwise, its T(n) = O(1) 通过迭代,到目前为止我得到了 T(n) = 2(2T(n-2) + 1) + 1 --- 1 T(n) = 2(2(2T(n-3) + 1) + 1) + 1 ---- 2 T(n) = 2(2(2(2T(n-4) + 1) + 1) + 1) + 1 ------3 T(n) = 2(2(2(2(2T(n-5) + 1) + 1) + 1) +

存在如下递归关系:

T(n) = 2 T(n-1) + O(1) for n > 1 
otherwise, its T(n) = O(1)
通过迭代,到目前为止我得到了

T(n) = 2(2T(n-2) + 1) + 1 --- 1
T(n) = 2(2(2T(n-3) + 1) + 1) + 1 ---- 2
T(n) = 2(2(2(2T(n-4) + 1) + 1) + 1) + 1 ------3
T(n) = 2(2(2(2(2T(n-5) + 1) + 1) + 1) + 1) +1 ----- 4
我不确定下一步要做什么才能找到时间复杂度的上限。谁能帮我一下吗。

看第4步

T(n) = 2(2(2(2(2T(n-5) + 1) + 1) + 1) + 1) +1 ----- 4
T(n) = 2(2(2(2(2T(n-5))))) + 16 + 8 + 4 + 2 +1 = 
T(n) = 2^4* 2T(n-5) + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 =
T(n) = 2^4* 2T(n-5) + 2^5 -1 =
类似地,如果您也这样做,并且再次开发,您将获得:

T(n) = 2^5 *2T(n-6) + 2^5 + 2^5-1
T(n) = 2^5 * 2T(n-6) + 2^6-1
现在我们可以理解,如果我们发展到T(1)的基础,我们得到:

请注意,这种方法只是给出解决问题的直觉,而不是证明


要正式证明该主张,您可以使用归纳法,并主张假设
T(n)=2^n-1

基数:
T(1)=1=2^1-1


归纳假设:对于所有的
k,根据
O(1)
的定义,我们知道对于一些常数
N
c
,对于所有的
N>=N

T(n+1) <= 2 T(n) + c

这证明了
T(n)
O(2^n)

非常感谢您如此清晰的解释!现在,根据迭代解2^(n)-1,上界时间复杂度为O(2^n)@Dee yes。但请记住,迭代方法不是一种形式证明。这只对直觉有好处。是的,但我只是想用迭代的方法来尝试一下(我以前从来没有这样做过)。那么,这意味着O(2^n)是这个函数的复杂度?另外,我能知道,你是如何从
2^4+2^3+2^2+2^1+2^0
得到
2^5-1
?这有点不清楚。对不起,我现在明白了:)与论坛网站不同,我们不使用“谢谢”或“感谢任何帮助”或签名。请看“.好的,请记住!您的评论“否则,它的T(n)=O(1)”在渐近框架中是没有意义的。问题的关键是,渐近递归不是像标准递归那样求解的,因为O(1)表示一个未知函数,不是常数。我能知道为什么我在这个问题上被否决了吗?感谢
证明了T(n)是O(2^n)
。这不是一个证明。声明
T(n+k)很抱歉,你不能理解我的论点。我建议你检查一下。我非常清楚这个定义,它与它无关。你未能证明索赔
t(N+k)。我添加了一个足以证明的理由(除了恶意)。
T(n) = 2T(n-1) +1 =(i.h.) 2* (2^(n-1) -1) + 1 = 2^n -2 + 1 = 2^n - 1
T(n+1) <= 2 T(n) + c
T(N+1) <= 2 T(N) + c
T(N+2) <= 2 T(N+1) + c <= 4 T(N) + 2 c + c
T(N+3) <= 2 T(N+2) + c <= 8 T(N) + 4 c + 2 c + c
...
T(N+k) <= 2^k T(N) + (2^k-1) c
T(n) <= 2^(n-N) T(N) + (2^(n-N)-1) c <= 2^n (2^(-N) (T(N) + c))