首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用反向替换计算算法的复杂度

使用反向替换计算算法的复杂度
EN

Stack Overflow用户
提问于 2021-06-05 21:17:07
回答 1查看 564关注 0票数 0

我的职责是:

代码语言:javascript
复制
int ps (int n) 
{ if (n == 1) return 1; 
 else return (Extra(n) + Ps (n/4) + Ps (n/4)); } 

额外(N)是O(n)

我试图找出这个函数的T(n) =T(N)+2T(n/4),我用主定理计算了它的复杂性,它是O(n),但我不知道如何用反替换来求它的复杂性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-05 22:41:20

首先,你在复杂性方面是错误的。在编写时间复杂性时,您没有提到Extra(n)。那么,T(n) = 2 T(n/4) + n.现在,我认为新的重复复杂性术语很容易通过替换来解决:

代码语言:javascript
复制
T(n) = 2T(n/4) + n = 2 (2 T(n/8) + n/4) + n = 2^2 T(n/8) + n/2 + n =
2^2 (2 T(n/16) + n/8) + n/2 + n = 2^3 T(n/16) + n/4 + n/2 + n

现在,通过数学归纳法,如果我们假设n = 2^k,您可以发现:

代码语言:javascript
复制
T(n) = n + n/2 + n/4 + n/8 + ... + n/2^k = n (1 + 1/2 + 1/4 + ... + 1/2^k) <= 2n

以上分析的最后一部分来自于带因子1/2的和的存在几何级数。因此,T(n)Theta(n)O(n)中。

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

https://stackoverflow.com/questions/67854002

复制
相关文章

相似问题

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