版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学必求其心得,业必贵于专精学必求其心得,业必贵于专精学必求其心得,业必贵于专精5。1算法的含义名师导航三点剖析一、算法的含义在日常生活中做任何一件事情,都是按照一定规则,一步一步进行,比如在工厂中生产一部机器,先把零件按一道道工序进行加工,然后,再把各种零件按一定法则组装成一部完整的机器,它们的工艺流程就是算法;在农村中种庄稼有耕地、播种、育苗、施肥、中耕、收割等各个环节,这些栽培技术也是算法。总之,在任何这些数值计算或非数值计算的过程中所采取的方法和步骤,都称之为算法。一般而言,对一类问题的机械的、统一的求解方法称为算法.注意:1。这种描述不是算法的严格定义,但是反映了算法的基本思想.算法的基本思想就是程序化思想。2.简单地说,算法是完成某项工作的一系列步骤。现代意义上的“算法”通常是指可以用计算机来解决的某一类问题的程序或步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成.3.算法的概念源于数学。比如数学中常用的配方法、换元法、待定系数法等都是解决某一类特定问题的方法,它们的特点是对于某一类特定的问题都有效,都有固定的、机械的步骤,每一步都能得到惟一的结果,只要严格按照步骤进行,就一定可以解决问题.但不要认为只有“计算”的问题才有算法。广义地说,为解决一个问题而采取的方法,就称为算法.例如,我们要发一封电子邮件,一般需要经历以下几个步骤:第一步,打开电子邮箱;第二步,点击“写邮件";第三步,输入发送地址;第四步,输入主题;第五步,输入信件内容;第六步,点击“发送邮件”.这些步骤从广义上来讲也可以称作是发一封电子邮件的算法.4。计算机解决任何问题都要依赖于算法。只有将解决问题的过程分解为若干个明确的步骤,即算法,并用计算机能够接受的“语言”准确地描述出来,计算机才能够解决问题.我们知道,计算机本质上就是一个机械,只不过是一个非常复杂的机械罢了。和所有的机械一样,它能根据特定的指令执行特定的任务.我们不妨拿我们所熟悉的一种机械——钢琴来说明这个道理.钢琴对于人的特定的命令(按键或按键组合)会发出特定的、固定的声音,并且这种基本的对应关系是有限的。正是由于掌握了这种固定的对应关系,钢琴家才能够以此为基础进行创作,如果没有这种固定的对应关系,钢琴家也就无法驾驭钢琴,更谈不上弹奏出优美的旋律了。计算机也是一样,它对于特定的命令(基本命令或由基本命令组合而成的复杂命令),能作出固定的反应(例如对于命令2+3,计算机的反应就是计算出这个算式的值为5),像这种计算机能接受并执行的基本命令或由基本命令所组合而成的复杂命令就是计算机能够接受的“语言",也正是依靠这种“语言”,我们才能与计算机进行“交流”并且让计算机为我们所用,按照我们的意图去解决问题.二、算法的特性一般来讲,一个算法应具有以下五个重要特性:1.有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。算法具有有穷性是为了让算法不能无休止地执行下去,以致达不到解决问题的目的。数学中的无穷级数,在实际计算时只能取有限项,即计算无穷级数的过程只能是有穷的.因此,一个无穷级数的表示只能是一个计算公式,而根据精度要求确定的计算过程才是有穷的算法.2.确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义。也就是说,算法的步骤中不能含有模糊不清、容易让人误解的叙述.确定性是要保证算法在执行过程中,不能因不同的人的喜好、理解不同及其他人为因素而“走样”.事实上,在程序设计中,一个算法必须确定到这样一个程度,即使一台计算机也能遵循这个指示正确执行。从这个角度我们可以看到算法的步骤的一个特点就是:清晰、准确而又机械、刻板、缺乏创造性(但从算法步骤的执行上讲也不需要有创造性,能严格执行就可以了)。3.可行性:算法的可行性包括两个方面:一是算法中的每一个步骤必须是能实现的.例如,在算法中,不允许出现分母为零的情况;在实数范围内不能求一个负数的平方根等.二是算法执行的结果能达到预期的目的.通常,针对实际问题设计的算法,人们总是希望能得到满意的结果。当然可行性对于不同的人及不同的时代具有不同的含义。仅就计算工具上来讲,古代最好的计算工具大概就是算盘了,而现代的超级计算机无论是在计算的速度还是在可计算问题的范围上都远在其上。古代很多不能完成的计算在现代都变成了可能。4.输入:算法一定要根据输入的初始数据或给定的初值才能正确执行它的每一步骤.需要注意的是,算法的输入数据和输出数据都应该是离散(分散的、不连续的、可逐个计算的数据)的符号(或称字母,其中也包括数字),例如不能输入一条连续的曲线。(连续曲线上的点是连续的,无法对所有点所对应数据逐个进行计算)这是因为算法一般都是靠计算机来执行的,而数字电子计算机是一个离散结构,它只能处理离散的或离散化了的数量关系.因此,无论计算机科学本身,还是与计算机科学及其应用密切相关的现代科学研究领域,都面临着如何对离散结构建立相应的数学模型,又如何将已用连续数量关系建立起来的数学模型离散化,从而可由计算机加以处理.5.输出:算法一定能得到问题的解,有一个或多个的输出,达到求解问题的目的.这些输出是同输入有着某些特定关系的量.没有输出结果的算法是没有意义的。此外,还要求算法应具有通用性:即算法应适用于某一类问题中的所有个体,而不是只能用来解决一个具体问题.例如一个能解所有二元一次方程组的算法就比一个只能解某一个特定的二元一次方程组的算法更具有通用性.三、算法的描述描述算法可以有不同的方式,常用的有自然语言、框图(流程图)、程序设计语言、伪代码等。1.自然语言:就是人们日常使用的语言。用自然语言描述算法的优点是通俗易懂,当算法中的操作步骤都是顺序执行时比较容易理解.缺点是如果算法中包含判断和转向等较复杂的过程时,就会显得不够清晰、直观了,并且叙述会较烦琐和冗长,并且容易出现歧义.2.流程图:是用一组几何图形表示各种类型的操作,在图形上用简明扼要的文字和符号表示具体的操作,并用带有箭头的流线表示操作的先后次序.用框图描述算法,具有直观、结构清晰、条理分明、通俗易懂、便于检查修改及交流等优点.3.程序设计语言:“算法是计算机科学的基础”,计算机完成任何一项任务都需要算法.但是,用自然语言或程序框图描述的算法计算机是无法“理解”的,我们还需要将算法用计算机能够理解的语言表达出来,通常这称为程序设计,所用的语言称为程序设计语言(programminglanguage).程序设计语言由一些有特定含义的程序语句构成,与算法程序框图的三种基本结构相对应,任何程序设计语言都包含输入输出语句、赋值语句、条件语句和循环语句.不同的程序设计语言有不同的语句形式和语法规则,但基本结构是相同的。正是由于这样的原因,在研究算法的时候,有时并不很关心算法语句是否用的是某种精确的程序语言,而采用基本结构相同的更为简便易懂的语言形式,有人称之为伪代码.问题探究问题1:算法的概念和我们生活中所遇到的许多概念有类似的地方.如菜谱,就是指导人们如何做菜的.那么,菜谱的概念和算法的概念究竟有哪些相同点和不同点呢?探究:我们知道,算法有五个重要的特征,即有穷性、确定性、可行性、有输入、有输出。于是我们想到可以根据算法的特性对菜谱逐一进行对比来探究这个问题.首先,容易想到,菜谱总是符合有穷性的要求的(厨师肯定不会花无限多的时间来做一盘菜吧?).其次,可行性也是菜谱所具有的(做菜的步骤必须是厨师力所能及的)。输入就是作菜的原料(如鸡蛋、西红柿、糖、盐等),输出就是做好的菜了(如鸡蛋炒西红柿等).但是对于确定性,菜谱就不是那么令人满意了.例如,步骤“加少许盐”,“盐”也许已经是明确的定义了;那么“少许”该是多少呢,算法要求每一步都是精确的,按照这个标准,“少许"这样模糊的词句是不被允许的,当然我们可以将这个步骤改为如“加2.2g盐"这样的叙述,但盐应该加到哪(顶上、边上等等)也不是很明确的.也许像“轻轻地颠簸直到混合物发脆为止”、“在小长柄锅里加热的料酒”等等指示,对于训练有素的厨师来说,说明已经是足够了,但是一个算法必须确定到这样一个程度:即使一台计算机也能遵循这个指示。因此从严格的意义上来讲,菜谱并不能称为算法。问题2:在实际问题和算法理论中,找出好的算法是一项重要的工作。但是对于“好”没有严格的定义。一个好的算法都应该满足哪些标准?探究:算法就其本质来讲,就是一种解决问题的方法,只不过更具有程序化罢了.我们可以根据自己的经验,思考一个好的解决问题的方法应该具有哪些特点,然后看这些特点在算法上都应该有什么样的体现,就可以回答这个问题了.正如所有的好的解决问题的方法必须是正确的一样,一个好的算法首先必须是正确的.正确性对不同的事情有着不同的含义.对于算法来讲,正确性包含如下几个层次:(1)算法不能含有语法错误,否则算法不能正常执行;(2)算法对于几组输入数据,能够得出满足规格说明要求的结果;(3)算法对于精心选择的典型、苛刻而带有刁难性的几组输入数据,能够得出满足规格说明要求的结果;(4)算法对于一切合法的输入数据,都能产生满足规格说明要求的结果.其次,我们容易想到一个好的解决问题的方法,应该是思路清晰、让人容易理解的,这样就可以让更多的人掌握我们的方法。同理,我们写出的算法要具有可读性,格式要工整、规范,思想要清晰、准确,以便和其他人更好地交流、合作.世事无常,在我们解决问题的过程中,往往不可避免地会有意外情况发生,这要求我们解决问题的方法要对这些意外情况制定相应的对策,避免不必要的损失。同理,我们的算法要具有健壮性,它的含义就是要求算法能够在出现异常或突发事件时能正常运行,不至于因为操作环节中的错误而造成灾难性的后果.此外,我们做事还要考虑这件事需要花费的时间和占用的空间.一般来讲,花费时间和占用空间少的方法会更好。同样的,算法也有高效率与低存储量需求。效率指的是算法执行时间.对于解决同一问题的多个算法,执行时间短的算法效率高。存储量需求是指算法执行过程中所需要的最大存储空间.如果所占空间量依赖于特定的输入,则除特别指明外,均按最坏情况来分析.精题精讲例1.给出求1+3+5+7+9+11+13的一个算法.思路解析分析一:本题主要是考查理解概念的程度。由于本题是一个连续相加的问题,则写算法时,只需按照逐一相加的程序进行.分析二:由于1+3+5+…+(2n-1)=n2,所以可以运用公式1+3+5+…+(2n-1)=n2直接计算,只需将n=7代入公式即可。答案:解法一:按照逐一相加的程序进行:第一步计算1+3,得到4;第二步将第一步中的运算结果4与5相加,得到9;第三步将第二步中的运算结果9与7相加,得到16;第四步将第三步中的运算结果16与9相加,得到25;第五步将第四步中的运算结果25与11相加,得到36;第六步将第五步中的运算结果36与13相加,得到49.解法二:运用公式1+3+5+…+(2n-1)=n2计算:第一步取n=7;第二步计算n2;第三步输出运算结果.绿色通道对算法的灵活、准确应用和自然语言表达问题,要注意:算法的方法不同,解决问题的繁简程度也不同.我们研究算法,就是要找出解决问题的最好的算法。例2.给出求解方程ax2+bx+c=0(a≠0,b2—4ac思路解析解一元二次方程一般利用求根公式来求解,即,当方程左边的二次多项式可分解因式时,我们也可用分解因式的方法来解一元二次方程。答案:算法如下:第一步写出方程中的a、b、c的值;第二步计算b2-4ac的值;第三步计算的值;第四步输出方程的根为。绿色通道一个算法,就是一个有穷规则的集合,它为某个特定类型问题提供了解决问题的运算序列.其中的每条规则必须是明确定义的、可行的.序列的终止表示问题得到解答或指出问题没有解答。例3.一个人带三只狼和三只羚羊过河,只有一条船,同船可以容一个人和两只动物.没有人在的时候,如果狼的数量不少于羚羊的数量,狼就会吃掉羚羊.(1)设计一个安全渡河的算法;(2)思考每一步算法所遵循的相同原则是什么?思路解析在人运送动物过河
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年铜仁货运考试
- 飞机租赁协议
- 2025年巴中货运从业资格证模拟考试保过版
- 在线旅游服务免责协议书及行程规范承诺书
- 勇气向前青春不悔
- 勇攀高峰希望照亮
- 中小学捐赠协议
- 日用消费品行业智能家居设计与制造方案
- 数字货币技术研发合作合同
- 决心照亮人生
- 深圳京基·KKmall市场考察报告(45页
- 无缝钢管焊接作业指导书(1)
- 零缺陷与质量成本
- 国家开放大学电大本科《西方社会学》2023-2024期末试题及答案(试卷代号:1296)
- JBT5323-91立体仓库焊接式钢结构货架 技术条件
- 网吧企业章程范本
- 60m3卧式液化石油气储罐设计
- 命题多维细目表()卷
- 安徽省书法家协会会员登记表
- 42CrMo锻件的技术条件
- 五格数理解释及吉凶对照
评论
0/150
提交评论