复发关系:迭代解决



有一个复发关系如下:

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(n) = .... = 2^(n) -1 

请注意,此方法仅给出解决问题的直觉,这不是证据。


正式证明您可以使用归纳的索赔,并要求假设T(n) = 2^n -1

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

诱导假设:对于所有k<nT(k) = 2^k-1

证明:

T(n) = 2T(n-1) +1 =(i.h.) 2* (2^(n-1) -1) + 1 = 2^n -2 + 1 = 2^n - 1

备注:t(1)基本子句实际上是 C,对于某些常数而不是 1T(n) = 2T(n-1)+C,但我为简单而使用1。将其更改为C时,逻辑根本不会cha。

通过O(1)的定义,我们知道对于某些常数Nc,对于所有n >= N

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

然后由n替换N + k

T(n) <= 2^(n-N) T(N) + (2^(n-N)-1) c <= 2^n (2^(-N) (T(N) + c))

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

相关内容

  • 没有找到相关文章

最新更新