1.1.1算法的概念引例:华罗庚烧水泡茶的故事生活中经常需要沏茶。如果当时的情况是:没有开水,开水壶、茶壶、茶杯都要洗,还需要准备茶叶,应该怎么安排?1.1.1算法的概念1.1.1算法的概念算法的定义:1.广义的说:算法就是进行某一工作的方法和步骤。2.算法通常是指按照一定规则解决某一类问题的明确的和有限的步骤。3.主要研究计算机能实现的算法,即按照某种机械程序步骤一定可以得到结果的解决问题的程序。例1:“一群小兔一群鸡,两群合到一群里,要数腿共48,要数脑袋整17,多少小兔多少鸡?”解:算术方法:如果没有小兔,那么小鸡应为17只,总的腿数应为2×17=34条,但现在有48条腿,造成腿的数目不够是由于小兔的数目为0,每有一只小兔便会增加两条腿,故应有(48-17×2)÷2=7只小兔。相应的,小鸡有10只。代数方法:设有x只小鸡,y只小兔.则172448xyxy用加减消元法解得:107xy1.1.1算法的概念1.1.1算法的概念思考1:例1是著名的“鸡兔同笼”问题,其中第一种解法是算术方法,教材中对它的评价是“简单直观,却包含着深刻的算法思想”,那么它是如何体现算法的思想呢?S1假设没有小兔,则小鸡应为n只;S2计算总腿数为2n只;S3计算实际总腿数与假设总腿数的差值为m-2n;S4计算小兔只数为;22mnS5小鸡的只数为n-.22mn1.1.1算法的概念思考2:教材中例1的第二种解法是列方程组的方法,它是否也是一种算法呢?S1设未知数;S2根据题意列方程组;S3解方程组;S4还原实际问题,得到实际问题的答案。探究:是的,其算法步骤为:在实际中,很多问题可以归结为求解二元一次方程组,下面用消元法来解一般的二元一次方程组11112212112222axaxbaxaxb①②S1假定a11≠0,②×a11-①×a21得1111221112221122112211()axaxbaaaaxabab③④S2如果a11a22-a12a21≠0,则执行下步;否则执行S6S3④两边同除以a11a22-a12a21≠0得1111221112211211222112axaxbababxaaaa⑤⑥S4⑥代入⑤.得221122111222112112211211222112ababxaaaaababxaaaa⑦⑧S5输出结果x1,x2,S6若a11b2-a21b1≠0.则执行下一步;否则执行S8S7输出“方程组无解”.S8输出“方程组有无穷多个解”以上解二元一次方程组的方法,叫做高斯消去法二、算法的特点不论在哪一种算法中,它们都是经有限次步骤完成的,因而它们体现了算法的有穷性。在算法中,每一步都能明确地执行,且有确定的结果,因此具有确定性。在所有算法中,每一步操作都是可以执行的,也就是具有可行性。算法解决的都是一类问题(分别是解决求方程组的解和确定一个有理整数序列中的最大值问题),因此具有普适性。练习:写出解方程x2-2x-3=0的一个算法.配方法:S1移项,得x2-2x=3①S2①式两边同加1并配方得(x-1)2=4②S3②式两边开方,得x-1=±2③S4解③式得x=3或x=-1因式分解法:S1将方程左边因式分解得(x-3)(x+1)=0①S2由①得x-3=0或x+1=0②S3解②得x=3或x-1例2:写出一个求有限整数列中的最大值的算法。解:算法如下:S1先假定序列中的第一个整数为“最大值”;S2将序列中的下一个整数值与“最大值”比较,如果它大于此“最大值”,这时你就假定“最大值”是这个整数;S3如果序列中还有其他整数,重复S2;S4在序列中一直到没有可比的数为止,这时假定的“最大值”就是这个序列中的最大值。下面我们用数学语言,写出对任意3个整数a,b,c求出最大值的算法。S1max=aS2如果b>max,则max=b.S3如果C>max,则max=c.S4max就是a,b,c中的最大值。比较下数学语言和文字叙述的异同课堂小结:1、算法的概念2、算法的特点