《《算法的概念》.ppt》由会员分享,可在线阅读,更多相关《《算法的概念》.ppt(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 一人带着一只狼、一只羊和一箱蔬菜要过河一人带着一只狼、一只羊和一箱蔬菜要过河,但只但只有一条小船有一条小船.乘船时,每次只能带狼、羊和蔬菜中的一乘船时,每次只能带狼、羊和蔬菜中的一种种.当有人在场时,狼、羊、蔬菜都相安无事当有人在场时,狼、羊、蔬菜都相安无事.一旦人一旦人不在不在,狼会吃羊狼会吃羊,羊会吃菜羊会吃菜.请设计一个方案请设计一个方案,安全地将狼、安全地将狼、羊和蔬菜带过河羊和蔬菜带过河.过河游戏趣味益智游戏如何发电子邮件?假如你的朋友不会发电子邮件,你能教会他么?假如你的朋友不会发电子邮件,你能教会他么?发邮件的方法很多,下面就是其中一种的操作步骤:发邮件的方法很多,下面就是其中
2、一种的操作步骤:第一步第一步 登陆电子信箱登陆电子信箱第二步第二步 点击点击“写信写信”第三步第三步 输入收件人地址输入收件人地址第四步第四步 输入主题输入主题第五步第五步 输入信件内容输入信件内容第六步第六步 点击点击“发送发送” 一般地一般地, ,对于一类问题的机械式地、统一对于一类问题的机械式地、统一地、按部就班地求解过程称为算法地、按部就班地求解过程称为算法(algorithm)(algorithm)它是解决某一问题的程序或步骤它是解决某一问题的程序或步骤. . 按照这样的理解按照这样的理解, ,我们可以设计出很多具我们可以设计出很多具体数学问题的算法体数学问题的算法. .下面看几个例
3、子下面看几个例子: : 所谓所谓 “算法算法”就是解题方法的精确描述就是解题方法的精确描述.从更广义的角度来看从更广义的角度来看,并不是只有并不是只有“计算计算”的的问题才有算法问题才有算法,日常生活中处处都有日常生活中处处都有.如如乐谱乐谱是是乐队演奏的算法乐队演奏的算法,菜谱菜谱是做菜肴的算法是做菜肴的算法,珠算口珠算口诀诀是使用算盘的算法是使用算盘的算法. 请你写出解下面二元一次方程组的详细过程请你写出解下面二元一次方程组的详细过程. 2121xyxy 第二步第二步 解得解得1;5x 第三步第三步 - 2得得 5y=3; 第四步第四步 解解得得3;5y 1,53.5xy第五步第五步 得到
4、方程组的解为得到方程组的解为 第一步第一步 +2得得 5x=1; 解:做一做 你能你能写出解一般的二元一次方程组的步骤吗?写出解一般的二元一次方程组的步骤吗?1111 22 1222(1)0(2)a xb ycaba ba xb yc 第一步第一步,21(1)(2)bb得 :12211221.a ba bxc bc b( 3) 第二步第二步,解(解(3)得)得 12211221.c bc bxa ba b思考 2 11 22 11 2.a ca cya ba b 第四步第四步,解(解(4)得)得 21(1)(2)aa得:第三步第三步,2 1122 112.a ba bya ca c(4) 第五
5、步第五步,得到方程组的解为得到方程组的解为 1221122121122112,.c bc bxa ba ba ca cya ba b 上述步骤构成了解二元一次方程组的一个算法,我们可以进一步根据这一算法编制计算机程序,让计算机来解二元一次方程组.练习练习1. 给出求给出求1+2+3+4+5+6的一个算法的一个算法.解法解法1.1.按照逐一相加的程序进行按照逐一相加的程序进行. .第一步第一步:计算计算1+2,得得3;第二步第二步:将第一步中的运算结果将第一步中的运算结果3与与3相加得相加得6;第三步第三步:将第二步中的运算结果将第二步中的运算结果6与与4相加得相加得10;第四步第四步:将第三步
6、中的运算结果将第三步中的运算结果10与与5相加得相加得15;第五步第五步:将第四步中的运算结果将第四步中的运算结果15与与6相加得相加得21.解法解法2.2.可以运用下面公式直接计算可以运用下面公式直接计算. .(1)12342n nn 第一步第一步, ,取取 n = =6; ;第二步第二步, ,计算计算 ; ;2)1( nn第三步第三步, ,输出计算结果输出计算结果. .点评点评: :解法解法1 1繁琐繁琐, ,步骤较多步骤较多; ; 解法解法2 2简单,步简单,步骤较少骤较少. . 找出好的算法是我们的追求目标找出好的算法是我们的追求目标. .现在你对算法有了新现在你对算法有了新的认识了吗
7、?的认识了吗? 在数学中,算法通常是指按照一定规则在数学中,算法通常是指按照一定规则解决某一类问题的明确和有限的步骤解决某一类问题的明确和有限的步骤.现在,现在,算法通常可以编成计算机程序,让计算机执算法通常可以编成计算机程序,让计算机执行并解决问题行并解决问题.2.2.算法的要求算法的要求(1)写出的算法写出的算法,必须能解决一类问题必须能解决一类问题(例如解任例如解任意一个二元一次方程组意一个二元一次方程组),并且能重复使用并且能重复使用;(2) 算法过程要能一步一步执行算法过程要能一步一步执行,每一步执行的每一步执行的操作操作,必须确切必须确切,不能含混不清不能含混不清,而且在有限步之而
8、且在有限步之内完成后能得出结果内完成后能得出结果.1.1.算法的定义算法的定义3.3.算法的基本特征算法的基本特征: :明确性明确性: :算法对每一个步骤都有确切的、非二算法对每一个步骤都有确切的、非二义性的规定义性的规定, ,即每一步对于利用算法解决问题的即每一步对于利用算法解决问题的人或计算机来说都是可读的、可执行的人或计算机来说都是可读的、可执行的, ,而不需而不需要计算者临时动脑筋要计算者临时动脑筋. . 有效性有效性: :算法的每一个步骤都能够通过基本运算法的每一个步骤都能够通过基本运算有效地进行算有效地进行, ,并得到确定的结果;对于相同的并得到确定的结果;对于相同的输入输入, ,
9、无论谁执行算法无论谁执行算法, ,都能够得到相同的最终都能够得到相同的最终结果结果有限性有限性: :算法应由有限步组成算法应由有限步组成, ,至少对某些输入至少对某些输入, ,算法应在有限多步内结束算法应在有限多步内结束, ,并给出计算结果并给出计算结果例例1: :(1)(1)设计一个算法判断设计一个算法判断7 7是否为质数是否为质数. .第一步第一步 用用2除除7,得到余数得到余数1.因为余数不为因为余数不为0, 所以所以2不能整除不能整除7.第二步第二步 用用3除除7,得到余数得到余数1.因为余数不为因为余数不为0, 所以所以3不能整除不能整除7.第三步第三步 用用4除除7,得到余数得到余
10、数3.因为余数不为因为余数不为0, 所以所以4不能整除不能整除7.第四步第四步 用用5除除7,得到余数得到余数2.因为余数不为因为余数不为0, 所以所以5不能整除不能整除7.第五步第五步 用用6除除7,得到余数得到余数1.因为余数不为因为余数不为0, 所以所以6不能整除不能整除7.因此,因此,7是质数是质数.例例1: :(2)(2)设计一个算法判断设计一个算法判断3535是否为质是否为质数数. .第一步第一步, 用用2除除35,得到余数得到余数1.因为余数不为因为余数不为0, 所以所以2不能整除不能整除35.第二步第二步, 用用3除除35,得到余数得到余数2.因为余数不为因为余数不为0, 所以
11、所以3不能整除不能整除35.第三步第三步, 用用4除除35,得到余数得到余数3.因为余数不为因为余数不为0, 所以所以4不能整除不能整除35.第四步第四步, 用用5除除35,得到余数得到余数0.因为余数为因为余数为0, 所以所以5能整除能整除35.因此,因此,35不是质数不是质数.变式变式: “判断53是否质数”的算法如下:第1步,用2除53得余数为1,余数不为0,所以2不能整除53;第2步,用3除53得余数为2,余数不为0,所以3不能整除53;第52步,用52除53得余数为1,余数不为0,故52不能整除53;所以53是质数.上述算法正确吗?请说明理由上述算法正确吗?请说明理由.算法要算法要“
12、面面俱到面面俱到”,不能省略任何一个细小的步骤不能省略任何一个细小的步骤,只有这样只有这样,才能在人设计出算法后才能在人设计出算法后,把具体的执行过程交给计算机完成把具体的执行过程交给计算机完成.设计一个具体问题的算法时设计一个具体问题的算法时,与过去熟悉地解数学题的过程与过去熟悉地解数学题的过程有直接的联系有直接的联系,但这个过程必须被分解成但这个过程必须被分解成若干个明确的步骤若干个明确的步骤,而且这些步骤必须是有效的而且这些步骤必须是有效的.判断判断“整数整数n(n2)是否是质数是否是质数”的算法的算法自然语言描述第一步第一步 给定大于给定大于2 2的整数的整数n n.第二步第二步 令令
13、i=2i=2. .第三步第三步 用用i i除除n n,得到余数,得到余数r.r. 第四步第四步 判断判断“r=0”r=0”是否成立是否成立. .若是,则若是,则n n不是质不是质 数,结束算法;否则将数,结束算法;否则将i i的值增加的值增加1 1,仍用,仍用i i表示表示. . 第五步第五步 判断判断“i(n-1)”i(n-1)”是否成立是否成立. .若是,则若是,则n n是质数,结束算法;否则返回第三步是质数,结束算法;否则返回第三步. .例例2: :用二分法设计一个求方程用二分法设计一个求方程 近似根近似根的算法的算法 220 x (0)x 二分法 对于区间对于区间a,b 上连续不断、且
14、上连续不断、且f(a)f(b)0的函数的函数y=f(x),通过不断地把函数通过不断地把函数f(x)的零点所在的区间一分的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零为二,使区间的两个端点逐步逼近零点,进而得到零点或其近似值的方法叫做二分法点或其近似值的方法叫做二分法.第四步第四步, 若若f(a) f(m) 0,则含零点的区间为则含零点的区间为a,m;第二步第二步, 给定区间给定区间a,b,满足满足f(a) f(b)0第三步第三步, 取中间点取中间点2abm第五步第五步,判断判断f(m)是否等于或者是否等于或者a,b的长的长度是否小于度是否小于d,若是,则,若是,则m是方程的
15、近似解是方程的近似解;否否则,返回第三步则,返回第三步将新得到的含零点的仍然记为将新得到的含零点的仍然记为a,b.否则,含零点的区间为否则,含零点的区间为m, b.算法步骤:算法步骤:第一步第一步, 令令 ,给定精确度给定精确度d.2( )2f xxa ab b|a-b|a-b|1 12 21 11 11.51.50.50.51.251.251.51.50.250.251.3751.3751.51.50.1250.1251.3751.3751.437 51.437 50.062 50.062 51.406 251.406 251.437 51.437 50.031 250.031 251.40
16、6 251.406 251.421 8751.421 8750.015 6250.015 6251.414 6251.414 6251.421 8751.421 8750.007 812 50.007 812 51.414 062 51.414 062 51.417 968 751.417 968 750.003 906 250.003 906 25当当d d=0.005=0.005时,按照以上算法,可得下面表和图时,按照以上算法,可得下面表和图. .y=x2-2121.51.3751.25 于是,开区间于是,开区间(1.4140625,1.41796875)中)中的实数都是当精确度为的实数都
17、是当精确度为0.005时的原方程的近时的原方程的近似解似解.课后作业课后作业1.下面对算法描述正确的一项是:下面对算法描述正确的一项是: ( ) A求解某一类问题的算法是唯一的求解某一类问题的算法是唯一的 B一个算法可以无止境地运算下去一个算法可以无止境地运算下去 C同一问题可以有不同的算法同一问题可以有不同的算法 D同一问题的算法不同,结果必然不同同一问题的算法不同,结果必然不同2.下列特征中:无序性;有穷性;确定性;有下列特征中:无序性;有穷性;确定性;有效性。能表示算法特征的有:(效性。能表示算法特征的有:( ) A.1个个 B.2个个 C.3个个 D.4个个3.已知一个学生的语文、数学
18、、英语成绩分别为已知一个学生的语文、数学、英语成绩分别为89,96,99,求他的平均分的一个算法为:,求他的平均分的一个算法为: 第一步,取第一步,取A=89,B=96,C=99; 第二步,第二步, ; 第三步,第三步, ; 第四步,输出计算的结果。第四步,输出计算的结果。CC计算计算S=A+B+C 计算计算P=S/36.一位商人有一位商人有9枚银元,其中有枚银元,其中有1枚略轻的是假银元。你枚略轻的是假银元。你能设计用天平(不用砝码)将假银元找出来的算法吗?能设计用天平(不用砝码)将假银元找出来的算法吗?7.两个大人和两个小孩一起渡河,渡口只有一条小船,两个大人和两个小孩一起渡河,渡口只有一
19、条小船,每次只能渡每次只能渡1 个大人或两个小孩,他们四人都会划船,个大人或两个小孩,他们四人都会划船,但都不会游泳。试问他们怎样但都不会游泳。试问他们怎样 渡过河去?请写出一个渡渡过河去?请写出一个渡河方案。河方案。4.任意给定一个正实数,设计一个算法求以这个数为半径任意给定一个正实数,设计一个算法求以这个数为半径的圆的面积。的圆的面积。算法步骤:算法步骤:第一步,第一步,给定一个正实数给定一个正实数r;第二步,第二步,计算以计算以r为半径的圆的面积为半径的圆的面积 ;2sr第三步,第三步,输出圆的面积输出圆的面积S。小结:小结: 算法的特征是什么?算法的特征是什么?n明确性明确性n有效性有效性n有限性有限性算法的概念:算法的概念:算法通常指可以用来解决的某算法通常指可以用来解决的某一类问题的步骤或程序,这些步骤或程序必须是明一类问题的步骤或程序,这些步骤或程序必须是明确的和有效的,而且能够在有限步之内完成的确的和有效的,而且能够在有限步之内完成的.
限制150内