首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递推方程

递推方程
EN

Stack Overflow用户
提问于 2017-11-11 15:13:47
回答 1查看 230关注 0票数 1

今年10月,我开始攻读生物信息学硕士学位,因为一位前生物学家很难从一段代码中找到一个递归方程。如果有人能向我解释这件事,我将非常感激。

如何从这段代码中找到递归方程?

代码语言:javascript
复制
procedure DC(n)
   if n<1 then return
   for i <- 1 to 8 do DC(n/2)
   for i <- 1 to n³ do dummy <- 0

我猜T(n) =c+ 8T(n/2),因为第一个if条件需要常数时间c,第一个for循环是递归情况,从1到8执行,因此8*T(n/2),但我不知道如何将最后一行代码添加到我的方程中。

EN

回答 1

Stack Overflow用户

发布于 2017-11-11 15:57:11

原来这是T(n)= 8*T(n/2)+O(n^3)

我将用迭代/递归树方法来解决这个问题。

代码语言:javascript
复制
T(n) = 8* T(n/2) + O(n^3)
     ~ 8* T(n/2) + n^3
     = 8*(8* T(n/4) + (n/2)^3))+n^3
     = 8^2*T(n/4)+8*(n/2)^3+ n^3
     = 8^2*T(n/2^2)+n^3+n^3
     = 8^2( 8*T(n/8)+(n/4)^3)+n^3+n^3
     = 8^3*T(n/2^3)+ n^3 + n^3 + n^3
     ...
     = 8^k*T(n/2^k)+ n^3 + n^3 + n^3 + ...k time ...+n^3

这将在n/2^k=1 or k=log_2(n)停止时停止。

所以复杂性是O(n^3log(n))

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

https://stackoverflow.com/questions/47239410

复制
相关文章

相似问题

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