算法引论及简单算法.ppt
《算法引论及简单算法.ppt》由会员分享,可在线阅读,更多相关《算法引论及简单算法.ppt(37页珍藏版)》请在三一办公上搜索。
1、补充材料1 算法引论及简单算法,清华大学 自动化系刘连臣2010年11月1日,计算机语言与程序设计基础,1,注 意,算法是程序设计的灵魂,2,与数据结构的区别:考虑问题的角度:数据结构关心不同的数据结构在解题中的作用和效率;算法关心不同设计技术的适用性和效率。考虑问题的高度:数据结构关心的是解具体问题,算法不仅如此,它提供一种解决问题的通用方法。,与其他课程的关系,高级程序设计语言(C语言,等),数据结构,算法设计与分析,系统的设计与实现,3,主要内容,目标:了解算法分析的基本含义。掌握查找算法、排序算法、递推算法等算法理念。,提纲补1.1 算法分析补1.2 查找算法补1.3 排序算法补1.4
2、 递推算法,4,补1.1 算法分析,前面的课程内容以C语言语法为主本补充章介绍一些基本算法大家在编写程序的时候,“八仙过海,各显神通”,解决同一个问题,可以使用各种方法。算法之间存在着“优劣”之分,5,补1.1 算法分析,1、算法分析的目的 通过对算法分析,在把算法变成程序实际运行前,就知道为完成一项任务所设计的算法的好坏,从而运行好算法,改进差算法,避免无益的人力和物力浪费。,6,补1.1 算法分析,2、算法分析的含义算法分析是一种分析技术,它以独立于具体的硬件平台、编译器和编程语言的方式,来描述算法的执行行为,即它关心的是算法,而不是程序。算法分析是一种测量算法的性能的方法,它不关心精确的
3、细节,如在算法的某次运行中总共执行了多少条机器指令,而是想要一个大致的估计,即随着输入数据规模的增大,算法所需工作量以何种速度递增。(关心变化趋势),7,补1.1 算法分析,3、算法复杂性 时间复杂性和空间复杂性,8,补1.1 算法分析,1.有些计算机需要用户提供程序运行时间的上限,一旦达到这个上限,程序将被强制结束。2.正在开发的程序可能需要提供一个满意的实时响应。,为什么要考虑时间复杂性?,9,1.多用户系统中运行时,需指明分配给该程序的内存大小。2.可提前知道是否有足够可用的内存来运行该程序。3.一个问题可能有若干个内存需求各不相同的解决方案,从中择取。4.利用空间复杂性来估算一个程序所
4、能解决问题的最大规模。,考虑程序的空间复杂性的理由:,补1.1 算法分析,10,4.如何进行算法分析?事前分析:就算法本身,通过对其执行性能的理论分析,得出关于算法特性时间和空间的一个特征函数()与计算机软硬件没有直接关系。事后测试:将算法编制成程序后放到计算机上运行,收集其执行时间和空间占用等统计资料,进行分析判断直接与物理实现有关。,补1.1 算法分析,11,1)事前分析目的:试图得出关于算法执行特性的一种形式描 述,以“理论上”衡量算法“好坏”。如何给出反映算法执行特性的描述?最直接方法:统计算法中各种运算的执行情况:运用了哪些运算 每种运算被执行的次数 该种运算执行一次所花费的时间 算
5、法的执行时间=Fi*ti,补1.1 算法分析,12,估算执行时间的方法,选择一种或多种(如加、乘和比较等),然后确定这种(些)操作分别执行了多少次。令n代表程序实例特征,则执行时间计算公式为:TP(n)=c1ADD(n)+c2SUB(n)+c3MUL(n)+c4DIV(n)+,c1、c2、c3、c4分别表示一次加、减、乘、除操作所需的时间。函数ADD(n)、SUB(n)、MUL(n)、DIV(n)分别表示程序P中,所使用的加、减、乘、除操作的次数。,这种方法是否成功取决于识别关键操作的能力,这些关键操作对时间复杂性的影响最大。,一条语句在整个程序运行时实际执行时间=频率计数*每执行一次该语句所
6、需的时间,补1.1 算法分析,13,频率计数:算法中语句或运算的执行次数。例:x=x+y for(i=1;i=n;i+)for(i=1;i=n;i+)x=x+y;for(j=1;j=n;j+)x=x+y;(a)(b)(c)分析:(a):x=x+y执行了1次(b):x=x+y执行了n次(c):x=x+y执行了n2次 注:在事前分析中,只限于确定与所使用机器及其他环境因素无关的频率计数,依此建立一种理论上分析模型。,补1.1 算法分析,14,数量级语句的数量级:语句的执行频率。例:1,n,n2 算法的数量级:算法包含所有语句的执行频率之和。算法的数量级从本质上反映了一个算法的执行特性。例:求解同一
7、问题的三个算法分别具有n,n2,n3数量级。若n=10,则可能的执行时间将分别是10,100,1000 个单位时间与环境因素无关。,补1.1 算法分析,15,补1.1 算法分析,5、算法复杂性的等级常量阶时间复杂度为O(1)算法运行时间不随着问题的规模而变化如:简单的赋值语句,x=y;算术运算,x=y*5+z%3;固定次数的循环语句等,for(i=0;i10;i+)for(j=0;j20;j+)aij=0;,16,补1.1 算法分析,线性阶时间复杂度为O(n)算法运行时间随着问题的规模而成线性变化,for(i=0;in;i+)sum=sun+i;算法执行了多少次运算?,i=0;执行了1次in;
8、执行了n+1次i+;执行了n次sum=sun+i;执行了n次共执行了3n+2次运算,时间复杂度就是O(3n+2)实际上,算法的时间复杂度并不精确计算基本操作的执行次数,它主要考虑问题规模的增长率。O(n),17,补1.1 算法分析,平方阶时间复杂度为O(n2)算法运行时间随着问题的规模而成平方变化,for(i=0;in;i+)for(j=0;jn;j+)sum=sun+aij;/执行n2次printf(“%dn”,sum);/执行n次时间复杂度就是O(n2),18,补1.1 算法分析,多项式阶时间复杂度为O(nd)d为固定常数算法运行时间随着问题的规模而成d次多项式阶变化对数阶 O(logn)
9、指数阶 O(log2n)阶乘阶 O(n!),若T(n)=adnd+a1n+a0是一个d次多项 式,则有T(n)=O(nd),19,5、算法分类(计算时间),多项式时间算法:可用多项式(函数)对其计算时间限界的算法。常见的多项式限界函数有:(1)(logn)(n)(nlogn)(n2)(n3)指数时间算法:计算时间用指数函数限界的算法 常见的指数时间限界函数:(2n)(n!)(nn)说明:当n取值较大时,指数时间算法和多项式时间 算法在计算时间上非常悬殊。,补1.1 算法分析,20,计算时间的数量级对算法有效性的影响 数量级的大小对算法的有效性有决定性的影响。例:假设解决同一个问题的两个算法,它
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 引论 简单
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6329389.html