算法分析(1):数学基础

本章内容

  • 复杂性函数的阶
  • 和的估计与界限
  • 递归方程

1.一些记号

​ a. x\lfloor x \rfloor 表示小于等于xx的最大整数;

​ b. x\lceil x \rceil 表示大于等于xx的最小整数;

​ 即: x1<xxxx+1x-1 \lt \lfloor x \rfloor \le x \le \lceil x \rceil \le x+1

​ c. x\lfloor x \rfloor log(n)=lg(n)=log2(n)log(n) = lg(n) = log_2(n) ​ 为何此处不显示log(n)=lg(n)=log2(n)log(n) = lg(n) = log_2(n)

​ d. In(n)=loge(n)In(n) = log_e(n)

2.复杂性函数的阶

2.1. 渐近复杂性

​ 定义:当输入规模趋于极限情形时的复杂性

​ 表示复杂性阶的三个记号:

​ a. T(n)=O(f(n))T(n) = O(f(n))

​ 若存在c>0c>0,和正整数n01n_0 \ge1,使得当nn0n \ge n_0时, 有T(n)cf(n)T(n) \le c*f(n)成立,

​ 给出算法复杂度的上界,不可能比cf(n)c*f(n)更大;

​ b. T(n)=Ω(f(n))T(n) = \Omega(f(n))

​ 若存在c>0c>0,和正整数n01n_0 \ge1,使得当nn0n \ge n_0时, 有T(n)cf(n)T(n) \ge c*f(n)成立,

​ 给出算法复杂度的下界,不可能比cf(n)c*f(n)更小;

​ c. T(n)=Θ(f(n))T(n) = \Theta(f(n))

​ 若存在c1,c2>0c_1,c_2>0,和正整数n01n_0 \ge1,使得当nn0n \ge n_0时, 有c1f(n)T(n)c2f(n)c_1*f(n)\le T(n) \le c_2*f(n)成立,

​ 给出算法复杂度的上界和下界

2.2多项式时间与指数时间

​ 设每秒可做某基本运算10910^9次,n=60n=60:

  算法1 算法2 算法3 算法4 算法5 算法6
复杂度 nn n2n^2 n3n^3 n5n^5 2n2^n 3n3^n
时间 61086*10^{-8}s 3.61063.6*10^{-6}s 2.161042.16*10^{-4}s 0.013min 3.66世纪 1.310131.3*10^{13}世纪

​ 根据上表可以得出结论:

  • 多项式时间的算法互相之间虽有差距,一般可接受
  • 指数量级时间的算法对于较大的 nn 无实用价值

Written on August 6, 2018