算法效率分析基础概要PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章
第2章 算法效率分析基础
• 主要内容:
2.1 分析框架 2.2 渐进符号和基本效率类型 2.3 非递归算法的数学分析 2.4 递归算法的数学分析
2021/3/14
1
2021
第2章
2.1 算法分析的基本框架
• 一般而言,对于一个算法的分析主要是对算法
效率的分析,包括了衡量其运行速度的时间效 率以及衡量算法运行需要占用空间大小的空间 效率。对于早期的计算机来说,时间与空间都 是极其珍贵的资源。半个世纪以来,硬件技术 的发展大大提高了计算机的存储容量,使得存 储容量的局限性对于算法的影响大大降低了。 但时间效率并没有得到相同程度的提高。因此, 算法的时间效率是算法分析中的关键部分。
2021/3/14
2
20ຫໍສະໝຸດ Baidu1
第2章
2.1.1 输入规模的度量
• 一个显而易见的事实是:大部分算法的执行时间随着
输入量的增加而增大。例如在对一个数组进行排序时, 数组越大,排序需要的时间就越长。因此从逻辑上来 说,算法的效率应该是输入量的函数。
• 选择哪个参数表示输入规模是有差异的。如计算两个n
阶矩阵的乘积,选择矩阵阶数和矩阵元素个数作为输 入规模求的的算法效率是有差别的。 选择输入规模的 合适度量受算法的操作细节影响,如拼写检查算法可 以使用字符或词的数量作为输入规模。
n log2n
10 3.3 102 6.6 103 10 105 17
nlog2n
n2
3.3×10 102 6.6×102 104 1.0×104 106 1.7×106 1010
n3 2n
n!
103 106 109 1015
103 1.3×1030
3.6×106 3.6×10157
2021/3/14
2021/3/14
4
2021
第2章
• 统计算法每一步操作的执行次数——不可行。 • 统计算法中最重要的操作—基本操作的执行次数。
排序的基本操作:比较 矩阵乘法的基本操作:乘法 多项式求值的基本操作:乘法
• 执行次数C(n)是输入规模n的函数,算法运行时间
T(n)是执行次数的函数:
2021/3/14
例如,4nlogn+7 ∈O(nlogn)。
2021/3/14
12
2021
第2章
2021/3/14
13
2021
第2章
Ω的定义:
存在常数c>0和非负整数n0,使得对所有nn0, 有
t(n) cg(n) 则称函数t(n)包含在Ω(g(n)中,记为t(n)∈Ω (g(n))也 称t(n)的阶不低于g(n)的阶.
5
2021
第2章
Basic operation: the operation that contributes most towards the running time of the algorithm.
input size
T(n) ≈ copC(n)
running time execution time for basic operation
• 如果算法是与数字特性相关的,其输入规模的度量应
当引起注意。例如:检查给定的整数是否为质数,倾 向于度量数字n的二进制表示中的比特数。
2021/3/14
3
2021
第2章
2.1.2 运行时间的度量单位
• 算法时间包括了编译该算法的时间以及运行该
算法的时间。因此衡量算法时间的单位很自然的会 想到用“秒”、“毫秒”等实际的时间单位。这对 于算法的测试者而言是很直观的,但是存在的问题 是:编译算法的时间与编译程序的好坏有关,即使 只考虑算法运行时间,得到的时间也受到了运行该 算法的计算机速度的影响。因此一个算法在某一台 计算机上实现得到的时间对于其他的计算机是没有 参考意义的。
Number of times basic operation is
executed
其中: cop为特定计算机上一个基本操作的执行时间,是常量。
2021/3/14
6
2021
第2章
2.1.3 增长次数
• 小规模的输入在运行时间上不能区分高效的算法
与低效的算法,要考虑对于大规模输入时执行次 数的增长次数。
7
2021
第2章
2.1.4 算法最优、最差和平均效率
• 算法最差效率:当输入规模为n时,算法在最坏情 况
下的效率。
• 算法最优效率:当输入规模为n时,算法在最理想情况下
的效率。
• 算法平均效率:在“随机”或“典型”输入时(规模仍为
n),算法的效率。
• 平均效率的研究方法:一般将规模为n的实例分为几种类
型,在假设各种输入的概率分布,推导出基本操作的平均 次数。
2021/3/14
8
2021
第2章
2.1.4 顺序查找的效率
• 最差效率:Cwor(ns)tn
• 最优效率:Cbest (n) 1
• 平均效率:
Cavg(n)
1
p n
2
p n
i p n
n npn(1p)
p12 i nn(1p)
n
p(n1) n(1p) 2
例如:2n2+11n-10 ∈ Ω(n2), n3∈ Ω(n2)
2021/3/14
14
2021
第2章
2021/3/14
15
2021
第2章
的定义:
存在大于0的常数c1、c2和非负整数n0,使得对 所有nn0,有
2021/3/14
11
2021
第2章
1、三个渐进符号的定义
O的定义:
存在常数c>0和非负整数n0,使得对所有nn0, 有
t(n)cg(n) 则称函数t(n)包含在O(g(n)中,记为t(n)∈O(g(n)). 也 称函数 t(n )在n充分大时有上界g(n), 并称 t(n) 的阶不 高于g (n) 的阶.
• 算法的分析框架关注的内容是当输入量很大,趋向无穷的
时候,算法的时间复杂度是如何增长,即使用算法的时间 复杂度的渐进表示法。
2021/3/14
10
2021
第2章
2.2 渐进符号和基本效率类型
三个渐进符号:
常用函数符号: t(n) : 一个算法运行的时间 C(n): 基本操作次数 g(n): 用来比较的函数
2021/3/14
9
2021
第2章
2.1 小结: 算法分析框架的要点
• 算法的时间效率与空间效率都是算法输入量的函数。 • 时间效率的衡量通过算法基本操作执行次数的估计进行,
而空间效率的衡量是通过算法运行所占用额外的存储器资 源量进行的。
• 有些算法时空复杂度在相同输入量下可能由于具体输入值
的不同而不同,因此需要考虑最好情况下、最坏情况下以 及一般情况下的算法时间复杂度。
相关文档
最新文档