《具体数学》 学习笔记

第一章 递归问题

汉诺塔

另T(n)为移动最少次数

则T(n) = T(n-1)[将n-1个盘移到一个柱] + T(n-1)[将剩下的n-1个盘移动到一个柱] +  1 [将大盘移动到最后一个位置]

$$T(n) = 2T(n-1)+1$$

$$T(n) +1 = 2(T(n-1)+1)$$

 $$T(n)+1 = a_1*q^{(n-1)} = 2*2^{(n-1)} =2 ^{n}$$

 $$T(n) = 2^{n}-1$$

直线分割问题

画图看看就知道了,第n条直线能和前面n-1个直线相交,然后多n个空间出来

$$T(n) = T(n-1) + n =\frac{1}{2}n(n+1)+1$$

拓展问题:用折线“V”代替直线

对于每对折线损失2个空间,因此$$Z(n) =T(2n)-2n = 2n^2-n+1 $$

约瑟夫环问题

2n的情况下,J(2n) = 2J(n)-1

2n+1的情况下,J(2n+1) = 2J(n)-1

画图理解,在2n情况下,id = 3要被转换成 id = 2来表示下一轮(下一轮的id从1,3,5,7,2n-1映射成了1,2,3,4...n-1,n),所以J(2n) = 2J(n)-1;2n+1的情况同理,如果是程序设计,直接记忆化搜索或者直推就好

 

成套方法求解

已知:

$$R_0 = \alpha \\R_n=R_{n-1} + \beta + \gamma n $$

则有:

$$R1 = \alpha +\beta +\gamma \\ R_2 = \alpha +2\beta +3\gamma $$

假设有$$R(n) = A(n)\alpha + B(n)\beta +C(n)\gamma$$

此时我们的任务就变成了求解A(n),B(n),C(n)

让R(n) = 三个值,求出三个等式,三个三元一次方程组解出A(n),B(n),C(n)

$$ R(n)=1\rightarrow A(n)=1 $$

$$ R(n)=n\rightarrow B(n)=n $$

$$ R(n)=n^2\rightarrow 2C(n)-B(n) = n^2\rightarrow C(n) = \frac{(n^2+n)}{2} $$

 

第二章 和式

记号:$$\sum_{k=1}^{n}a_k $$,还有一些简化的写法,$$\sum_{k}a_kP(k) $$,P(k)代表是否满足给定条件,结果为false(0) 或者 true(1)。只是写法问题,用的顺手就好

接下来的方法解决一个问题,如果在已知递归式的情况下,求解表达式呢?答案是先转化成和式

这里针对形如 $$ a_nT_n = b_nT_{n-1} + c_n $$ 的递归式形式

两边同乘 $$ s_n $$则有:

$$ s_na_nT_n = s_nb_nT_{n-1} + c_n $$,并且要求 $$ s_nb_n == s_{n-1}a_{n-1} (1)$$

根据(1)式子,通过枚举n=[1,n] 等式相乘,则有$$ s_n = \frac{a_{n-1}a_{n-2}...a_1}{b_{n}b_{n-1}...b_2} $$

$$ S_n = s_na_nT_n $$,则有S_n = S_{n-1}+s_nc_n = s_0a_0T_0 + \sum_{k=1} ^{n}s_kc_k

所以有 T_n = \frac{ s_0a_0T_0 + \sum_{k=1} ^{n}s_kc_k}{s_na_n}

以上求表达式在快排求解复杂度中的运用

已知C_n代表n个数快排的复杂度

C_0 = 0 \\ C_n = n+1 +\frac{2}{n}\sum _{k=0}^{n-1}C_k(n>0)

另 n=n-1,则有

$$ C_{n-1} = n +\frac{2}{n}\sum _{k=0}^{n-2}C_k(n>1) $$

两式做差,得到

nC_n = (n+1)C_{n-1} +2n,n>0

则有$$ a_n = n,b_n=n+1,c_n=2n $$

$$ s_n = \frac{a_{n-1}a_{n-2}...a_1}{b_{n}b_{n-1}...b_2} = \frac{2}{n(n+1)} $$

$$ C_n = s(n+1)\sum _{k=1} ^n \frac{1}{k+1} $$

 

利用和式三大定律求解和式

例题1:求解$$S = \sum_{0\leq k\leq n}(a+bk)$$

$$S = \sum_{0\leq k\leq n}(a+bk) \ Let\ k=n-k \\ S=\sum_{0\leq k\leq n}(a+b(n-k)) \\ 2S = \sum_{0\leq k\leq n}(2a+bn) = (2a+bn)\sum_{0\leq k\leq n}(1) \\S=\frac{(2a+bn)(n+1)}{2} $$

总结:变量替代后,式子相加

例题2:求解几何级数 $$S = \sum_{0\leq k\leq n}ax^{k+1}$$

$$S = \sum_{0\leq k\leq n}kx^{k} \\ S + (n+1)x^{n+1}= \sum_{0\leq k\leq n+1}kx^{k} \\ =\sum_{0\leq k\leq n}(k+1)x^{k+1}\\=x\sum_{0\leq k\leq n}(k+1)x^{k} \\ = xS+x\sum_{0\leq k\leq n}x^k\\=xS+x\frac{1-x^{n+1}}{1-x}\\S(1-x)=x\frac{1-x^{n+1}}{1-x}-(n+1)x^{n+1}\\ S = \frac{1-(n+1)x^n+nx^{n+1}}{(1-x)^2}$$

总结:加上后一项,凑出S,最后移项化简

 

多重求和

 

一般性求和方法

求解 $$ S_n=\sum_{0\leq k\leq n}k^2 $$

方法0:查找公式。如果知道序列的前几个项,可以在OEIS上查

方法1:猜答案+数学归纳法验证,不建议,比较看运气猜

方法2:扰动法。直接加(n+1)^2得不到有效的结果,但是会发现有抵消的部分。尝试(n+1)^3,展开项中就存在S_n

$$ T_n=\sum_{0\leq k\leq n}k^3 \\ T_n +(n+1)^3=\sum_{0\leq k\leq n}(k+1)^3 \\ T_n +(n+1)^3=T_n+3S_n+3(n+1)n/2+(n+1) \\ S_n=\frac{n(n+1)(n+2)}{6}$$

方法3:有限微积分,下一节

方法4:生成函数,以后的章节会讲

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值