算法分析基础:
问题:
1、算法的时间复杂度
2、时间复杂度的估算
3、问题的时间复杂度的上界和下界
4、NP完全问题
解决:
算法时间复杂度(贼重要)
通常有两种衡量算法效率的方法:
(1) 事后统计法(少用)
(2)事情分析估算法
时间复杂度估算:
因为
算法 = 控制结构 +原操作(固有的数据类型的操作)
所以
算法执行的时间 = 原操作的执行次数*原操作 的和(最坏的情况)
问题时间复杂度的上界和下界:
定义1:如果存在两个正常数c和n0,对于所有的n=n0,有|
f(n)|≤c|g(n)|,则记作f(n)=0(g(n))
定义2 :如果存在两个正常数c和n0,对于所有的n≥n0,有|
f(n)|≥c|g(n)|,则记作f(n)=Q(g(n))。
定义3:当f(N)=0(g(N))且f(N)=Q(g(N)) 时,则记
f(N)=θ(g(N))。也就是说f(N)与g(N)同阶
定义4:如果对于任意给定的S≥0,都存在非负整数NO,使得当
N≥NO时有f(N)sSg(N) ,则称函数f(N)当N充分大时,比g(N)低阶
记为f(N)=o(g(N))
定义5:若g(N)=o(f(N)),即当N充分大时,f(N) 的阶比g(N)
高,则记f(N)=W(g(N))
NP完全问题:(很难搞)
是问题的复杂度,本身的复杂度;
P类问题就是所有的复杂度为多项式时间的问题的集合。