收藏 分享(赏)

算法201001-引论.ppt

上传人:scg750829 文档编号:9175717 上传时间:2019-07-26 格式:PPT 页数:43 大小:800KB
下载 相关 举报
算法201001-引论.ppt_第1页
第1页 / 共43页
算法201001-引论.ppt_第2页
第2页 / 共43页
算法201001-引论.ppt_第3页
第3页 / 共43页
算法201001-引论.ppt_第4页
第4页 / 共43页
算法201001-引论.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、算法分析与设计,马炳先 ise_ (O)82765957 12教-906房间 济南大学信息科学与工程学院计算机科学系,一、四个基本问题,二、参考教材及教学计划,三、考核方式,算法分析与设计,四、算法描述方法,一、四个基本问题,二、参考教材及教学计划,三、考核方式,算法分析与设计,四、算法描述方法,四个基本问题,1什么是算法? 2什么是算法分析与设计? 3为什么学习算法分析与设计? 4如何学好算法分析与设计?,1什么是算法?,什么是程序?,计算机程序是一组指令(及指令参数)的组合,这组指令依据既定的逻辑控制计算机的运行。,程序设计方法,Q:你已学习过的程序设计语言有那些? Q:你已掌握的程序设计

2、语言是那些?,如何编写程序?,1什么是算法?,本科阶段至少4万行代码,计算机程序是一组指令(及指令参数)的组合,这组指令依据既定的逻辑控制计算机的运行。,既定逻辑就是指令运行的规则,程序员处理该问题的思路,算法,1什么是算法?,1什么是算法?,一个算法是求解某一类特定问题的一组有穷规则的集合。 1)一个算法是一组规则,通常称之为算法步骤;这组规则是有穷的,即能用有限的形式表示出来。 2)一个算法是针对一类问题而设计的。,一个问题?,实例化!,1什么是算法?,计算机算法是以一步接一步的方式来详细描述计算机如何将输入转化为所要求的输出的过程,或者说,算法是对计算机上执行的计算过程的具体描述。,通俗

3、一点:,程序是算法用某种程序设计语言的具体实现,程序=算法+数据结构,1什么是算法?,算法的特征:,1 有限性 2 确定性 3 可行性 4 输入 5 输出,算法中每条指令的执行次数有限,执行每条指令的时间也有限,组成算法的每条指令清晰、无歧义,组成算法的每条指令都是计算机可执行的,算法产生至少一个量作为输出,有零个或多个外部量作为算法的输入,程序可以不满足算法的有限性,1 有限性 2 确定性 3 可行性 4 输入 5 输出,程序应该满足吗?,1什么是算法?,死循环,四个基本问题,1什么是算法? 2什么是算法分析与设计? 3为什么学习算法分析与设计? 4如何学好算法分析与设计?,2什么是算法分析

4、与设计?,算法主要包含两个方面的内容: 算法设计:主要研究怎样针对某一特定类型的问题设计出求解步骤。 算法分析:讨论所设计出来的算法步骤的正确性和复杂性。,2什么是算法分析与设计?,算法设计,研究怎样针对某一特定类型的问题设计出求解步骤。,同一问题有不同的求解方法,那个最好或比较好呢?,2什么是算法分析与设计?,算法分析,讨论所设计出来的算法步骤的正确性和复杂性。,正确性,解决问题,得到需要的结果,复杂性,算法分析工作可归结为两部分: 正确性证明:主要包括算法的可终止性(即对任意输入,算法的执行都可以在有限步内终止)和算法的执行结果(输出)与问题(问题类)的求解要求相符两方面的证明。 复杂性分

5、析:指算法的执行所需要的时间量和空间量的分析,其中对时间量的分析尤为重要。,2什么是算法分析与设计?,四个基本问题,1什么是算法? 2什么是算法分析与设计? 3为什么学习算法分析与设计? 4如何学好算法分析与设计?,3 为什么学算法分析与设计?,1专业知识的基础 2 做编程的高手 3 做解决问题的高手 4 做发现问题的高手 5 成为业界专家的基础,计算机科学和计算机应用的核心,无论是计算机系统、系统软件的设计,还是为解决计算机的各种应用所作的设计都可归结到算法的设计。,四个基本问题,1什么是算法? 2什么是算法分析与设计? 3为什么学习算法分析与设计? 4如何学好算法分析与设计?,4 如何学好

6、算法分析与设计?,1 勤于思考,2 勤于动手,一、四个基本问题,二、参考教材及教学计划,三、考核方式,算法分析与设计,四、算法描述方法,二、参考教材及教学计划,吴哲辉 崔焕庆 马炳先 吴振寰 编著机械工业出版社,按需印刷,【作 者】王晓东 【出 版 社】清华大学出版社,二、参考教材及教学计划,教学内容,第1章 算法设计与分析概论 第2章 分治与递归算法 第3章 散列与凝聚算法 第4章 贪心算法 第5章 动态规划算法 第6章 回溯算法 第7章 分支限界算法 第8章 NP-完全问题,教学计划 (课堂,34 学时),第1章 算法设计与分析概论(4学时) 第2章 分治与递归算法(6学时) 第3章 散列

