考点精讲
1.1 算 法
考点1 算法的基本概念
(1)算法的定义
算法是指解题方案的准确而完整的描述,即算法是对特定问题求解步骤的一种描述。它是一组严谨定义运算顺序的规则,且每个规则都是明确有效的,此顺序将在有限的次数下终止。需要注意的是:算法不等于程序,也不等于计算方法。
(2)算法的基本特征
①可行性
a.算法中的每一步骤都必须能够实现;
b.算法执行的结果要能够达到预期的目的。
②确定性
确定性是指算法中的每一个步骤都必须有明确的定义,不允许有模棱两可的解释,也不允许有多义性。
③有穷性
有穷性是指算法必须能在有限的时间内做完,即必须能在执行有限个步骤之后终止,且必须有合理的执行时间。
④拥有足够的情报
算法是否有效,取决于为算法所提供的情报是否足够。一般而言,当算法有足够的情报时,此算法有效,而当提供的情报不够时,算法可能无效。
【真题演练】
算法的有穷性是指( )。[2013年9月真题]
A.算法程序的运行时间是有限的
B.算法程序所处理的数据量是有限的
C.算法程序的长度是有限的
D.算法只能被有限的用户使用
【答案】A
【解析】算法设计有穷性要求操作步骤有限且必须在有限时间内完成,耗费太长时间得到的正确结果是没有意义的。答案选择A选项。
考点2 算法设计基本方法
(1)列举法
①基本思想
根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。常用于解决“是否存在”或“有多少种可能”等类型的问题。
②主要特点
算法比较简单,但列举情况较多时,算法工作量很大。
③注意事项
例举算法时,通过对实际问题进行详细分析,将与问题有关的知识条理化、完备化、系统化,并从中找出规律,或对所有可能的情况进行分类,从而引出一些有用的信息,减少列举量。
(2)归纳法
①基本思想
通过列举少量的特殊情况,经过分析,最后找出一般的关系。
②主要特点
a.比列举法更能反映问题的本质,可解决列举量为无限的问题;
b.可操作性低,不易归纳出一个具体数学模型;
c.归纳得出的结论只是一种猜测,须对这种猜测加以必要的证明。
(3)递推
①基本思想
从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。
②主要特点
a.初始条件或问题本身已给定,或通过对问题的分析化简得到;
b.递推本质上属于归纳法,递推关系式往往是归纳的结果;
c.数值型递推算法计算过程中必须注意数值计算的稳定性问题。
(4)递归
①基本思想
将复杂问题逐层分解,归结为一些简单的问题,将简单问题解决掉,再沿着原来分解的逆过程逐步进行综合。
②主要特点
a.递归的基础是归纳,对问题逐层分解的过程实际上并没有对问题进行求解;
b.在可计算性理论和算法设计中占有重要地位;
c.递归算法比递推算法清晰易读,结构简练;
d.设计递归算法比递推算法容易,但是其执行效率较低。
③分类
a.直接递归。一个算法P显式地调用自己。
b.间接递归。算法P调用另一个算法Q,而算法Q又调用算法P。
④递归与递推的区别
递归与递推的区别主要在于二者实现方法的不同,表现为:
a.递归是从算法本身到达递归的边界的;
b.递推是从初始条件出发,逐次推出所需求的结果。
(5)减半递推技术
减半递推技术是工程上常用的分治法,其中,“减半”指将问题的规模减半,而问题的性质不变;“递推”指重复“减半”的过程。
(6)回溯法
回溯法是指通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探,若试探成功,则问题得到解决,若试探失败,则逐步回退换别的路线再进行试探。
【真题演练】
1下列叙述中正确的是( )。[2013年9月真题]
A.所谓算法就是计算方法
B.程序可以作为算法的一种描述方法
C.算法设计只需考虑得到计算结果
D.算法设计可以忽略算法的运算时间
【答案】B
【解析】A项错误,算法并不等同于计算方法,是指对解题方案的准确而完整的描述;C项错误,算法设计需要考虑可行性、确定性、有穷性与足够的情报;D项错误,算法设计有穷性要求操作步骤有限且必须在有限时间内完成,耗费太长时间得到的正确结果是没有意义的;B项正确,程序可以作为算法的一种描述方法,算法在实现时需要用具体的程序设计语言描述。答案选择B选项。
2下列关于算法的描述中错误的是( )。[2014年3月真题]
A.算法强调动态的执行过程,不同于静态的计算公式
B.算法必须能在有限个步骤之后终止
C.算法设计必须考虑算法的复杂度
D.算法的优劣取决于运行算法程序的环境
【答案】D
【解析】算法是指对解题方案的准确而完整的描述。A项正确,算法强调实现,不同于数学上的计算方法;B项正确,算法的有穷性是指,算法中的操作步骤为有限个,且每个步骤都能在有限时间内完成;C项正确,算法设计必须考虑执行算法所需要的资源,即时间复杂度与空间复杂度;D项错误,算法的优劣取决于算法复杂度,只有当算法被编程实现运行时才会受到运行环境影响。答案选择D选项。
考点3 算法复杂度
(1)时间复杂度
①定义
算法的时间复杂度是指执行算法所需要的计算工作量。
算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即:算法的工作量=f(n),其中,n是问题的规模。
②在同一问题规模下,若算法的基本运算次数取决于某一特定输入,可用以下两种方法来分析算法的工作量:
a.平均性态
平均性态分析是指用各种特定输入下的基本运算次数的加权平均值来度量算法的工作量。算法的平均性态定义为:
其中,x是所有可能输入中的某个特定输入,p(x)是x出现的概率,即输入为x的概率,t(x)是算法在输入为x时所执行的基本运算次数,Dn表示当规模为n时,算法执行时所有可能输入的集合。
b.最坏情况复杂性
最坏情况分析是指规模为n时,算法所执行的基本运算的最大次数。其定义为:
(2)空间复杂度
①定义
算法的空间复杂度一般是指执行这个算法所需要的内存空间。
②存储空间组成
一个算法的存储空间包括以下几种:
a.算法程序占用的空间;
b.输入的初始数据占用的存储空间;
c.算法执行过程中所需要的额外空间。
额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间,若额外空间相对于问题规模来说是常数,则称该算法是原地工作的。
【真题演练】
1下列叙述中正确的是( )。[2015年3月真题]
A.算法的效率只与问题的规模有关,而与数据的存储结构无关
B.算法的时间复杂度是指执行算法所需要的计算工作量
C.数据的逻辑结构与存储结构是一一对应的
D.算法的时间复杂度与空间复杂度一定相关
【答案】B
【解析】A项错误的,效率与存储结构有密切关系。B项正确,算法的时间复杂度是指算法在计算机内执行时所需时间的度量。C项错误,逻辑结构与存储结构是两个概念不可能一一对应的。D项错误,算法的时间复杂度与空间复杂度是独立的。答案选择B选项。
2算法的空间复杂度是指( )。[2013年9月真题]
A.算法在执行过程中所需要的计算机存储空间
B.算法所处理的数据量
C.算法程序中的语句或指令条数
D.算法在执行过程中所需要的临时工作单元数
【答案】A
【解析】算法的空间复杂度是指算法在执行过程中所需要的计算机存储空间。包括算法程序所占空间,输入的初始数据所占空间和执行过程中所需要的额外空间。答案选择A选项。
3算法空间复杂度的度量方法是( )。[2014年9月真题]
A.算法程序的长度
B.算法所处理的数据量
C.执行算法所需要的工作单元
D.执行算法所需要的存储空间
【答案】D
【解析】算法的空间复杂度是指算法在执行过程中所需要的计算机存储空间。包括算法程序所占空间,输入的初始数据所占空间和执行过程中所需要的额外空间。答案选择D选项。