编辑
2024-12-27
算法
0
请注意,本文编写于 113 天前,最后修改于 113 天前,其中某些信息可能已经过时。

目录

主定理
简化的主定理

主定理

主定理是用于计算如下递推形式的时间复杂度

T(n)=aT(nb)+f(n)T(n)=aT\left(\dfrac nb\right)+f(n)

根据f(n)f(n)logba\log_ba 的大小关系分为四种情况

f(n)>=<?nlogbaf(n)\stackrel{?}{>=<}n^{\log_ba}
  1. f(n)=O(nlogbaϵ)f(n)=O\left(n^{\log_ba-\epsilon}\right) 可以理解为 f(n)<nlogbaf(n)<n^{\log_ba}, 则有
T(n)=Θ(nlogba)T(n)=\Theta\left(n^{\log_ba}\right)
  1. f(n)=Θ(nlogba)f(n)=\Theta\left(n^{\log_ba}\right) 可以理解为 f(n)=nlogbaf(n)=n^{\log_ba}, 则有
T(n)=Θ(nlogbalogn)T(n)=\Theta\left(n^{\log_ba}\log n\right)
  1. f(n)=Ω(nlogba+ϵ)f(n)=\Omega\left(n^{\log_ba+\epsilon}\right) 可以理解为 f(n)>nlogbaf(n)>n^{\log_ba}, 则有
T(n)=f(n)T(n)=f(n)
  1. 第四种情形是特殊的, 当f(n)=Ω(nlogbalogkn)f(n)=\Omega\left(n^{\log_ba}\log^kn\right)f(n)=nlogbalogknf(n)=n^{\log_ba}\log^kn
T(n)=Θ(nlogbalogk+1n)T(n)=\Theta\left(n^{\log_ba}\log^{k+1}n\right)

简化的主定理

如果取f(n)f(n)是多项式复杂度的, 即 f(n)=O(nd)f(n)=O(n^d), 递推式即

T(n)=aT(nb)+O(nd)T(n)=aT\left(\dfrac nb\right)+O(n^d)

那么就能讲主定理简化为

  1. d<logbad<\log_ba
T(n)=O(nlogba)T(n)=O\left(n^{\log_ba}\right)
  1. d=logbad=\log_ba
T(n)=O(ndlogn)T(n)=O(n^d\log n)
  1. d>logbad>\log_b a
T(n)=O(nd)T(n)=O(n^d)

本文作者:GBwater

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!