




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
算法分析与复杂度计算,主讲教师:徐红艳,计算机系统中的任何软件(系统软件、应用软件)都是按照特定的算法来实现的。 算法的好坏直接决定所实现软件性能的优劣。,课程简介,设计软件时需要解决的问题: (1)用什么方法设计软件 (2)设计的算法需要什么样的资源 (3)需要多少运行时间 (4)需要多少存储空间,分析,算法设计与分析是计算机科学与技术的一个核心问题。,课程简介,设计,参考教材: 1、王晓东. 算法设计与分析(第2版). 清华大学出版社. 2、潘彦. 算法设计与分析基础(第2版). 清华大学出版社. 3、郑宗汉. 算法设计与分析. 清华大学出版社.,课程简介,课程的侧重点: 算法设计 第三章:算法设计的基本工具和优化技术 第四章:通用的算法设计基本策略 第五章:复杂问题的算法设计策略 第六章:采用不同策略解决相同问题,并进行效率分析。 算法分析:对设计的算法进行时间和空间复杂度的分析。,课程简介,第 一 章 算 法 概 述,人类使用计算机的目的:计算机作为工具,帮助人类求解问题。 算法设计的重点:把人类找到的求解问题的方法、步骤以过程化、形式化和机械化的形式表现出来,以便让计算机执行。 算法分析:是对一个算法需要多少计算时间和存储空间作定量的分析 复杂度计算。,11 用计算机求解问题与算法,111 用计算机求解问题的步骤,人在解决问题时有很大的灵活性,对于同一个问题,不同的人有不同的经验,会采用不同的方法,如何用计算机解决一个现实中的问题呢?虽然有很多不同的方法,但基本步骤是相同的。,问题分析 数学模型建立 算法设计与选择 算法表示 算法分析 算法实现 程序调试 结果整理文档编制,用计算机解决一个现实中的问题步骤:,111 用计算机求解问题的步骤,问题分析:准确、完整地理解和描述问题是解决问题的第一步。 数学模型建立:用计算机解决实际问题必须有合适的数学模型。 算法设计与选择:算法设计是指设计求解某一特定类型问题的一系列步骤,并且这些步骤是可以通过计算机的基本操作来实现的。,111 用计算机求解问题的步骤,算法分析:对算法的某些特定输入,估算该算法所需的内存空间和运行时间;其次是为了建立衡量算法优劣的标准,用以比较同一类问题的不同算法。通常将时间和空间的增长率作为衡量的标准。,111 用计算机求解问题的步骤,算法表示:对于复杂的问题,确定算法后可以通过图形准确表示算法。算法的表示方式很多如:算法流程图、盒图、PAD图和伪码(类似于算法设计语言)等。 算法实现:根据选用的程序设计语言,编写出计算机能够执行的程序。,111 用计算机求解问题的步骤,程序调试:算法测试的实质是对算法应完成任务的实验证实,同时确定算法的使用范围。测试方法一般有两种:白盒测试对算法的各个分支进行测试;黑盒测试检验对给定的输入是否有指定输出。,111 用计算机求解问题的步骤,结果整理文档编制:编制文档的目的是让人了解你编写的算法。 在这些步骤中,算法设计是解决问题的核心。其次是针对设计的算法进行复杂度分析。,111 用计算机求解问题的步骤,112 算法及其要素和特性,算法的定义:算法是求解某一特定问题的一组有穷规则的集合。 算法的要素: 操作:算术运算、关系比较、逻辑运算、数据传送(I/O,赋值等) 控制结构:顺序、选择、循环控制(也称迭代) 数据结构:数据的逻辑结构及存储结构,112 算法及其要素和特性,算法的基本性质: 目的性:能完成赋予它的功能 分步性:由一系列计算机可执行的步骤组成 有序性:不可随意改变算法步骤的执行顺序 有限性:算法所包含的步骤是有限的。 操作性:算法总是对某些对象进行操作,使其状态改变,完成特定功能。,算法的基本特征 有穷性: 一个算法在执行有穷步之后必须结束,而且要求运行这些步骤的时间是人们可以接受的。 确定性:在任何条件下,算法都只有一条执行路径。 可行性:算法中描述的操作都可以通过已经实现的基本操作运算有限次实现。 输入:有零个或多个输入 输出:有一个或多个输出,112 算法及其要素和特性,113 算法设计及基本方法,算法设计的概念:其任务是对各类具体问题设计良好的算法。 算法设计应注意的问题 正确性(Correctness) 可读性(Readability) 健壮性(Rubustness) 高效率与低存储量需求,算法设计的基本方法 结构化方法“自顶向下, 逐步求精” “自顶向下”是将复杂、大的问题划分为小问题。 “逐步求精”是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。,113 算法设计及基本方法,面向对象方法 对象=数据+对数据操作的代码实体 面向对象算法设计方法的过程包括以下步骤: 在给定的抽象层次上识别类和对象 识别这些对象和类的语义 识别类和对象之间的关系 实现类和对象,113 算法设计及基本方法,本书采用的设计方法结构化设计方法 自顶向下模块化分解过程 把一个较大的算法划分为若干子算法 每一个模块可继续划分为更小的子模块 直到用三种控制结构和具体操作表示算法 注:运用这种编程方法,考虑问题必须先进行整体分析。,113 算法设计及基本方法,模块划分的基本要求简单性、独立性和完整性 模块的功能尽可能地单一化、明确化 模块间的联系及相互影响尽可能地小 模块的规模应当足够小,以便于调试,113 算法设计及基本方法,算法设计的基本方法 抽象:包括算法的抽象和数据抽象。 算法抽象是指算法的寻求(或开发)采用逐步求精、逐层分解的方法。 数据抽象也指在算法抽象的过程中逐步完善数据结构和引入新的数据及确定关于数据的操作。 枚举:“枚举”一些真实数据 归纳:“归纳”出算法的细节,113 算法设计及基本方法,121 算法描述简介,算法是对解题过程的精确描述。 算法 = 控制结构 + 原操作 表示算法的语言主要有: 自然语言 流程图 伪代码 计算机算法设计语言,本书采用类C语言的伪代码描述,具体细节约定如下: 三种基本控制结构的描述 数据结构说明 模块及模块间的接口方式的描述 其它细节说明,122 本书算法描述约定,123 一个简单问题的求解过程,问题求解的步骤可以简化为三步 问题分析:在对问题进行认真分析的基础上,确认问题的逻辑结构和问题的基本功能,并在数学、物理等问题领域相关知识的基础上建立数学模型。 算法设计:找出解决问题的处理步骤 算法分析:对数学模型的建立、数据结构的选择及算法设计工作的评价、总结。,【例】求二个正整数的最大公约数。 问题分析:此题只需有小学知识,就可有以下建立以下的数学模型。 数学模型:a,b0 的整数,求c,c能整除a,b,且a/c与b/c互质。 算法设计:通过“枚举尝试”(逐个尝试)就可以“试出”a,b有哪些是公约数,并将这些公约数“累乘”,就能得到最大公约数。,123 一个简单问题的求解过程,算法描述如下: zdgys( ) int a,b,c,i; input(a,b); c=1; /变量c是为累乘因数而设置的; for (i=2; i=a and i=b; i+) /“枚举”可能的公约数 while (a%i=0 and b%i=0 ) /“试”i是否为公约数 c=c*i; a=a/i; b=b/i; print(“%d is maximal common divisor”,c); ,算法效率分析:由于算法是盲目地尝试可能的因数,比较操作次数较多,所以算法的效率并不高。 “问题分析、建模、算法设计要点、算法分析”是解决问题的必然过程。,123 一个简单问题的求解过程,下面是算法设计时需要注意的一些问题: 通过输入语句增加算法的通用性 会忘掉“输出”或在模块间传递处理的数据结果 易忽略细节造成“死循环”。 出现语序方面的错误,特别是双重循环中指令常有嵌套错误。,123 一个简单问题的求解过程,注意学习和总结。 用大脑“运行”算法是学习算法很好的方法。 解题时要学会择优。简单说择优要考虑四个方面:可读性、可修改性、时间效率和空间效率。,123 一个简单问题的求解过程,第 二 章 算 法 分 析 基 础,算法分析的重要性,1、百钱买百鸡问题 问题叙述:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?” 算法实现(1)及分析 算法实现(2)及分析,算法分析的重要性,2、货郎担问题 问题描述:某售货员要到若干个城市销售货物,已知各城市之间的距离,要求售货员选择出发的城市及旅行路线,使每个城市仅经过一次,最后回到原出发城市,而总路程最短。,问题分析,算法实现,算法分析,算法分析的重要性,算法效率的衡量标准:算法的复杂度,包括算法的时间复杂度和空间复杂度。 算法分析的任务:对设计出的每一个具体的算法,利用数学工具,讨论其复杂度。,2.1.1 算法分析的评价体系,人对算法的维护主要有编写、调试、改正和功能扩充等工作,这就需要在算法设计时注重算法的可读性。 机器对算法的运行效率主要包括时间效率和空间效率。算法在完成功能的前题下最好是占用空间少而且执行时间短。 算法实现时,要考虑算法在运行过程中与使用者进行交互的情况。这就要求,算法的交互部分要具有友好性和健壮性。,总之,对算法的分析和评价,一般应考虑正确性、可维护性、可读性、运算量及占用存储空间等诸多因素。其中评价算法的三条主要标准是: (1) 算法实现所耗费的时间; (2) 算法实现所所耗费的存储空间,其中 主要考虑辅助存储空间; (3) 算法应易于理解,易于编码,易于调 试。,2.1.1 算法分析的评价体系,1.和算法执行时间相关的因素: 1)问题中数据存储的数据结构 2)算法采用的数学模型 3)算法设计的策略 4)问题的规模 5)实现算法的程序设计语言 6)编译算法产生的机器代码的质量 7)计算机执行指令的速度,2.1.2 算法的时间复杂性,假定:百钱买百鸡的问题中,其最内部的循环体每执行一次需要1s时间。,算法的输入规模和运行时间的阶:,对n=220个数进行排序,选择排序需64天, 合并排序需要20秒,通过上面问题的分析,可以知道: (1)算法的执行时间随着问题规模的增大而增长,增长的速度随不同的算法而不同。 (2)没有一个方法能准确的计算出算法的执行时间。原因,算法的输入规模和运行时间的阶:,算法的输入规模和运行时间的阶:,算法的运行时间表示为一个与输入规模n相关的函数f(n),反映算法的运行时间随着输入规模的增长而增长的情况。,若将问题的输入规模设为n,则百钱买百鸡: 算法1的时间花费估算: 第4行:1 第5行:1+2(n+1) 第6行:(n+1) + 2(n+1)2 第7行:(n+1)2+ 2(n+1)3 第8行:14(n+1)3 第9、10、11、12行: 不超过4(n+1)3,算法的输入规模和运行时间的阶:,则该算法的时间花费T1(n),算法的输入规模和运行时间的阶:,算法的输入规模和运行时间的阶:,随着n的增大,例如当n=100万时,算法的主要执行时间主要取决于算式中的第一项,而且随着n的增大,第一项的系数对算法的执行时间也变得不重要,于是,可把T1(n)改写为:,这时,称 的阶是,百钱买百鸡:算法2的时间花费估算: 第4行:1 第5、6行:各2个 2*2=4 第7行:1 + 2(n/5+1) 第8行:(n/5+1)+ 2(n/5+1)(n/3+1) 第9行: 3(n/5+1)(n/3+1) 第10行: 10(n/5+1)(n/3+1) 第11、12、13、14行: 不超过4(n/5+1)(n/3+1),算法的输入规模和运行时间的阶:,算法的输入规模和运行时间的阶:,这时,称 的阶是,算法的输入规模和运行时间的阶:,把T1*(n)和T2*(n)进行比较,有,当n很大时,c1/c2的作用很小。,通常有两种衡量算法效率的方法: 1)事后统计法(有缺点,较少使用) 2)事前分析估算法 算法的时间效率是问题规模的函数。假如,随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,则可记作:T(n)=(f(n)。,算法效率的衡量方法,定义2.1,设算法的执行时间为T(n),如果存在T*(n),使:,称T*(n)为算法的渐进时间复杂度。 在算法分析中用渐进时间复杂性来衡量一个算法的时间复杂性。,在百钱买百鸡问题中: (1)算法1的时间性为T1*(n),它的阶是n3 (2)算法2的时间性为T2*(n),它的阶是n2,表示时间复杂性的阶为:,表1:不同时间复杂性下不同输入规模的运行时间,时间复杂度,假定在计算机C1和C2上运行这些算法 (1)C2机的速度是C1机的10倍。 (2)这些算法在C1机上的运行时间为T,可处理的输入规模是n1 (3)在C2机上运行同样时间,可处理的规模扩大为n2,表2:计算机速度提高,不同算法复杂性求解规模的扩大,假定A1,A2,A3, ,A6是求解同一个问题的6个算法,它们的时间复杂度分别为:,时间复杂度,前4种时间复杂性:,与输入规模n的一个确定的幂同阶,计算机运算速度的提高,可以使阶梯规模以一个常数因子的倍数增加。通常把这类算法称为多项式时间算法。,后2种时间复杂性:,称为指数时间算法。,时间复杂度,运行时间的上界,O记号:,在百钱买百鸡问题中: (1)算法1执行基本操作的步骤至多为C1*n3,当n的规模增大时,常数C1对运行时间的影响不大,则算法1的运行时间的上界写成:O(n3) (2)同理,算法2的的运行时间的上界写成:O(n2),运行时间的上界,O记号:,在一般情况下,当输入规模大于或等于某个阈值n0时,算法运行时间的上界是某个正常数C的g(n)倍,就称算法的运行时间至多是O(g(n)。 O记号的定义如下:,定义:令N为自然数集合,R+为正实数集合。函数f:NR+,函数g:NR+,若存在自然数n0和正常数c,使得对所有的nn0 ,都有f(n) cg(n),就称函数f(n)的阶至多是O(g(n)。,运行时间的上界,O记号:,因此,如果存在 则:,即意味着:f(n) = O(g(n) 这个定义表明:f(n)的增长至多象g(n)的增长那样快。这时称O(g(n)是f(n)的上界。,举 例,运行时间的下界,记号:,在百钱买百鸡问题中: (1)第11、12、13、14行,仅在条件成立时才执行,其执行次数未知。 (2)假定条件都不成立,这些语句一次也没有执行,该算法的执行时间至少为:,算法执行时间计算,运行时间的下界,记号:,在一般情况下,当输入规模大于或等于某个阈值n0时,算法运行时间的下界是某个正常数C的g(n)倍,就称算法的运行时间至少是 (g(n)。 记号的定义如下:,定义:令N为自然数集合,R+为正实数集合。函数f:NR+,函数g:NR+,若存在自然数n0和正常数c,使得对所有的nn0 ,都有f(n)cg(n),就称函数f(n)的阶至少是(g(n)。,运行时间的下界,记号:,因此,如果存在 则:,即意味着:f(n) = (g(n) 这个定义表明:f(n)的增长至少象g(n)的增长那样快。这时称 (g(n)是f(n)的下界。,举 例,运行时间的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西百色市西林县中小学教师“县管校聘”跨校竞聘33人笔试模拟试题及答案解析
- 2025广东中山市三乡镇招聘公办学校合同制教师38人笔试备考题库及答案解析
- 2025泰隆银行嘉兴分行招聘笔试模拟试题及答案解析
- 2025广东深圳市南山实验教育集团南海中学招聘初中教师备考试题及答案解析
- 通信网络施工质量、安全、进度和文明施工保证措施
- 2025福建三明市教育局部分直属学校选聘工作人员16人笔试备考试题及答案解析
- 2025福建南平武夷山市城市建设投资集团有限公司所属企业社会招聘3人笔试备考题库及答案解析
- 2025广西梧州市龙投人力资源有限公司招聘13人备考题库及答案解析
- 厂房建设项目现场监理文明施工管理措施
- 航空工程设计重点难点分析及措施
- 麦当劳营销策略分析及对策建议定稿
- 全陪导游工作流程
- 2025年心理辅导:声音疗愈《听听声音》课件设计
- 2025年七年级上册生物知识点总结样本(2篇)
- 变化与更新-2025中国家居家装行业发展研究报告-树懒生活fine-202501
- 主要施工机械设备、劳动力、设备材料投入计划及其保证措施
- 《柴油机的维护保养》课件
- 4S店企业职业卫生培训
- 石油化工设备维护与检修手册
- 2023部编新人教版五年级(上册)道德与法治全册教案
- 拆迁工程成本控制方案
评论
0/150
提交评论