《具体数学》学习笔记: 2.和式(上)

《具体数学》学习笔记: 2.和式(上)

序言:
第二章—和式的内容较多也较杂,因此将分成两篇记录。

2.1 和式和递归式(Sum and Recurrences)
首先回顾上一章汉诺塔的递归式
T 0 = 0 ; T n = 2 T n − 1 + 1 ,   n > 0 ; \begin{aligned} &T_0 = 0; \\ &T_n = 2T_{n - 1} + 1,\ n>0; \end{aligned} T0=0;Tn=2Tn1+1, n>0;

  1. 数学归纳法:

根据递推关系式中,我们可以得到 T 1 = 1 , T 2 = 3 , T 3 = 7 , . . . . T_1 = 1, T_2 = 3, T_3 = 7,.... T1=1,T2=3,T3=7,....由此可以猜测到 T n = 2 n − 1 T_n = 2^n - 1 Tn=2n1,然后利用数学归纳法进行证明即可。

  1. 配置等比数列:

改写递归式
T n + 1 = 2 ( T n − 1 + 1 ) ,   n > 0 ; T_n + 1 = 2(T_{n - 1} + 1), \ n>0; Tn+1=2(Tn1+1), n>0;
由此便有
T 0 + 1 = 1 T n + 1 = 2 n ,   n > 0 ; \begin{aligned} &T_0 + 1 = 1 \\ &T_n + 1 = 2^n, \ n>0;\\ \end{aligned} T0+1=1Tn+1=2n, n>0;
T n = 2 n − 1   ( n ≥ 0 ) T_n = 2 ^ n - 1 \ (n \ge0) Tn=2n1 (n0).

  1. 化成和式:

对递归式两边同除 2 n 2^n 2n,得到
T 0 / 2 0 = 0 ; T n / 2 n = T n − 1 / 2 n − 1 + 1 / 2 n ,   n > 0 ; \begin{aligned} &T_0 / 2^0 = 0; \\ &T_n / 2^n = T_{n - 1} / 2^{n-1} + 1/2^n,\ n>0; \end{aligned} T0/20=0;Tn/2n=Tn1/2n1+1/2n, n>0;
S n = T n / 2 n S_n = T_n / 2^n Sn=Tn/2n, 可以得到
S n = ∑ k = 1 n 1 2 k = 1 − 1 2 n S_n = \sum_{k = 1}^{n}{\frac{1}{2^k}} = 1 - \frac{1}{2^n} Sn=k=1n2k1=12n1
于是
T n = 2 n S n = 2 n − 1 ,   n ≥ 0 T_n = 2^nS_n = 2^n - 1, \ n \ge 0 Tn=2nSn=2n1, n0

  • 拓展

方法3.的思路可以进行拓展,对于形如
a n T n = b n T n − 1 + c n a_nT_n = b_nT_{n - 1} + c_n anTn=bnTn1+cn
的递归式,我们选取一个合适的求和因子(summation factor) s n s_n sn 乘两边
s n a n T n = s n b n T n − 1 + s n c n a n d s n b n = s n − 1 a n − 1 s_na_nT_n = s_nb_nT_{n - 1} + s_nc_n\\ {\rm and} \quad s_nb_n = s_{n - 1}a_{n - 1} snanTn=snbnTn1+sncnandsnbn=sn1an1
s n a n T n = S n s_na_nT_n = S_n snanTn=Sn, 则
S n = S n − 1 + s n c n S_n = S_{n - 1} + s_nc_n Sn=Sn1+sncn
从而
S n = s 0 a 0 T 0 + ∑ k = 1 n s k c k = s 1 b 1 T 0 + ∑ k = 1 n s k c k T n = 1 s n a n S n = 1 s n a n [ s 1 b 1 T 0 + ∑ k = 1 n s k c k ] S_n = s_0a_0T_0 + \sum_{k = 1}^{n}{s_kc_k}=s_1b_1T_0 + \sum_{k = 1}^{n}{s_kc_k}\\ T_n = \frac{1}{s_na_n}S_n = \frac{1}{s_na_n}[ s_1b_1T_0 + \sum_{k = 1}^{n}{s_kc_k}] Sn=s0a0T0+k=1nskck=s1b1T0+k=1nskckTn=snan1Sn=snan1[s1b1T0+k=1nskck]
求和因子 s n s_n sn,可以根据 s n = s n − 1 a n − 1 / b n s_n = s_{n-1}a_{n - 1} / b_n sn=sn1an1/bn,解得
s n = a n − 1 a n − 2 . . . a 1 b n b n − 1 . . . b 2 \red{s_n = \frac{a_{n-1}a_{n-2}...a_1}{b_nb_{n-1}...b_2}} sn=bnbn1...b2an1an2...a1

