递归方程求解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解递归方程
下面的求解方法,其正确性可阅读组合数学中的相关内容。
1、 递推法
例:Hanoi 塔问题递归算法的时间复杂性,由以下递归方程给出:
()2(1) 1 2(1)1T n T n n T =-+≥⎧⎨=⎩
递推求解如下:
232122122()2(1)1
2(2(2)1)1
2(2)21
2(3)221
......
2(1)2 (221)
22 (221)
21
n n n n n T n T n T n T n T n T ----=-+=-++=-++=-++++=+++++=+++++=-
所以,Hanoi 塔问题递归算法的时间复杂性为:()(2)n T n O =
例:分治法实例。
设n 表示问题的尺寸,n/b 表示将问题分成a 个子问题后的每个子问题的尺寸,其中a,b 为常数。
d(n)表示在分解或合成子问题而得到整个问题解决时的时间耗费。
则整个问题的时间耗费由下面的递归方程给出: ()(/)() 2(1)1T n aT n b d n n T =+≥⎧⎨=⎩
递推求解如下:
22223233221
0()((/)(/))()
(/)(/)()
((/)(/))(/)()
(/)(/)(/)() ......
(/)(/)k k k
i i i T n a aT n b d n b d n a T n b ad n b d n a aT n b d n b ad n b d n a T n b a d n b ad n b d n a T n b a d n b -==++=++=+++=+++=+∑
设:k
n b =,则log b k n =,有: 1
0()(1)(/)k k
i i i T n a T a d n b -==+∑ 当()d n 为常数时,有:
log 10()() 1()(log ) 1 b a k k k i
i b O a O n a T n a c a O n a -=⎧=≠=+=⎨
=⎩∑ 当(),d n cn c =为常数时,有:
111000(/)(/)(/)k k k i i i i
i i i i a d n b a cn b cn a b ---=====∑∑∑
若:a b <,则:10(/)
()k i i cn a b O n -==∑
log ()()()b a T n n O n O n =+=
若:a b =,则:10(/)
log k i b i cn a b cnk cn n -===∑
log ()log (log )b a b b T n n cn n O n n =+=
若:a b >,则:1log log 0(/)1(/)()()()/1/1b b k k k
k n a i
k i a b a b cn a b cn c O a O a O n a b a b -=--=====--∑ log log log ()()()b b b a a a T n n O n O n =+=
综上所述:log () ()(log ) () b n O n a b T n O n n a b O n
a b ⎧<⎪==⎨⎪>⎩
2、公式解法
K 阶常系数齐次递推方程:12()(1)(2)...()0k T n a T n a T n a T n k -------= 0,,,1,...,k i a n k a i k ≠≥=是常数
则对应的特征方程为:1212...0k k k k x a x a x a ------=
特征方程有k 个根:12,,...,k q q q ,称为齐次方程的特征根。
若:k 个根中无重根,则齐次方程的通解为:1122()...n n n
k k T n c q c q c q =+++
其中的系数为待定系数,由方程的初始条件确定。
若:k 个根中有r 重根,12,,...,k q q q 中,11...i i i r q q q ++-===,则齐次方程的通解为:
1111111()...(...)...n n r n n n i i i i i r i i r i r k k T n c q c q c c n c n q c q c q ---++-++=+++++++++
例:求解递归方程
()(1)3(2)5(3)2(4)0 4(0)1,(1)0,(2)1,(3)2
T n T n T n T n T n n T T T T +-------=≥⎧⎨====⎩ 解:递归方程的特征方程为 432
3520x x x x +---=
其特征根为:-1,-1,-1,2
递归方程通解为:21234()()(1)2n n T n C C n C n C =++-+
由初始条件有: 1412341
234123412024413982
C C C C C C C C C C C C C C +=⎧⎪---+=⎪⎨+++=⎪⎪---+=⎩ 解得:1234712,,0,939
C C C C ==-== 因此递归方程的解为:712()(1)(1)2939
n n n T n n =---+⋅
K 阶常系数线性非齐次递推方程:12()(1)(2)...()()k T n a T n a T n a T n k f n -------= 0,()0,()()k a f n f n T n ≠≠与线性无关 方程通解为:()()*()T n T n T n =+ ,其中()T n 是对应的齐次方程的通解, *()T n 是一个特解。
当f(n)是n 的t 次多项式时,可设特解*()T n 也是n 的t 次多项式:
1121*()...t t t t T n Pn P n Pn P -+=++++,其中121,,...,t P
P P +是待定系数,将*()T n 代入原递推方程后即可求出。
例:求解递归方程的一个特解
2()5(1)6(2)3T n T n T n n +-+-=
解:设特解为2123*()T n P n
P n P =++,代入原递归方程有:222
1231231
235((1)(1))6((2)(2))P n P n P P n P n P P n P n P n +++-+-++-+-+= 化简有:2211212312(3412)(291712)3Pn P P n P P P n +-++-+=
比较两边的系数,有
111
2312334120
2917120P P P P P P =⎧⎪-+=⎨⎪-+=⎩ 解得:123117115,,424288
P P P === 因此递归方程的特解为:2117115*()424288
T n n n =
++ 当f(n)是指数函数时,若().n f n αβ=,其中,αβ为给定系数。
若β不是对应的齐次方程的特征根,则可设特解:*()n T n P β=⋅,其中P 待定。
若β是对应的齐次方程的e 重特征根,则可设特解:*()e n T n Pn β=⋅,其中P 待定。
例:求解递归方程
()5(1)6(2)424(0)0,(1)0
n
T n T n T n T T ⎧+-+-=⋅⎨==⎩ 解:递归方程对应的齐次方程的特征方程为:2
560x x ++=,解为-2,-3 递归方程对应的齐次方程的通解为:12()(2)(3)n n T n C C =-+-
设特解为*()4n T n P =⋅,代入原递归方程有: 1245464424n n n n P P P --⋅+⋅+⋅=⋅
解得:16P =,
递归方程的特解为:*()164n
T n =⋅ 递归方程的解为:12()()*()(2)(3)164n n n T n T n T n C C =+=-+-+⋅
由初始条件得: 1212160(2)(3)640
C C C C ++=⎧⎨-+-+=⎩ 解得:12112,96C C =-=
所以递归方程的解为:
()112(2)96(3)164n n n T n =--+-+⋅
3、 生成函数法
设01,,...,,...n a a a 是一个数列,作形式幂级数:
2012()......n n A x a a x a x a x =+++++
称A(x)是数列01,,...,,...n a a a 的生成函数。
当{}n a 的通项由递归方程的形式给出时,利用生成函数可以求解出n a 的结果。
例:Hanoi 塔问题中,若:n a 表示移动n 个盘子所需要的移动次数,则递归方程有: 11
211n n a a a -=+⎧⎨=⎩ 解:以{}n a 为系数构造生成函数:212()......n n A x a x a x a x =++++ 231212()22...2...n n xA x a x a x a x --=----+
2312132111223(12)()(2)(2)...(2)... (2) ...
1n n n i
i i i x A x a x a a x a a x a a x a x a a x x x x x
x -∞
-=-=+-+-++-+=+-=+++=-∑
2233231
11()(1)(12)121(1222....)(1...)(21)i i
i x A x x x x x
x x x x x x x ∞
===-----=++++-++++=-∑
其中n x 的系数为21n -,所以有21n n a =- 所以,Hanoi 塔问题递归算法的时间复杂性为:(2)n
O
练习:
用公式法求解: ()2(1) 1 2(1)1
T n T n n T =-+≥⎧⎨=⎩ 1、 求通解: 特征方程: 202
x x -== 通解为:()2n T n c =
2、 求特解: *()T n p =
代入原递推方程: 211p p p =+=- 方程的解为: ()21n T n c =- 代入初始条件: (1)2111T c c =-== ()21n T n ∴=-。