首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >求解递推T(n) =T(n-1)+T(n-2)+T(n-3)+.+ T(1)

求解递推T(n) =T(n-1)+T(n-2)+T(n-3)+.+ T(1)
EN

Stack Overflow用户
提问于 2022-01-17 13:08:36
回答 3查看 1.3K关注 0票数 1

我有一个回溯算法。运行时间由以下关系提供:

T(n) =T(n-1)+T(n-2)+T(n-3)+T(n-4)+.+ T(1)

T(1)=1

这个算法最糟糕的时间复杂度是什么?从直觉上看,它在我看来是O(n^n)。但我可能错了。如何正式计算?

EN

回答 3

Stack Overflow用户

发布于 2022-01-17 13:29:46

这里有一个简单的方法:您可以通过扩展每个附加项并观察模式来计算时间复杂度:

T(n)

= T(n-1) + T(n-2) + T(n-3) +.+ T(1)

= (T(n-2) + T(n-3) +.+ T(1)) + T(n-2) + T(n-3) +.+ T(1)

= 2T(n-2) + 2T(n-3) +.+ 2T(1)

= 4T(n-3) +.+ 4T(1)

= 2^(k-1) T()+.+ 2^(k-1) T(1)

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

= 2^(n-2)

票数 1
EN

Stack Overflow用户

发布于 2022-01-17 13:39:35

代码语言:javascript
运行
复制
T(n) = (T(1) + T(2) + ... + T(n-2)) + T(n-1)
     = T(n-1) + T(n-1)
     = 2T(n-1)

因此,T(n) = c * 2^n,其中cT(1)/2

票数 1
EN

Stack Overflow用户

发布于 2022-01-17 13:29:44

你有以下几点:

代码语言:javascript
运行
复制
T(1) = 1
T(2) = T(2-1) = T(1) = 1
T(3) = T(3-1) + T(3-2) = T(2) + T(1) = 2
T(4) = T(4-1) + T(4-2) + T(4-3) = T(3) + T(2) + T(1) = 2 + 1 + 1 = 4
T(5) = 4 + 2 + 1 + 1 = 8
T(6) = 8 + 4 + 2 + 1 + 1 = 16
...

通过归纳,得出了T(n) = 2*T(n-1)与大小写T(1) = T(2) = 1的关系。

我们可以在这句话的基础上更进一步,因为T(n) = 2*T(n-1)T(n) = 2*2*T(n-2)。因此,T(n) = (2^i)*T(n-i)用于i < n-2n > 2

因此,就时间复杂度而言,我们得到了O(2^n)

注意:如果我错了,请纠正我。我对这些东西不是最好的。我的预言片。我在努力学习自己。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70741885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档