本书给出了关于快速排序(Quicksort)所做的比较步骤的平均次数的递归式
C 0 = C 1 = 0 C n = n + 1 + 2 n ∑ k = 0 n − 1 C k ,   n > 1 \begin{aligned} &C_0 = C_1 = 0\\ &C_n = n + 1 + \frac{2}{n}\sum_{k=0}^{n-1}{C_k}, \ n>1 \end{aligned} C0=C1=0Cn=n+1+n2k=0n1Ck, n>1
化简的复杂步骤略去,最后使用方法3可以得到
C n = 2 ( n + 1 ) ∑ k = 1 n 1 k + 1 − 2 3 ( n + 1 ) ,   n > 1 C_n = 2(n + 1)\sum_{k=1}^{n}{\frac{1}{k + 1}} -\frac{2}{3}(n + 1), \ n>1 Cn=2(n+1)k=1nk+1132(n+1), n>1
这里注意到一个重要的和式—调和数
H n = 1 + 1 2 + . . . + 1 n = ∑ k = 1 n 1 k \red{H_n = 1 + \frac{1}{2} + ... + \frac{1}{n} = \sum_{k=1}^{n}{\frac{1}{k}}} Hn=1+21+...+n1=k=1nk1

∑ k = 1 n 1 k + 1 = H n − 1 + 1 n + 1 = H n − n n + 1 \sum_{k=1}^{n}{\frac{1}{k + 1}} = H_n - 1+ \frac{1}{n + 1} = H_n - \frac{n}{n + 1} k=1nk+11=Hn1+n+11=Hnn+1n

2.2 扰动法(Perturbation Method)
将和式的单独一项从分离出去,是得出和式封闭形式的一个重要手段,称为扰动法。对于一个标准的和式
S n = ∑ 0 ≤ k ≤ n a k S_n = \sum_{0\le k\le n}{a_k} Sn=0knak
可以得到
S n + 1 = S n + a n + 1 = a 0 + ∑ 0 ≤ k ≤ n a k + 1 \red{S_{n + 1} = S_n + a_{n + 1} = a_0 + \sum_{0\le k\le n}{a_{k + 1}}} Sn+1=Sn+an+1=a0+0knak+1

尝试用之解决几何级数(等比数列和),即
S n = ∑ 0 ≤ k ≤ n a x k S_n = \sum_{0\le k\le n}{ax^k} Sn=0knaxk

S n + a x n + 1 = a + x ∑ 0 ≤ k ≤ n a x k = a + x S n S_{n} + ax^{n+1} = a + x\sum_{0\le k\le n}{ax^{k}} = a + xS_n Sn+axn+1=a+x0knaxk=a+xSn
移项直接得到
S n = a − a x n + 1 1 − x , x ≠ 1 S_{n} = \frac{a - ax^{n + 1}}{1-x}, \quad x \ne 1 Sn=1xaaxn+1,x̸=1
进一步地,我们还可以用扰动法求 S n = ∑ 0 ≤ k ≤ n k x k S_n = \sum_{0\le k\le n}k{x^k} Sn=0knkxk,或者乘数为 k k k 的更高次幂的和式.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值