时间复杂度的计算

主方法给出了求解形如下式的递归式的通用方法:

            T(n) = aT(n/b) + f(n)

其中a>=0和b>1是常数

该递归式描述了将规模为n的问题划分为a个子问题的算法运行时间,每个子问题的规模为n/b。a个子问题被分别递归的解决,时间各为T(n/b)。划分原问题和合并答案的代价由函数f(n)描述。

(主定理) 设a>=1和b>1为常数,设f(n)为一函数,T(n)由递归式

                    T(n) = aT(n/b) + f(n)

对非负整数定义,其中n/b指取上整数或者下整数。那么T(n)可能有如下的渐近界

1) 若对于某常数e>0,有f(n) = O(),则T(n) = 

2)  若f(n) =  ,则T(n) = 

3) 若对于某常数e>0,有f(n) = ,且对常数c<1与所有足够大的n,有af(n/b)<=cf(n),则T(n) = 

下面来看一个例子:

                                   T(n) = 9T(n/3) + n

在这个递归式中,a = 9,b = 3,f(n) = n, =  = 。因为f(n) = O(),其中e = 1,这对应主定理的第一种情况,所以T(n) = 

再看一个例子:

                                  T(n) = T(2n/3) + 1

其中a = 1,b = 3/2,f(n) = 1, =  =  = 1,第二种情况成立,因为f(n) =  = ,故递归式的解为T(n) = 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值