数学基础
设f和g是定义域为自然数集N上的函数
- 存在正整数c、n,使
0<=f(n)<=cg(n)
成立,称f(n)
的渐进上界是g(n)
,记作f(n)=O(g(n))
- 存在正整数c、n,使
0<=cg(n)<=f(n)
成立,则称f(n)
渐进下界是g(n)
,记作f(n)=Ω(g(n))
- 若
f(n)=O(g(n))
且f(n)=Ω(g(n))
,则称f(n)
与g(n)
同阶,记作f(n)=Θ(g(n))
常见阶从大到小的顺序
O(n) <O(nlogn)<O(n^2)<O(2 ^n)<O(n!)<O(n ^n)
∑1k=Θ(logn)\sum \frac{1}{k} = \Theta (logn)∑k1=Θ(logn)
lognlogn=Θ(nloglogn)logn^{logn}= \Theta (n^{loglogn})lognlogn=Θ(nloglogn)
log(n!)=Θ(nlogn)log(n!) = \Theta (nlogn)log(n!)=Θ(nlogn)
求解递推方程的方法
许多递推方程不能求出精确的解,但通过可以估计函数的阶来估计时间复杂度
(1)迭代法
所谓迭代就是从原始递推方程开始,代入值,直到得到初值,然后将结果简化
(2)递归树
设T(n)=aT(n/b)+f(n),以f(n)为节点值,迭代构建递归树,直到函数中不在包含T(n)函数,复杂度为递归树每层值的和
(3)主定理