求解递归方程的方法
- 格式:pdf
- 大小:1.22 MB
- 文档页数:16
算法设计与分析知到章节测试答案智慧树2023年最新天津大学第一章测试1.下列关于效率的说法正确的是()。
参考答案:提高程序效率的根本途径在于选择良好的设计方法,数据结构与算法;效率主要指处理机时间和存储器容量两个方面;效率是一个性能要求,其目标应该在需求分析时给出2.算法的时间复杂度取决于()。
参考答案:问题的规模;待处理数据的初态3.计算机算法指的是()。
参考答案:解决问题的有限运算序列4.归并排序法的时间复杂度和空间复杂度分别是()。
参考答案:O(nlog2n);O(n)5.将长度分别为m,n的两个单链表合并为一个单链表的时间复杂度为O(m+n)。
()参考答案:错6.用渐进表示法分析算法复杂度的增长趋势。
()参考答案:对7.算法分析的两个主要方面是时间复杂度和空间复杂度的分析。
()参考答案:对8.某算法所需时间由以下方程表示,求出该算法时间复杂度()。
参考答案:O(nlog2n)9.下列代码的时间复杂度是()。
参考答案:O(log2N)10.下列算法为在数组A[0,...,n-1]中找出最大值和最小值的元素,其平均比较次数为()。
参考答案:3n/2-3/2第二章测试1.可用Master方法求解的递归方程的形式为()。
参考答案:T(n)=aT(n/b)+f(n) , a≥1, b>1, 为整数, f(n)>0.2.参考答案:对3.假定,, 递归方程的解是. ( )参考答案:对4.假设数组A包含n个不同的元素,需要从数组A中找出n/2个元素,要求所找的n/2个元素的中点元素也是数组A的中点元素。
针对该问题的任何算法需要的时间复杂度的下限必为。
( )参考答案:错5.使用Master方法求解递归方程的解为().参考答案:6.考虑包含n个二维坐标点的集合S,其中n为偶数,且所有坐标点中的均不相同。
一条竖直的直线若能把S集合分成左右两部分坐标点个数相同的子集合,则称直线L为集合S的一条分界线。
若给定集合S,则可在时间内找到这条分界线L。
递归方程解的渐近阶的求法递归算法在最坏情况下的时间复杂性渐近阶的分析,都转化为求相应的一个递归方程的解的渐近阶。
因此,求递归方程的解的渐近阶是对递归算法进行分析的关键步骤。
递归方程的形式多种多样,求其解的渐近阶的方法也多种多样。
这里只介绍比较实用的五种方法。
1.代入法这个方法的基本步骤是先推测递归方程的显式解,然后用数学归纳法证明这一推测的正确性。
那么,显式解的渐近阶即为所求。
2.迭代法这个方法的基本步骤是通过反复迭代,将递归方程的右端变换成一个级数,然后求级数的和,再估计和的渐近阶;或者,不求级数的和而直接估计级数的渐近阶,从而达到对递归方程解的渐近阶的估计。
3.套用公式法这个方法针对形如:T (n)=aT (n / b)+f (n) 的递归方程,给出三种情况下方程解的渐近阶的三个相应估计公式供套用。
4.差分方程法有些递归方程可以看成一个差分方程,因而可以用解差分方程(初值问题)的方法来解递归方程。
然后对得到的解作渐近阶的估计。
5.母函数法这是一个有广泛适用性的方法。
它不仅可以用来求解线性常系数高阶齐次和非齐次的递归方程,而且可以用来求解线性变系数高阶齐次和非齐次的递归方程,甚至可以用来求解非线性递归方程。
方法的基本思想是设定递归方程解的母函数,努力建立一个关于母函数的可解方程,将其解出,然后返回递归方程的解。
本章将逐一地介绍上述五种方法,并分别举例加以说明。
本来,递归方程都带有初始条件,为了简明起见,我们在下面的讨论中略去这些初始条件。
递归方程组解的渐进阶的求法——代入法用这个办法既可估计上界也可估计下界。
如前面所指出,方法的关键步骤在于预先对解答作出推测,然后用数学归纳法证明推测的正确性。
例如,我们要估计T(n)的上界,T(n)满足递归方程:其中是地板(floors)函数的记号,表示不大于n的最大整数。
我们推测T(n)=O(n log n),即推测存在正的常数C和自然数n0,使得当n≥n0时有:T(n)≤Cn log n (6.2)事实上,取n0=22=4,并取那么,当n0≤n≤2n0时,(6.2)成立。
递归方程求解方法综述递归方程是数学中常见的一种表示方式,它描述了一个数列或函数之间的递推关系。
递归方程求解方法是指寻找递归方程的解析解或近似解的过程。
在许多应用领域,递归方程都是非常重要的,例如在计算机科学、自然科学及经济学等各个领域。
本文将从递归方程的求解方法综述入手,介绍常见的求解方法,包括代入法、特征根法、母函数法等,并举例说明其应用。
一、代入法代入法是求解递归方程的常见方法之一、它的基本思想是通过猜测法求得递归方程的解的形式,然后通过代入递归方程验证该猜测解是否成立。
如果成立,我们就可以得到递归方程的解析解;如果不成立,我们需要修改猜测解的形式,重复上述过程直到找到正确的解。
例如,考虑递推关系式$f(n) = 2f(n-1) + 3$,其中$f(0)=1$。
我们首先猜测$f(n) = a\cdot 2^n + b$,代入递推关系式可得:$a\cdot 2^n + b = 2(a\cdot 2^{n-1} + b) + 3$。
整理得$a\cdot 2^n + b = 2a\cdot 2^{n-1} + 2b + 3$。
化简可得$a\cdot 2^{n-1} = 2b + 3$。
由此可知,$b = \frac{a\cdot 2^{n-1} - 3}{2}$。
将$b$的值代入原方程得到$a\cdot 2^n + \frac{a\cdot 2^{n-1} - 3}{2} = 2(a\cdot2^{n-1} + \frac{a\cdot 2^{n-1} - 3}{2}) + 3$。
进一步化简可得$a = 6$。
因此,递归方程的解析解为$f(n) =6\cdot 2^n + \frac{3}{2}(2^n - 1)$。
二、特征根法特征根法是求解线性递归方程的常用方法。
这种方法基于线性递归方程的特征方程和特征根的性质,通过求解特征方程的根来得到递归方程的解析解。
考虑递归关系式$f(n) = af(n-1) + b$,其中$f(0)=c$。
特征方程求解递归方程
在计算机科学和算法设计中,递归方程是非常常见的数学模型。
通常情况下,它们被用来描述某些重复性的过程或者算法的运行时间。
例如,计算斐波那契数列、快速排序算法等都可以用递归方程来描述。
解决递归方程的一种常见方法是使用特征方程。
特征方程是一个与原方程形式相似的代数方程,通过求解它的根可以得到递归方程的通项公式。
特征方程的求解需要一些数学知识,包括线性代数和微积分等。
但是,对于一些简单的递归方程,我们可以使用一些基本的技巧来求解它们的特征方程。
例如,对于斐波那契数列的递归方程f(n) = f(n-1) + f(n-2),我们可以将它转化为特征方程x^2 = x + 1,然后求解它的根为φ和1-φ(φ是黄金比例,约为1.618),从而得到斐波那契数列的通项
公式f(n) = (φ^n - (1-φ)^n) / √5。
特征方程可以帮助我们更加系统地理解递归方程,从而更好地设计和分析算法。
因此,学习特征方程的求解方法是非常有价值的。
- 1 -。
练习——简答题1.什么是算法?算法有哪些特征?答:算法是求解问题的⼀系列计算步骤。
算法具有有限性、确定性、可⾏性、输⼊性和输出性5个重要特征。
2.算法设计应满⾜的⼏个⽬标答:算法设计应满⾜正确性、可使⽤性、可读性、健壮性和⾼效率与低存储量需求。
3.算法设计的基本步骤答:算法设计的基本步骤是:(1)分析求解问题(2)选择数据结构和算法设计策略(3)描述算法(4)证明算法正确性(5)算法分析各步骤之间存在循环和反复过程。
4.什么是算法复杂性?它主要有哪两个⽅⾯构成?答:算法复杂性是算法运⾏时所需要的计算机资源的量,它包括两个⽅⾯:时间复杂性(需要时间资源的量)和空间复杂性(需要空间资源的量)。
5.分析算法复杂性的意义是什么?算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。
⼀个算法的复杂性的⾼低体现在运⾏该算法所需要的计算机资源的多少上⾯,所需的资源越多,我们就说该算法的复杂性越⾼;反之,所需的资源越低,则该算法的复杂性越低。
6.f(n)=O(g(n))答:f(n)=O(g(n))当且仅当存在正常量c和n0,使当n≥n0时,f(n)≤cg(n),即g(n)为f(n)的上界。
7.f(n)=W(g(n))答:f(n)=W(g(n))当且仅当存在正常量c和n0,使当n≥n0时,f(n)≥cg(n),即g(n)为f(n)的下界。
8.f(n)=Q(g(n))答:f(n)=Q(g(n))当且仅当存在正常量c1、c2和n0,使当n≥n0时,有c1g(n)≤f(n)≤c2g(n),即g(n)与f(n)的同阶。
9.算法的平均情况、最好情况、最坏情况,哪种情况的可操作性最好,最具有实际价值?答:设⼀个算法的输⼊规模为n,Dn是所有输⼊的集合,任⼀输⼊I∈Dn,P(I)是I出现的概率,有 =1,T(I)是算法在输⼊I下所执⾏的基本语句次数,则该算法的平均执⾏时间为:A(n)=算法的最好情况为:G(n)= ,是指算法在所有输⼊I下所执⾏基本语句的最少次数。
利用主方法解递归方程主方法是解决递归方程的一种常用技巧。
它能够运用递归公式的形式特征,使得复杂的递归方程可以转化为易于求解的简单公式。
主方法的核心思想是通过确定递归方程的特征参数来求解递归公式。
主方法需要满足两个条件:首先,必须能将递归方程拆分为两个公式,一般为$f(n)=af(\frac{n}{b})+T(n)$;其次,$T(n)$需要满足一定的算法复杂度条件。
在实际应用中,主方法可以分为三种形式:主方法一、主方法二和主方法三。
主方法一适用于递归层数比较少的情况下,递归深度为$log_b n$。
主方法二适用于递归层数比较深的情况下,递归深度为$n^c$。
主方法三适用于递归层数较深、但 $T(n)$增长率比较特殊的情况。
以下是主方法的具体应用实例。
主方法一:对于递归公式 $f(n)=2f(\frac{n}{2})+n$,其中 $a=2,b=2$,$T(n)=n$。
根据主方法一的公式,可得到$f(n)=\Theta(n\log n)$。
主方法二:对于递归公式 $f(n)=f(\frac{2}{3}n)+1$,其中$a=1,b=\frac{3}{2}$。
根据主方法二的公式,可得到$f(n)=\Theta(1)$。
主方法三:对于递归公式 $f(n)=4f(\frac{n}{2})+n^2\log n$,其中$a=4,b=2$,$T(n)=n^2\log n$。
根据主方法三,将$\log_a b$的值代入公式,可得到$f(n)=\Theta(n^2\log^2n)$。
综上所述,主方法是一种简单易行的递归求解方法。
对于常见的递归问题,我们可以根据实际情况选择合适的主方法,并结合数学知识来求解递归方程,从而得到更为精确的结果。