- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LingJie/GDUT 第2章 算法效率分析基础 主要内容: 2.1 分析框架 2.2 渐进符号和基本效率类型 2.3 非递归算法的数学分析 2.4 递归算法的数学分析 2.1 算法分析的基本框架 一般而言,对于一个算法的分析主要是对算法效率的分析,包括了衡量其运行速度的时间效率以及衡量算法运行需要占用空间大小的空间效率。对于早期的计算机来说,时间与空间都是极其珍贵的资源。半个世纪以来,硬件技术的发展大大提高了计算机的存储容量,使得存储容量的局限性对于算法的影响大大降低了。但时间效率并没有得到相同程度的提高。因此,算法的时间效率是算法分析中的关键部分。 2.1.1 输入规模的度量 一个显而易见的事实是:大部分算法的执行时间随着输入量的增加而增大。例如在对一个数组进行排序时,数组越大,排序需要的时间就越长。因此从逻辑上来说,算法的效率应该是输入量的函数。 2.1.2 运行时间的度量单位 统计算法每一步操作的执行次数——不可行。 统计算法中最重要的操作—基本操作的执行次数。 排序的基本操作:比较 矩阵乘法的基本操作:乘法 多项式求值的基本操作:乘法 执行次数C(n)是输入规模n的函数,算法运行时间T(n)是执行次数的函数: Basic operation: the operation that contributes most towards the running time of the algorithm. T(n) ≈ copC(n) 2.1.3 增长次数 小规模的输入在运行时间上不能区分高效的算法与低效的算法,要考虑对于大规模输入时执行次数的增长次数。 2.1.4 算法最优、最差和平均效率 算法最差效率:当输入规模为n时,算法在最坏情 况下的效率。 算法最优效率:当输入规模为n时,算法在最理想情况下的效率。 算法平均效率:在“随机”或“典型”输入时(规模仍为n),算法的效率。 平均效率的研究方法:一般将规模为n的实例分为几种类型,在假设各种输入的概率分布,推导出基本操作的平均次数。 2.1 小结: 算法分析框架的要点 算法的时间效率与空间效率都是算法输入量的函数。 时间效率的衡量通过算法基本操作执行次数的估计进行,而空间效率的衡量是通过算法运行所占用额外的存储器资源量进行的。 有些算法时空复杂度在相同输入量下可能由于具体输入值的不同而不同,因此需要考虑最好情况下、最坏情况下以及一般情况下的算法时间复杂度。 算法的分析框架关注的内容是当输入量很大,趋向无穷的时候,算法的时间复杂度是如何增长,即使用算法的时间复杂度的渐进表示法。 2.2 渐进符号和基本效率类型 1、三个渐进符号的定义 Ω的定义: 存在常数c>0和非负整数n0,使得对所有n?n0,有 t(n) ? cg(n) 则称函数t(n)包含在Ω(g(n)中,记为t(n)∈Ω (g(n))也称t(n)的阶不低于g(n)的阶. 存在大于0的常数c1、c2和非负整数n0,使得对所有n?n0,有 c1g(n) ? t(n)?c2g(n), 则称函数t(n)包含在Θ(g(n)中。记为 t(n)∈Θ (g(n))。 例如:3n2+16n+68 ∈ Θ (n2) 2、渐进符号的有用特性 运算法则: 1. O(f)+O(g)=O(max(f,g)) 2. O(f)+O(g)=O(f+g) 3. O(f)·O(g)=O(f·g) 4. 如果 g(n) ∈ O(f(n)),则 O(f)+O(g)=O(f) 5. f∈O(f) 6. O(cf(n))=O(f(n)) (对符号Ω与Θ,有类似结论) 法则1(定理1): 如果t1(n)∈f(n), t2(n) ∈g(n),则 t1(n)+t2(n) ∈O(max{f(n),g(n)}) 证明: 见P45。 3、渐进符号的证明 方法1:利用定义直接证明。 方法2:利用极限计算 关于渐进时间效率: 注1 对规模较小的问题,决定算法工作效率的可能是算法的简单性而不是算法执行的时间。 2.3 非递归算法的数学分析 主要内容 1、求数组的最大元素 2、非递归算法分析的基本过程 3、检查数组元素是否完全不同 4、矩阵相乘 5、小结 2.3.1 例子-求数组的最大元素 问题:从n个元素的数组中查找最大值元素. 算法伪代码: MaxElement(A[0..n-1]) ma
您可能关注的文档
- Discuz! X系列任意版本到 Discuz! X2.5 升级图文教程.doc
- DISCUZ,uchmeo二次开发权威指南.doc
- Discuz_uchome_二次开发权威指南.doc
- Discuz_X1的程序目录及文件列表模板文件结构说明大全.doc
- discuz二次开发.doc
- Discuz结构说明.doc
- donet通过注释生成帮助文档.doc
- dos at命令.doc
- Dos at命令,自动关机与重启.doc
- DOS基础.doc
- 浙江衢州市卫生健康委员会衢州市直公立医院高层次紧缺人才招聘11人笔试模拟试题参考答案详解.docx
- 浙江温州泰顺县退役军人事务局招聘编外工作人员笔试备考题库及参考答案详解一套.docx
- 江苏靖江市数据局公开招聘编外工作人员笔试模拟试题及参考答案详解.docx
- 广东茂名市公安局电白分局招聘警务辅助人员40人笔试模拟试题带答案详解.docx
- 江苏盐城市大丰区住房和城乡建设局招聘劳务派遣工作人员4人笔试模拟试题带答案详解.docx
- 浙江舟山岱山县东沙镇人民政府招聘笔试模拟试题及参考答案详解1套.docx
- 最高人民检察院直属事业单位2025年度公开招聘工作人员笔试模拟试题含答案详解.docx
- 浙江金华市委宣传部、中共金华市委网信办所属事业单位选调工作人员笔试备考题库及答案详解1套.docx
- 广东深圳市党建组织员招聘40人笔试模拟试题及答案详解1套.docx
- 江苏南京水利科学研究院招聘非在编工作人员4人笔试模拟试题及参考答案详解.docx
文档评论(0)