算法分析与设计课件.pptx
《算法分析与设计课件.pptx》由会员分享,可在线阅读,更多相关《算法分析与设计课件.pptx(71页珍藏版)》请在三一办公上搜索。
1、1,算法分析与设计,2,第1章 算法引论,1课程学习背景 1.1 为什么学习算法?1.2 算法的定义1.3 如何描述一个算法?2算法复杂性分析2.1 计算模型与算法分析框架2.2 渐进表示,为什么要学习算法,算法是计算机科学的基石,是改造世界的有力工具! 互联网是20世纪最伟大的发明之一,改变了世界,改变了我们的生活!各种算法在支撑着整个互联网的正常运行,互联网的信息传输需要路由选择算法,互联网的信息安全需要加密算法,互联网的信息检索需要模式匹配算法,互联网的信息存储需要排序算法,没有算法也就没有互联网!学习算法可以开发人们的分析能力 算法是解决问题的一类特殊方法,它是经过对问题的准确理解和定
2、义获取答案的过程。是你获得高薪职位的敲门砖!,3,“微积分以及在微积分基础上建立起来的数学分析体系成就了现代科学,而算法则成就了现代世界” David Berlinski, 2000,思考题:小鸡啄米,输入:一个m*n的矩阵A,矩阵的每一个元素都是一个非负整数,代表该位置的米数;有一只小鸡从左上角A11出发,每次往右或者往下走一步,走到右下角Amn停止;小鸡会将途中经过的所有米粒都吃掉;设计一个算法,计算出小鸡应该如何走保证吃到的米粒最多。分析算法时间复杂度。,4,思考题:小鸡啄米,假设有两只小鸡从左上角A11出发,都要走到右下角Amn,都只能向下或者向右移动;两只小鸡移动的先后顺序不做限制,
3、但是先到某个位置的小鸡会将该位置米粒吃完;问如何安排两只小鸡的移动顺序与轨迹,使得两只小鸡吃到的米粒数之和最多?如果有k只小鸡呢?,5,6,为什么要分析算法效率?,写程序比效率更重要的因素可复用性、界面友好度、可扩展性、易读性、安全性。效率是可不可行的判断标准指数级算法 vs. 多项式时间算法 . ( 2 )效率就是金钱Java vs. C,7,算法效率的各个方面,时间效率排序算法效率空间效率路由器与布隆过滤器(bloom filter)通讯量效率比特币与稀疏恢复MapReduce与DSP模型,8,第1章 算法引论,1课程学习背景 1.1 为什么学习算法?1.2 算法的定义1.3 如何描述一个
4、算法?2算法复杂性分析2.1 计算模型与算法分析框架2.2 渐进表示,什么是算法?,简单说来,算法就是问题的程序化解决方案。定义:算法就是一个定义良好的可计算过程,它取一个或者一组值作为输入,并产生出一个或者一组值作为输出。即,算法就是一系列的计算步骤,用来将输入数据转换成输出结果。,“冒泡”排序是个计算过程,9,什么是算法?,一个算法通常具有如下特征:输 入:一个算法具有零个或者多个取自指定集合的输入值;输 出:对算法的每一次输入,算法具有一个或多个与输入值相联系的输出值;确定性:算法的每一个指令步骤都是明确的;有限性:对算法的每一次输入,算法都必须在有限步骤(即有限时间)内结束;正确性:对
5、每一次输入,算法应产生出正确的输出值;通用性:算法的执行过程可应用于所有同类求解问题,而不是仅适用于特殊的输入。,10,相关概念:问题和问题实例,问题(Problem):规定了输入与输出之间的关系,可以用通用语言来描述;问题实例:某一个问题的实例包含了求解该问题所需的输入;排序问题将一系列数按非降顺序进行排序排序问题的一个实例:,11,输入: 由n个数组成的一个序列输出: 对输入系列的一个排列(重排) ,使得,Input: Output: ,相关概念:问题和问题实例,算法可求解的问题:人类基因项目在电子商务中的应用在互联网中的应用(图像检索、视频检索).重要问题类型:排序、查找、字符串处理、图
6、问题、组合问题、几何问题、数值问题等。,12,相关概念:输入实例与问题规模,输入实例:问题的具体计算例子如,排序问题的3个输入实例:13,5,6,37,8,92,1243,5,23,76,2553,67,32,42,22,33,4,39,56问题规模:算法的输入实例大小。如,上面排序问题的3个输入实例的规模大小分别为7,5,9,13,相关概念:正确算法与不正确算法,正确的算法 如果一个算法对问题每一个输入实例,都能输出正确的结果并停止,则称它为正确的。不正确的算法可能根本不会停止;停止时给出的不是预期的结果;如果算法的错误率可以控制,也是有用的。,14,作为一种技术的算法,15,如果计算机无限
7、快、存储器都是免费的,算法研究是否还需要?Yes!证明方案是正确的,可以给出正确结果。Yes!希望自己的实现符合良好的软件工程实践要求,采用最容易的实现方法。算法对于当代计算机非常重要!类比硬件与软件的不同,算法的迥异带来的意义可能更明显!比如,对100万个数字进行排序:,插入排序: 计算机A: 109 指令/s世界最好的程序员器语言,归并排序: 计算机B: 107 指令/s普通程序员高级语言+低效编译器,问题求解基础,16,算法设计和分析过程,问题求解基础,求解过程说明:理解问题:是否属于已知问题?确定算法输入范围;了解计算设备的性能:清楚速度和计算资源的限制;在精确解法和近似解法之间做选择
8、:有时近似算法是唯一选择;确定适当的数据结构算法的设计技术:这是本课程学习重点和目标;算法的描述:自然语言、流程图、伪代码;算法的正确性证明:证明对于所有合法输入均能产生正确结果;算法的分析:分析执行效率(时间和空间)、简单性、一般性;为算法写代码:利用编程语言以计算机程序行使实现;,17,18,第1章 算法引论,1课程学习背景 1.1 学习动机1.2 算法定义1.3 算法描述2算法复杂性分析2.1 计算模型与算法分析框架2.2 渐进表示,算法描述方法,伪代码拥有自然语言和类编程语言特性,经常被用于算法描述;与真实代码(real code)的差异:对特定算法的描述更加的清晰与精确;不需要考虑太
9、多技术细节(数据抽象、模块、错误处理等);用伪代码可以体现算法本质;永远不会过时;,19,算法描述方法,20,伪代码的一些约定:书写上的“缩进”(缩排)表示程序中的分程序(程序块)结构;循环结构(while, for, repeat) 和条件结构 (if, then, else) 与Pascal, C语言类似;“/ ” or “ ”来表示注释;利用ije 来表示多重赋值,等价于 je 和ij.变量是局部于给定过程的。数组元素的访问方式: Ai ; A1 . j = 符合数据一般组织成对象,由属性(attribute)或域(field)所组成;域的访问是由域名后跟方括号括住的对象名形式来表示,
10、如lengthA;参数采用按值传递方式;布尔操作 “and” 和“or”具有短路能力: 如 “ x and (or) y ”: 无论y的值如何,必须首先计算x的值。,插入排序的伪代码,问题: 把一系列数据按非递增的顺序排列输入: n 个输入数输出: 输入系列的一个排序 ,使得,INSERTION-SORT(A)1for( j = 2; j 0 & Ai key)5Ai+1 = Ai6i = i-17Ai+1 = key,21,22,第1章 算法引论,1课程学习背景 1.1 学习动机1.2 算法定义1.3 算法描述2算法复杂性分析2.1 计算模型与算法分析框架2.2 渐进表示,算法分析框架,算法
11、分析是指对一个算法所需要的资源进行预测,通常是对计算时间和空间的预测。算法分析的目的是为了从多个候选算法中选择一个最有效的算法,或去掉较差的算法。进行算法分析之前,首先要确立有关实现技术的模型,通常采用随机存取机(RAM)计算模型。默认情况下,算法分析一般是指对算法时间效率的分析。,23,RAM模型,RAM(Random Access machine):随机访问机算术指令:加法、减法、乘法、除法、取余、取整数据移动指令:装入、存储、复制控制指令:条件与无条件转移、子程序调用与返回单条指令的代价均为常数数据类型(期望运行时间)整数型 vs. 浮点实数型 数据规模为n时,单个数据由c*log n位
12、比特表示其他指令指数运算: 不是常数时间指令, 2 是常数时间指令,24,RAM模型(内存模型),RAM(Random Access machine):随机访问机Unit cost assumption模型简单,应用广泛,25,CPU,内存,26,内存层级,现代计算机的存储由多层级组成hierarchy层级离CPU越远,速度越慢,存储容量越大不同层级之间以块(block)的形式移动数据,27,Slow I/O,Disk access is 106 times slower than main memory access,track,magnetic surface,read/write arm
13、,“The difference in speed between modern CPU and disk technologies is analogous to the difference in speed in sharpening a pencil using a sharpener on ones desk or by taking an airplane to the other side of the world and using a sharpener on someone elses desk.” (D. Comer),4835 1915 5748 4125,I/O模型(
14、外存模型),去掉Unit cost assumption以块(block)形式读取磁盘数据,28,数据流模型,数据流是一个由海量数据组成的数据序列Single Pass: 每个数据最多访问一次Small Space: 存储空间非常小Small time: 更新(插入删除)速度快,CPU,内存:数据摘要,回答近似查询,频繁项有哪些/数据分布是什么/Top-K是什么?,算法分析框架,算法运行时间是指在特定输入时,所执行的基本操作数。输入数据的规模和分布是影响算法运行时间的两个主要因素。 算法时间效率分析框架:算法时间效率用算法输入规模n为参数的函数来度量;对输入规模相同情况下,有些算法的时间效率会
15、有明显差异。对于这样的算法要区分最坏运行时间、最佳运行时间、平均运行时间;对于大规模输入,通常只关注运行时间效率函数的增长率,即只关注函数的高阶项,而忽略低阶项和高阶项系数。,30,算法分析框架,对于规模为n的任何输入,一般考察算法的最坏运行时间:最坏情况运行时间是在任何输入情况下的一个上界;对于某些算法来说,最坏情况出现还是比较频繁的,如信息检索(信息经常不存在);大致上看,“平均情况”通常和最坏情况一样差。平均运行时间(期望运行时间)概率分析技术( probabilistic analysis ) 随机化算法( randomized algorithm )函数的增长率抽象简化。忽略每条语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 课件

链接地址:https://www.31ppt.com/p-1557649.html