算法定义
- 确定性
- 能行性
- 输入
- 输出
- 有穷性
计算过程:满足前四条不满足有穷性
OS就是计算过程
算法好坏的衡量尺度
- 问题的规模 :
输入数据量
的测度 - 基本运算:两个实矩阵的乘法:实数的
乘法
(及加法);数表的排序:表中的两个数据项进行比较
- 算法的计算量函数
算法的计算量函数
时间复杂性
问题规模
的某个函数
来表示算法的基本运算量
,这个表示基本运算量的函数
表示渐近时间复杂性的三个记号
T(n)=O(f(n))
T(n)=Ω(f(n))
T(n)=Θ(f(n)
- T(n)= O(f(n)):
若存在c > 0,和正整数n0≥1,使得当n≥n0时,总有T(n)≤cf(n)
给出了算法时间复杂度的上界
,复杂度不可能比cf(n)更大
- T(n)=Ω(f(n))
若存在c > 0,和正整数n0≥1,使得当n≥n0时,存在无穷多个n ,使得T(n)≥cf(n)成立
给出了算法时间复杂度的下界
,复杂度不可能比cf(n)更小
- T(n)=Θ(f(n))
若存在c1,c2>0,和正整数n0≥1,使得当n≥n0时,总有 T(n)≤c1f(n),且有无穷多个n,使得T(n)≥c2f(n)成立,即:T(n)= O(f(n))与T(n)=Ω(f(n))都成立
既给出了算法时间复杂度的上界,也给出了下界
评价算法的主要方面
正确性:首要因素
健壮性:对正确、不正确的输入的应对处理
简答性:可读性好,易调试、改进
高效性: 时间、空间复杂度较小
最优性:证明所给算法是解决同一类问题中最好的
算法的应用——实例
- Google PageRank
评估网页重要性
- Google Map, Baidu Map
路径规划
- 金融领域
算法交易,风险控制