算法分析与设计第一二三章1(算法与分析算法).ppt
《算法分析与设计第一二三章1(算法与分析算法).ppt》由会员分享,可在线阅读,更多相关《算法分析与设计第一二三章1(算法与分析算法).ppt(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一个正六边形被分成了6个相同的小三角形如果用红、黄两种颜色分别涂满小三角形,那么有()种不同的涂法。(旋转后图案相同的认为是同一种涂法)2008-09-01版权所有:杨波,武汉科技大学理学院 第一章第一章 数学预备知识数学预备知识 第二章第二章 导引与基本数据结构导引与基本数据结构第三章第三章 递归算法递归算法武汉科技大学理学院信息与计算科学系杨 波cookie_2008年9月2008-09-01版权所有:杨波,武汉科技大学理学院 序序专业基础课程:数据结构、计算机语言 操作系统、编译如何编写计算机程序:n数据结构+算法=程序n算法:计算机软件的“灵魂”算法是计算机科学和计算机应用的核心200
2、8-09-01版权所有:杨波,武汉科技大学理学院 ACM国际大学生程序设计竞赛国际大学生程序设计竞赛 ACM国际大学生程序设计竞赛(英文全称:国际大学生程序设计竞赛(英文全称:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)是由美国计算美国计算机协会机协会(ACM)主办的,一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛。经过30多年的发展,ACM国际大学生程序设计竞赛已经发展成为最具影响力的大学生计算机竞赛。赛事目前由IBM公司赞助。2008-09-01版权所有:杨波,武汉科技大
3、学理学院 内容内容n入门三本:q数据结构与算法(傅清祥,王晓东编著)q程序设计导引及在线实践 作者:李文新qACM程序设计培训教程 吴昊 n基础提高:q算法艺术与信息学竞赛 第二版 刘汝佳q算法设计与分析 王晓东q科曼:算法导论q组合数学 第三版 冯舜玺 译q计算几何算法设计与分析 周培德 qConcrete Mathematics-A Foundation For Computer Science Ronald L.Graham,Donald E.Knuth,Oren Patashnik具体数学计算机程序设计艺术三卷 Knuth q组合数学的算法与程序设计q程序设计中的组合数学 吴文虎q图论
4、的算法与程序设计2008-09-01版权所有:杨波,武汉科技大学理学院 教材与参考书教材与参考书n教 材:q余祥宣等编著,计算机算法基础(第三版),华中理工大学出版社,2006年n参考书:q徐士良编,C常用算法程序集,华大学出版社,1998年qCLLIFORD A.SHAFFER著,A Practical Introduction to DATA STRUCTURES AND ALGORITHM ANALYSIS,电子工业出版社,1998年q卢开澄编,计算机算法导引,清华大学出版社,2003年2008-09-01版权所有:杨波,武汉科技大学理学院 1.1 算法算法什么是算法?n算法如数字、计算
5、一样,是一个基本概念。n算法是解一确定类问题的任意一种特殊的方法。n在计算机科学中,算法是使用计算机解一类问题的精确、有效方法的代名词。算法是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。2008-09-01版权所有:杨波,武汉科技大学理学院 算法的五个重要特性算法的五个重要特性确定性、能行性、输入、输出、有穷性1)确定性:算法的每种运算必须要有确切的定 义,不能有二义性。例:不符合确定性的运算n5/0 n将6或7与x相加n未赋值变量参与运算2008-09-01版权所有:杨波,武汉科技大学理学院 2)能行性 算法中有待实现的运算都是基本的运算,原理上每种运算都能由人用纸和笔在“有限
6、”的时间内完成。例:整数的算术运算是“能行”的 实数的算术运算是“不能行”的2008-09-01版权所有:杨波,武汉科技大学理学院 3)输入 每个算法有0个或多个输入。这些输入是在算法开始之前给出的量,取自于特定的对象集合定义域(或值域)4)输出 一个算法产生一个或多个输出,这些输出是同输入有某种特定关系的量。2008-09-01版权所有:杨波,武汉科技大学理学院 5)有穷性 一个算法总是在执行了有穷步的运算之后终止。计算过程:只满足确定性、能行性、输入、输出四个特性的一组规则。n算法和计算过程的区别:q计算过程:操作系统(不终止的运行过程)q算法是“可以终止的计算过程”n算法的时效性:只能把
7、在相当有穷步内终止的算法投入到计算机上运行2008-09-01版权所有:杨波,武汉科技大学理学院 算法学习的内容算法学习的内容n如何设计算法:如何设计算法:设计策略,创造性的活动n如何表示算法如何表示算法q条列式的步骤q流程图q伪码q程序语言n如何确认算法:如何确认算法:证明算法的正确性n如何分析算法如何分析算法:时间和空间需求的定量分析n如何测试算法如何测试算法 调试:调试:“调试只能指出有错误,而不能指出它们不存在错误”作时空分布图:作时空分布图:验证分析结论,优化算法设计2008-09-01版权所有:杨波,武汉科技大学理学院 算法学习的内容算法学习的内容n如何设计算法:如何设计算法:设计
8、策略,创造性的活动n如何表示算法如何表示算法q条列式的步骤q流程图q伪码q程序语言n如何确认算法:如何确认算法:证明算法的正确性n如何分析算法:如何分析算法:时间和空间需求的定量分析n如何测试算法如何测试算法 调试:“调试只能指出有错误,而不能指出它们不存在错误”作时空分布图:验证分析结论,优化算法设计2008-09-01版权所有:杨波,武汉科技大学理学院 算法学习的内容算法学习的内容n如何设计算法:如何设计算法:设计策略,创造性的活动n如何表示算法如何表示算法q条列式的步骤q流程图q伪码q程序语言n如何确认算法:如何确认算法:证明算法的正确性n如何分析算法:如何分析算法:时间和空间需求的定量
9、分析n如何测试算法如何测试算法 调试:“调试只能指出有错误,而不能指出它们不存在错误”作时空分布图:验证分析结论,优化算法设计2008-09-01版权所有:杨波,武汉科技大学理学院 1.2 分析算法分析算法n算法分析 对算法所消耗的资源(时间和空间)进行估算n算法分析的目的q预计所涉及的算法能在什么样的环境中有效地运行,在最好、最坏和平均情况下执行得怎么样。q对同一问题的不同算法进行时空耗费两方面的分析n算法分析的意义 通过对算法的分析,在把算法变成程序实际运行前,就知道为完成一项任务所设计的算法的好坏,从而运行好的算法,改进差的算法,避免无益的人力和物力浪费。算法分析是计算机领域的“古老”而
10、“前沿”的课题。2008-09-01版权所有:杨波,武汉科技大学理学院 重要假设重要假设计算机模型的假设n计算机形式理论模型:Turing机模型n通用计算机模型:q顺序计算机q有足够的“内存”q能在固定的时间内存取数据单元2008-09-01版权所有:杨波,武汉科技大学理学院 计算约定计算约定算法的执行时间=其中,fi是算法中用到的某种运算i的次数称为该运算的“频率计数”。ti是该运算执行一次所用的时间 与程序语言和硬件有关。2008-09-01版权所有:杨波,武汉科技大学理学院 n时间囿界于常数的运算:q基本算术运算,如整数、浮点数的加、减、乘、除q字符运算、赋值运算、过程调用等 特点:尽管
11、每种运算的执行时间不同,但一般只花一 个固定量的时间(单位时间)就可完成。n其他运算:q字符串操作:与字符串中字符的数量成正比q记录操作:与记录的属性数、属性类型等有关 特点:运算时间无定量。2008-09-01版权所有:杨波,武汉科技大学理学院 工作数据集的选择工作数据集的选择n编制能够反映算法在最好、平均、最坏情况下工作的数据配置。然后使用这些数据配置运行算法,以了解算法的性能。编制测试数据是程序测试与算法分析中的关键技术之一。q作为算法分析的数据集:反映算法的典型特征q作为程序正确性及性能测试的数据集:测试程序的对错,反映对性能指标产生影响的方面,如边界值2008-09-01版权所有:杨
12、波,武汉科技大学理学院 算法分析的两阶段算法分析的两阶段n事前分析:求算法的一个时间/空间限界函数,即通过对算法的“理论”分析,得出关于算法时间和空间特性的特征函数与计算机物理软硬件没有直接关系。n事后测试:将算法编制成程序后实际放到计算机上运行,收集其执行时间和空间占用等统计资料,进行分析判断直接与物理实现有关。2008-09-01版权所有:杨波,武汉科技大学理学院 n目的:试图得出关于算法特性的一种形式描述,以“理论上”衡量算法的“好坏”。n如何给出反映算法特性的描述?统计算法中各种运算的执行情况,包括:q引用了哪些运算q每种运算被执行的次数(频率计数)q该种运算执行一次所花费的时间等。算
13、法的执行时间=事前分析事前分析2008-09-01版权所有:杨波,武汉科技大学理学院 频率计数频率计数频率率计数:数:算法中语句或运算的执行次数。例: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次 2008-09-01版权所有:杨波,武汉科技大学理学院 n在事前分析中,只限于确定与所使用的机器及其他环境因素无关的频率计数,依此建立一种理论上分析模型。2008-09-01版权所有:杨波,武汉科技大学理学院 n
14、语句的数量级:执行它的频数n算法的数量级:所有语句执行频数的和n算法的计算时间:(实际算法分析中)看成问题规模n的函数,记作T(n)。qn可以是输入量,输出量,或两者之和。qn可以是某种测度(数组的维数,图的边数等)2008-09-01版权所有:杨波,武汉科技大学理学院 例 1 下面是查找一维n元数组中最大元素的算法。该算法一次遍历数组中的每个元素,并保存当前的最大元素,被称为“最大元素顺序检索”。Public static int largest(int array,int n)int currlarge=0;for(int i=0;icurrlarge)currlarge=arrayi;r
15、eturn currlarge;2008-09-01版权所有:杨波,武汉科技大学理学院 分析方法:找近似时间n问题规模n(数组的维数)n基本运算,将存放的当前最大数与数组每个元素比较n假定每次比较的时间为cq变量i增加所需时间q找到一个新的最大元素时要做的工作q不考虑c的实际值,不考虑初始化时所需的一小部分时间,只想得到该算法的一个合理近似时间。计算时间T(n)=cn增长率:当问题规模增大时,算法代价增长的速度。线性增长率2008-09-01版权所有:杨波,武汉科技大学理学院 例 2 一个整数数组的第一个元素值复制给另一个变量。分析:n问题规模nn基本运算是赋值nT(n)=c1(c1表示赋值所
16、需时间),与问题规模无关。常数运行时间2008-09-01版权所有:杨波,武汉科技大学理学院 例 3 程序段如下:sum=0;for(i=1;i=n;i+)for(j=1;j=n;j+)sum+;分析:n问题规模nn基本运算是累加,时间c2(忽略初始化,循环变量的累加)nT(n)=c2 n2二次增长率2008-09-01版权所有:杨波,武汉科技大学理学院 T(n)的形式:n多项式增长率qT(n)=cqT(n)=cnqT(n)=cn2n指数增长率qT(n)=2nn对数增长率 qT(n)=logn2008-09-01版权所有:杨波,武汉科技大学理学院 最佳、最差和平均情况最佳、最差和平均情况例 从
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 第一 二三章
限制150内