算法复杂性分析

算法效率分析基础

算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。

分析框架

输入规模度量

  • 算法的时间效率和空间效率都用输入规模的函数进行度量。
  • 对相同大小的输入实例具有相同的分析结果。
  • 对于所有的算法,对于规模更大的输入都需要运行更长的时间。
  • 经常使用一个输入规模n为参数的函数来研究算法的效率。

运行时间的度量单位

  • 用算法的基本操作(算法中最重要的操作)的执行次数来度量算法的时间效率。
  • 基本操作通常是算法最内层循环中最费时的操作。
  • 算法运行时间的估计:
    T ( n ) ≈ c o p C ( n ) T(n) ≈ copC(n) T(n)copC(n)

n是该算法的输入规模
cop是特定计算机上一个算法基本操作的执行时间
C(n)是该算法需要执行的基本操作的次数

算法的最优、最差和平均效率

  • 最差效率是指在输入规模为n时,算法在最坏情况下的效率。
  • 最优效率是指在输入规模为n时,算法在最优情况下的效率。
  • 平均效率是指在“典型”或“随机”输入的情况下,算法具有的行为(效率)。

增长次数

  • 小规模输入在运行时间上的差别不足以将高效的算法和低效的算法区分开来。
  • 算法效率的主要指标是基本操作次数的增长次数。
  • 为了对这些增长次数进行比较和归类,计算机科学家们使用了3种符号:

渐近符号:
O(读“O”):上界
Ω(读”omega”):下界
Θ(读”theta”):近似

存在正常数c,c1,c2和n0使得对所有n不小于n0有
渐近分析的符号

更多渐近分析的符号
非紧上界记号 o o o
非紧下界记号 w w w

渐近符号的有用特性
当算法由两个连续执行部分组成时,该算法的整体效率由具有较大增长次数的那部分所决定。
基本的效率类型
常量( c ) < 对数( logn ) < log2n < 线性( n ) < nlogn < 平方( n2 ) <立方( n3 ) < 指数( 2n ) < 阶乘( n! )

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值