递归方程求解

解递归方程

下面的求解方法,其正确性可阅读组合数学中的相关内容。

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 =+≥??=?

递推求解如下:

222232332210

()((/)(/))()

(/)(/)()

((/)(/))(/)()

(/)(/)(/)() ......

(/)(/)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 =为常数时,有:

111

000(/)(/)(/)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 +-+-=

解:设特解为21

23*()T n Pn P n P =++,代入原递归方程有:22221231231235((1)(1))6((2)(2))3Pn 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 +-++-+=

比较两边的系数,有

相关主题
相关文档
最新文档