7、与凝聚算法 第4章 贪心算法(6学时) 第5章 动态规划算法(6学时) 第6章 回溯算法(6学时) 第7章 分支限界算法(4学时) 第8章 NP-完全问题(2学时),教学计划(实验,14学时),第1章 算法设计与分析概论 第2章 分治与递归算法(2学时) 第3章 散列与凝聚算法 第4章 贪心算法(2学时) 第5章 动态规划算法(4学时) 第6章 回溯算法(4学时) 第7章 分支限界算法(2学时) 第8章 NP-完全问题,一、四个基本问题,二、参考教材及教学计划,三、考核方式,算法分析与设计,四、算法描述方法,三、考核方式,总评=期末考试+平时成绩,其中:期末试卷成绩70%;平时成绩30%。,平

8、时成绩=作业+实验报告 +课堂考勤,其中:作业10分,实验报告10分,课堂考勤10分。,一、四个基本问题,二、参考教材及教学计划,三、考核方式,算法分析与设计,四、算法描述方法,四、算法描述方法,对于设计出来的一类问题的求解步骤,需要一种表达方式,即算法描述。,描述算法最合适的语言是介于自然语言和程序语言之间的伪语言(伪代码) 。,类PASCAL,类C,类JAVA,可使用任何表达能力强的方法使算法表达更加清晰和简洁,而不至于陷入具体的程序语言的某些细节。,何为形式化?,四、算法描述方法-例子,例1 冒泡排序算法,算法的基本思想:轻者(小的元素)像气泡那样从水底往上浮。在排序过程中,从后面(理解

9、为底部)开始,每次把相邻的两个元素作比较,当前面的元素大于后面的元素时,就交换它们的位置。这样,所有相邻的元素比较一遍以后最小的元素就被交换到了最前面(浮到上面)。,下一轮?,算法1.1 冒泡排序 输入:待排序数组A,其中有n个元素; 输出:排好序的数组A。 bubblesort(float A, int n) int i,j;for (i=0; ii; j-)if (AjAj-1)swap(Aj, Aj-1);,算法1.2 元素交换 输入:待交换元素的位置x和y; 输出:交换后的结果仍存于x和y中。 swap(float *x, float *y) float u = *x;*x = *y;

10、*y = u; ,例1.2 求最大公约数的辗转相除算法。 基本思想:用小的数作除数,大的数作为被除数,做除法求余,如果余数等于零,那么小的数就是两个数的最大公约数。,否则?,用小的数做被除数,余数作为除数,再做除法求余,如此辗转相除下去,直到余数等于零。,最后除数就是要求的原本两个数的最大公约数。,gcd(21,9)=?,21=29+3,gcd(21,9)= gcd(9,3),9=33+0,gcd(9,3)=3,gcd(21,9)=3,gcd(a,b)= gcd(b,a mod b),证明!,算法1.3 求最大公约数的辗转相除法 输入:两整数m和n; 输出:m和n的最大公约数。,int gcd

11、(int m, int n)int a=maxm,n;int b=minm,n;int c;,while (b!=0) c=a mod b;,a=b;b=c;,return ( ); ,a,gcd(a,b)=?,算法1.4 求最大公约数的递归算法 输入:两整数m和n; 输出:m和n的最大公约数。,int gcd(int m, int n)int a=maxm,n;int b=minm,n;int c;if (b = 0) return (a);else c=a mod b;return( gcd(b,c) );,gcd(a,b)= gcd(b,a mod b),算法复杂度分析,Q1:如何评价一

12、个算法的优劣?,Q2:算法转化为程序运行后,影响程序运行的因素有哪些?,Q3:如何避免客观因素的影响呢?,Q4:为什么渐进时间复杂度?,两个概念,时间频度T(n),一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。 一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。,两个概念,时间复杂度,情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示, 若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=(f(n),称(f(n) 为算法的渐进时间复杂度,简称时间复杂度。,例 有两个算法A1和A2求解同一问题,时间复杂度分别是T1(n)=100n2,T2(n)=5n3。,(1)当输入量n20时,有T1(n)T2(n),后者花费的时间较少。,(2)随着问题规模n的增大,两个算法的时间开销之比5n3/100n2=n/20亦随着增大。,渐近时间复杂度O(n2)和O(n3)从宏观上评价了这两个算法在时间方面的质量。,Q1:如何得到时间复杂度的表达式? Q2:如何比较两个时间复杂度的级别?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报