主定理求时间复杂度

主定理求时间复杂度

主定理内容

a ≥ 1 a\ge1 a1 b > 1 b\gt1 b>1为常数,设 F ( n ) F(n) F(n)为一函数, T ( n ) T(n) T(n)由如下递归式表示
T ( n ) = a T ( n b ) + f ( n ) T(n)=aT({n\over b})+f(n) T(n)=aT(bn)+f(n)
其中 n b {n\over b} bn ⌈ n b ⌉ \lceil{n\over b} \rceil bn ⌊ n b ⌋ \lfloor{n\over b} \rfloor bn, 可以证明,略去上下取整不会对结果造成影响。

那么 T ( n ) T(n) T(n)可能有如下的渐进界

  1. f ( n ) < n l o g b a f(n)\lt n^{log^{a}_{b}} f(n)<nlogba, 且是多项式的小于。即, ∃   ϵ > 0 \exists\ \epsilon \gt 0  ϵ>0,有 f ( n ) = O ( n l o g b a − ϵ ) f(n) = O(n^{log^{a}_{b}-\epsilon}) f(n)=O(nlogbaϵ),则 T ( n ) = θ ( n l o g b a ) T(n)= \theta(n^{log^{a}_{b}}) T(n)=θ(nlogba)
  2. f ( n ) = n l o g b a f(n)= n^{log^{a}_{b}} f(n)=nlogba,则 T ( n ) = θ ( n l o g b a l o g n ) T(n)= \theta(n^{log^{a}_{b}}logn) T(n)=θ(nlogbalogn)
  3. f ( n ) > n l o g b a f(n)\gt n^{log^{a}_{b}} f(n)>nlogba, 且是多项式的大于。即, ∃   ϵ > 0 \exists\ \epsilon \gt 0  ϵ>0,有 f ( n ) = O ( n l o g b a + ϵ ) f(n) = O(n^{log^{a}_{b}+\epsilon}) f(n)=O(nlogba+ϵ),对于 ∀   c < 1 \forall \ c\lt 1  c<1与所有足够大的 n n n,有 a f ( n b ) ≤ c f ( n ) af({n\over b}) \le cf(n) af(bn)cf(n),则 T ( n ) = θ ( f ( n ) ) T(n)=\theta(f(n)) T(n)=θ(f(n))

应用

假设某算法的计算时间表示为递推关系式 T ( n ) = 2 T ( n 4 ) + s q r t ( n ) T(n)=2T({n\over4 })+sqrt(n) T(n)=2T(4n)+sqrt(n)
T ( 1 ) = 1 T(1)=1 T(1)=1
则该算法的时间复杂度为多少?
分析 T ( n ) T(n) T(n)递推关系式结合主定理
a = 2 a=2 a=2 b = 4 b=4 b=4 n l o g b a = n l o g 4 2 = s q r t ( n ) n^{log^{a}_{b}} = n^{log^{2}_{4}} = sqrt(n) nlogba=nlog42=sqrt(n), 符合情况2,
所以 T ( n ) = θ ( n l o g b a l o g n ) = θ ( n l o g 4 2 l o g n ) = θ ( n l o g n ) T(n)= \theta(n^{log^{a}_{b}}logn) = \theta(n^{log^{2}_{4}}logn)=\theta(\sqrt nlogn) T(n)=θ(nlogbalogn)=θ(nlog42logn)=θ(n logn)

递归树

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值