《算法设计与分析》——学习笔记

算法的定义

  1. 有穷性(finite):每条指令执行次数有穷性
  2. 确定性(define):每条指令的意思明确,无二义性
  3. 可行性(effictive):每条指令可执行,即人们用笔和纸做有限次运算也可完成
  4. 输入(input):0/1个输入
  5. 输出(output):1/n个输出,与输入量存在某种特定关系

算法复杂性分析

  • 时间复杂度 T(n)

时间复杂度即算法中基本操作的执行次数的数量级
问题规模:输入的个数n
基本操作的执行次数是n的函数f(n)

注意:
渐进时间复杂度——问题规模n趋向于极限情况时的时间复杂度

T(n)=O(f(n)) :f(n)是T(n)的上界,即T(n)的阶不高于f(n)的阶。通俗来说,T(n)的增长速度不比f(n)快。
T(n)=Ω(f(n)) :f(n)是T(n)的下界,即T(n)的阶不低于于f(n)的阶。
T(n)=Θ(f(n)) :f(n)是T(n)的确界,即T(n)与f(n)的同阶。
这里写图片描述

  • 最坏情况下的时间复杂度 W(n)
  • 平均情况下的时间复杂度A(n)

算法设计

1.问题建模
2.选择什么算法?如何描述这个方法?
3.这个方法是否对所有实例都得到最优解?如何证明?
4.若不是,能否找到反例?


算法的设计目标

  1. 正确性:正确执行预先规定的功能要求
  2. 可读性:易于人理解
  3. 健壮性:较好的容错性,对不合理的数据进行检查
  4. 高效率低存储

猜你喜欢

转载自blog.csdn.net/karin_0/article/details/82557488