01软件基础徐士良第一章 算法_40学时.ppt
《01软件基础徐士良第一章 算法_40学时.ppt》由会员分享,可在线阅读,更多相关《01软件基础徐士良第一章 算法_40学时.ppt(108页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章第一章 算法算法计算机软件技术基础计算机软件技术基础2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法21.1 集合的基本概念集合的基本概念1、集合的基本概念:、集合的基本概念:所谓集合,就是指若干个或无所谓集合,就是指若干个或无穷多个具有相同属性的元(元素)的集体。穷多个具有相同属性的元(元素)的集体。集合的两个表示方法:集合的两个表示方法:列举法:列举法:将此集合中的元素全部列举出来,或者将此集合中的元素全部列举出来,或者列出若干项但能根据规律可知其所有的元素,这列出若干项但能根据规律可知其所有的元素,这就是就是列举法列举法;性质叙述法:用性质叙述法表示
2、一个集合是将集性质叙述法:用性质叙述法表示一个集合是将集合中的元素所具有的属性出来。合中的元素所具有的属性出来。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法31.1 算法的基本概念算法的基本概念2、集合的基本运算:、集合的基本运算:两个集合的并两个集合的并两个集合的交两个集合的交两个集合的差两个集合的差2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法41.1 算法的基本概念算法的基本概念2、集合的基本性质:、集合的基本性质:结合律结合律分配律分配律:2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算
3、法51.1 算法的基本概念算法的基本概念3、映射、映射设设A、B是两个非空集合,根据一定的法则,对于每是两个非空集合,根据一定的法则,对于每个个 ,在在B中都有唯一确定的元素中都有唯一确定的元素y与之对应,称与之对应,称f是是定义在定义在A上而在上而在B中取值的映射,记为中取值的映射,记为f:A-B,并将并将x与与y的关系记为的关系记为y=f(x)。其中,其中,x称为自变元,称为自变元,y称为称为f作用下作用下x的像。的像。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法61.1 算法的基本概念算法的基本概念2022/12/20计算机软件技术基础计算机软件技术基
4、础 第一章第一章 算法算法7第一章第一章 算法算法1.1 算法的基本概念算法的基本概念1.2 算法设计基本方法算法设计基本方法1.3 算法的复杂度分析算法的复杂度分析什么是算法;什么是算法;算法的基本算法的基本特征。特征。1.列举法;列举法;2.递推法;递推法;3.递递归法;归法;4.减半减半递推法;递推法;5.回回溯法。溯法。算法的算法的时间复时间复杂度。杂度。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法81.1 算法的基本概念算法的基本概念用计算机解决一个实际问题,首先要进行程序设用计算机解决一个实际问题,首先要进行程序设计。通常,计。通常,程序设计主要
5、包括两个方面:程序设计主要包括两个方面:1.行为特性行为特性的设计的设计:要求将解决实际问题的每个细要求将解决实际问题的每个细节准确地加以定义,并且还应当将全部解题过程节准确地加以定义,并且还应当将全部解题过程完整地描述出来,这一过程即是完整地描述出来,这一过程即是算法的设计算法的设计;2.结构特性结构特性的设计:的设计:指确定适合的指确定适合的数据结构数据结构。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法91.1 算法的概念算法的概念定义:定义:“算法算法”是指解题方案的准确而完整的描是指解题方案的准确而完整的描述。述。算法可解算法可解:对于一个问题,如果
6、可以通过一个计对于一个问题,如果可以通过一个计算机程序,在有限的存储空间内运行有限长的时算机程序,在有限的存储空间内运行有限长的时间而得到正确的结果。间而得到正确的结果。程序与算法的区别程序与算法的区别:程序可以作为算法一种描述,程序可以作为算法一种描述,但程序通常还需考虑很多与方法和分析无关的细但程序通常还需考虑很多与方法和分析无关的细节问题,因为在编写程序时要受到计算机系统运节问题,因为在编写程序时要受到计算机系统运行环境的限制。行环境的限制。结论结论:通常,程序设计不可能优于算法的设计。:通常,程序设计不可能优于算法的设计。2022/12/20计算机软件技术基础计算机软件技术基础 第一章
7、第一章 算法算法101.1.1 算法的基本特征算法的基本特征1.能(可)行性能(可)行性(effectiveness)算法中的每一个步骤必须能够实现。算法中的每一个步骤必须能够实现。算法执行的结果要能够达到预期的目的。算法执行的结果要能够达到预期的目的。例如例如:三个量的和,如果采用不同的运算顺序,就会得到三个量的和,如果采用不同的运算顺序,就会得到不同的结果:不同的结果:数据存储数据存储的实际范围的实际范围2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法112.确定性确定性(definiteness)算法中每一个步骤都必须是有明确定义的,不允算法中每一个步骤都
8、必须是有明确定义的,不允许有许有模棱两可的解释模棱两可的解释,也不允许有,也不允许有多义性多义性。反映了反映了算法算法与与数学公式数学公式的明显差别:的明显差别:针对某种特殊情况,数学公式是正确的,但按针对某种特殊情况,数学公式是正确的,但按此数学公式设计的计算过程可能会使计算机系此数学公式设计的计算过程可能会使计算机系统无所适从。统无所适从。因为没有考虑异常情况的出现。因为没有考虑异常情况的出现。举例举例:“输入一个输入一个x,若若x比比1大很多,则输出大很多,则输出数字数字1,否则输出数字,否则输出数字0。”2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法1
9、23.有穷性有穷性(finiteness)算法必须能在有限的时间内做完,即算法必须算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。能在执行有限个步骤之后终止。举例举例:一个数的一个数的无穷级数无穷级数表示只是一个计算公表示只是一个计算公式,而根据精度要求确定的计算过程才是有穷式,而根据精度要求确定的计算过程才是有穷的算法。的算法。另一种定义:另一种定义:合理的执行时间。合理的执行时间。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法13补充补充:无穷级数无穷级数无穷级数无穷级数是研究有次序的可数无穷个数或者函是研究有次序的可数无穷个数或者函数
10、的和的收敛性及和的数值的方法。数的和的收敛性及和的数值的方法。举例举例:假定有一个无穷数列:假定有一个无穷数列:u1,u2,u3,.,un,.其前其前n项的和为:项的和为:Sn=u1+u2+u3+.+un由此得出另一个新无穷数列:由此得出另一个新无穷数列:S1,S2,S3,Sn,.当当n无限增加时,无限增加时,Sn趋向一个极限;趋向一个极限;如果极限存在,这个无穷数列就叫做是如果极限存在,这个无穷数列就叫做是收敛的无收敛的无穷级数穷级数,如果极限不存在,这个数列就是,如果极限不存在,这个数列就是发散的发散的。只有收敛的无穷级数存在一个和只有收敛的无穷级数存在一个和S。S=u1+u2+u3+.+
11、un+.2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法144.拥有足够的情报拥有足够的情报一个算法是否有效还取决于为算法所提供的情报一个算法是否有效还取决于为算法所提供的情报是否足够。是否足够。通常,算法中的各种运算总是要施加到各个运算通常,算法中的各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种对象上,而这些运算对象又可能具有某种初始状初始状态,这是算法执行的态,这是算法执行的起点起点或是或是依据依据。因此,一个算法执行的结果总是与因此,一个算法执行的结果总是与输入的初始数输入的初始数据据有关,不同的有关,不同的输入输入会有不同的会有不同的输
12、出输出。当提供的。当提供的情报情报不够时,算法并不是有效的。不够时,算法并不是有效的。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法15结论结论算法是一组严谨地定义运算顺序的规则,并且算法是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。将在有限的次数下终止。算法是对特定问题求解步骤的一种描述,它是算法是对特定问题求解步骤的一种描述,它是指令的有限序列。指令的有限序列。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法161.1.2 算法的基本
13、要素算法的基本要素算法通常由两种基本要素组成:一是算法通常由两种基本要素组成:一是对数据对象对数据对象的运算和操作的运算和操作;二是;二是算法的控制结构算法的控制结构。1.算法中对数据的运算和操作算法中对数据的运算和操作算术运算:算术运算:加、减、乘、除、加、减、乘、除、整除整除、取余取余等运算;等运算;逻辑运算:逻辑运算:“与与”、“或或”、“非非”等运算;等运算;关关系系运运算算:“大大于于”、“小小于于”、“等等于于”、“不不等于等于”等运算。等运算。数据传输:数据传输:赋值、输入、输出等操作。赋值、输入、输出等操作。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章
14、 算法算法172.算法的控制结构算法的控制结构定义:定义:算法中各操作之间的执行顺序。算法中各操作之间的执行顺序。描述算法的工具:传统流程图;描述算法的工具:传统流程图;N-S结构化流程结构化流程图;算法描述语言。图;算法描述语言。三种基本控制结构:三种基本控制结构:顺序顺序、选择选择、循环循环。ABABCTFACTF2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法181.2 算法设计的基本方法算法设计的基本方法计算机解题的过程实际上是在实施某种算法,这计算机解题的过程实际上是在实施某种算法,这种算法通常称为种算法通常称为计算机算法计算机算法,与人工处理的算法,
15、与人工处理的算法不同。不同。举例举例:2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法19算法设计的基本方法算法设计的基本方法人工处理的步骤:人工处理的步骤:1.找出被积函数找出被积函数f(x)的源函数的源函数F(x);2.利用牛顿利用牛顿-莱布尼兹公式计算莱布尼兹公式计算 。计算机处理方式:计算机处理方式:采用采用数值积分法数值积分法,根据实际被,根据实际被积函数的类型以及精度要求选择相应的算法。积函数的类型以及精度要求选择相应的算法。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法20列举法列举法基本思想:基本思想:根据提出的
16、问题,列举所有可能的情根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。哪些是不需要的。列举法常用于解决列举法常用于解决“是否存在是否存在”或或“有多少种有多少种可能可能”等类型的问题,等类型的问题,例如例如求解不定方程的问求解不定方程的问题。题。特点:特点:算法比较简单,但当列举的可能情况较多算法比较简单,但当列举的可能情况较多时,执行列举算法的工作量将会很大。时,执行列举算法的工作量将会很大。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法21举例举例:百鸡百钱问题百鸡百钱问题
17、例例1.1:设每只母鸡值设每只母鸡值3元,每只公鸡值元,每只公鸡值2元,两元,两只小鸡值只小鸡值1元。现要用元。现要用100元钱买元钱买100只鸡,设只鸡,设计买鸡方案。计买鸡方案。(百鸡百钱问题)(百鸡百钱问题)假设买母鸡假设买母鸡i只,公鸡只,公鸡j只,小鸡只,小鸡k只。只。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法22最粗略的列举算法如下:最粗略的列举算法如下:算法算法:求解百鸡百钱问题。求解百鸡百钱问题。for i0 to 100 do for j0 to 100 do for k0 to 100 do m=i j k n=3i 2j 0.5k i
18、f(m100)and(n100)then output i,j,k returni表示购买的母鸡个只数表示购买的母鸡个只数j表示购买的公鸡个只数表示购买的公鸡个只数k表示购买的小鸡个只数表示购买的小鸡个只数计算购买鸡的总数计算购买鸡的总数m以及总价格以及总价格n2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法23i=0i100j=0j100Tk=0k100T计算鸡的总只数计算鸡的总只数m和购买鸡的总价格和购买鸡的总价格nm=100&n=100输出输出m和和nTk+j+i+TFF结束结束F1013F2022/12/20计算机软件技术基础计算机软件技术基础 第一章第
19、一章 算法算法24改进算法改进算法:求解百鸡百钱问题。求解百鸡百钱问题。for i0 to 33 do for j0 to 501.5i do k=100ij if (3i2j0.5k 100)then output i,j,k return总循环次数为:总循环次数为:运行结果如下:运行结果如下:02 30 6802 30 6805 25 7005 25 7008 20 7208 20 7211 15 7411 15 7414 10 7614 10 7617 5 7817 5 7820 0 8020 0 802022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法25递
20、推递推基本思想:基本思想:从已知的初始条件出发,逐次推出从已知的初始条件出发,逐次推出所要求的各所要求的各中间结果中间结果和和最后结果最后结果。补充举例补充举例:计算下列定积分计算下列定积分递推算法在数值计算中极为常见,递推算法在数值计算中极为常见,但对于数值型的递推算法必须要注但对于数值型的递推算法必须要注意数值计算的稳定性问题。意数值计算的稳定性问题。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法26对上式稍作分析,可以发现相邻两个积分之间对上式稍作分析,可以发现相邻两个积分之间存在以下关系:存在以下关系:从而得到递推公式:从而得到递推公式:2022/12
21、/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法27利用利用牛顿牛顿-莱布尼兹公式莱布尼兹公式可以计算出积分可以计算出积分I0的值:的值:从而得到从而得到21个积分的递推算法个积分的递推算法如下:如下:近似值就意近似值就意味着有误差味着有误差假定初始值假定初始值(情报)的(情报)的误差为误差为2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法28表表1.1 第一种递推公式得到的结果第一种递推公式得到的结果2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法29实际上,根据关系式实际上,根据关系式还可以得到另一个递推公式
22、还可以得到另一个递推公式2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法30如果要使用递推公式如果要使用递推公式(1.5)时,需要确定时,需要确定初始值初始值I20。有如下不等式:有如下不等式:可以得到:可以得到:最后可得:最后可得:当当n=21时,有时,有由于由于 很接近,因此可用它们的平很接近,因此可用它们的平均值作为均值作为I20的近似值,即的近似值,即近似值就意近似值就意味着有误差味着有误差2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法31根据之前的推论,可以得到第二种根据之前的推论,可以得到第二种21个积分的个积分的递
23、推算法递推算法:假定初始值假定初始值(情报)的(情报)的误差为误差为2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法32表表1.2 第二种递推公式得到的结果第二种递推公式得到的结果递推算法在数值计算中极为常见,递推算法在数值计算中极为常见,但对于数值型的递推算法必须要注但对于数值型的递推算法必须要注意数值计算的稳定性问题。意数值计算的稳定性问题。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法33递归递归基本思想:基本思想:将一个复杂的问题归结为若干个较将一个复杂的问题归结为若干个较简单的问题,然后将这些较简单的每一个问题简单的问
24、题,然后将这些较简单的每一个问题再归结为更简单的问题,这个过程可以一直做再归结为更简单的问题,这个过程可以一直做下去,直到最简单的问题为止。下去,直到最简单的问题为止。补充举例补充举例:求解求解Hanoi塔问题。塔问题。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法34补充举例补充举例:求解求解Hanoi(汉诺)塔问题。汉诺)塔问题。设有三个塔座分别为设有三个塔座分别为X、Y、Z。现有现有n个直径各不相个直径各不相同的圆盘,且按直径同的圆盘,且按直径从小到大从小到大用自然数编号为用自然数编号为1,2,n。开始时,此开始时,此n个圆盘依个圆盘依下大上小的顺序下大
25、上小的顺序放放在塔盘在塔盘X上。先要根据下列原则将上。先要根据下列原则将X塔座塔座上的这上的这n个个圆盘移动到圆盘移动到Z塔座塔座上:上:1.每次只允许移动一个圆盘(从一个塔座到另一个塔每次只允许移动一个圆盘(从一个塔座到另一个塔座);座);2.移动时可用移动时可用Y塔座作为中间塔座;塔座作为中间塔座;3.在移动过程中,任何一个塔座上均不允许出现大压在移动过程中,任何一个塔座上均不允许出现大压小的情况发生。小的情况发生。2022/12/20计算机软件技术基础计算机软件技术基础 第一章第一章 算法算法35图示图示 Hanoi塔问题塔问题XYZ起始塔柱起始塔柱 中间塔柱中间塔柱 目的塔柱目的塔柱1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 01软件基础徐士良第一章 算法_40学时 01 软件 基础 徐士良 第一章 算法 _40 学时
限制150内