混凝土
记号约定
- \(\ln x\):自然对数 \(\log_ex\)
- \(\lg x\):以十为底的对数 \(\log_{10} x\)
- \(\log x\):以二为底的对数 \(\log_{2}x\)
- \(\lfloor x\rfloor\):\(\max\{n \in \mathbb Z|n\leq x\}\)
- \(\lceil x\rceil\):\(\min\{n\in \mathbb Z|n \geq x\}\)
- \(x\mod y\):\(x-y\lfloor\frac{x}{y}\rfloor\)
- \(\{x\}\):\(x \mod 1\)
- \(\sum f(x) \delta x\):无限和式
- \(\sum_{a}^b f(x) \delta x\):有限和式
- \(a \perp b\):\(\gcd(a,b)=1\)
- \([P]\):当 \(P\) 为真时值为 \(1\),否则值为 \(0\)
第一章 递归问题
1. 汉诺塔问题
三个柱, 第一个柱上有 \(n\) 个圆盘, 圆盘大小从上到下递增, 每次只能移动一个圆盘, 每根柱子上圆盘大小应时刻满足从上到下递增,求最小方案数.
命名并求解. 设 \(T(n)\): 圆盘数为 \(n\) 的最小步骤. 问题相当于将 \(n-1\) 个圆盘挪到中间的柱上, 再将第 \(n\) 块圆盘扔到第 \(n\) 个柱上, 然后把这 \(n\) 个挪到最后的柱子上. 可得出递推式: \(T(n)=T(n-1)+1+T(n-1)=2T(n-1)+1\). 可以求出 \(T(n)=2^n-1\).
2. 直线割平面问题.
平面上 \(n\) 条直线最多能将平面分成几部分.
每新增一条直线最多产生 \(n-1\) 个交点, 分出 \(n\) 个平面, 故 \(f(n)=f(n-1)+n\), 则 \(f(n)=\sum_{k=1}^n k=\frac{n(n+1)}{2}\).
3. 约瑟夫问题.
这个题目的历史背景可参考百度百科, 这里把问题改得简单一点. 几个人围成一圈, 每隔一个人杀一个人, 求最后幸存者的编号.
设 \(J(n)\) 表示总人数为 \(n\) 最后活下来的编号. 如果 \(n\) 是偶数, 那么除了人数仅剩一半和编号不同之外前后的情景是一致的. 假设一开始有 \(2n\) 个人, 经过第一轮会剩下 \(1, 3, \dots ,2n-1\), 一个人对应的号码应该加倍然后减一, 也就是说 \(J(2n)=2J(n)-1\), 对于奇数的情形, 活下来的人是 \(1, 3, \dots , 2n+1\), 这一次他们的号码加倍并增加了一,故 \(J(2n+1)=2J(n)+1\). 于是我们得到递推式:
目前对于求出 \(J(n)\) 我们还没有什么头绪, 于是我们先打个表.
如图, 我们注意到 \(J(2^m+l)=2l+1\), 尝试证明这个结论. 我们对 \(m\) 使用数学归纳法. 当 \(m=0\) 时, \(J(1)=1\) 显然成立. 我们上面求递推式的过程启发我们对 \(l\) 分奇偶讨论. 当 \(l\) 为偶数, \(J(2^m+l)=2J(2^{m-1}+\frac{l}{2})-1=2\times( \frac{l}{2}+1)-1=2l-1\), 结论成立; 当 \(l\) 为奇数时类似的可以证明.
解决了问题后再发散思维联想联想, 发现我们的证明过程中离不开 2 的次幂, 考虑研究这之间的关系. 设 \(n=(b_mb_{m-1}b_{m-2}\dots b_{2}b_1b_0)_2\), 注意到 \(J(n)=(b_{m-1}b_{m-2}\dots b_2b_2b_0b_m)\), 也就是说 \(J(n)\) 把 \(n\) 向左循环移动了一位.
现在我们对 \(J(n)\) 已经有了一个透彻的认识,接下来考虑推广。我们试着求形如
的递推式的封闭形式。打个表注意到 \(\alpha,\beta,\gamma\) 的系数存在一定规律,于是我们就能把 \(f(n)\) 对 \(\alpha,\beta,\gamma\) 的依存关系分开,表示为:
注意到 \(A(n)=2^m,B(n)=2^m-1-l,C(n)=l\),数学归纳法可证。
书中告诉我们,对付感性上“线性的”递推式,先带个特值算会非常爽。这种求递推式封闭形式的方法被称作成套方法。
练习题:
8
解递归式:
sol
$$Q_2=\frac{1+\beta}{\alpha}$$于是这是个周期函数。
24
求所有形如
的递归关系,使无论 \(X_0,X_1,\dots,X_{k-1}\) 如何,它的解都是周期的。
sol
前面的第八题就是个满足条件的式子。本书还给了 $X_n=2i\sin \pi r+1/X_{n-1}$ 这一递推式。第二章 和式
2.1 和式与递归式
和式和递归式可以转化。和式
等价于递归式
也就是说,用第一章中求解封闭递归式的方式,我们就可以用封闭形式计算和式的值。反过来,递归式也可以通过转化为和式来求解。例如汉诺塔的递归式:
注意到,如果我们令 \(S_n=T_n/2^n\),我们就有:
由此得到 \(S_n=\sum_{k=1}^n 2^{-k}\),进而可求出 \(T_n\)。
那我们是怎么注意到的呢?实际上对于任何形如
的递归式我们都可以用求和因子的思想把它转化成和式形式。具体地,我们让求和因子 \(s_n\) 乘在等式两边:
我们需要选取 \(s_n\) 使 \(s_nb_n=s_{n-1}a_{n-1}\),这样设 \(S_n=s_na_nT_n\),则
于是
我们可以容易地求出来 \(s_n=\frac{\prod_{k=1}^{n-1} a_k}{\prod_{k=2}^n b_k}\)。于是傻子都可以注意到了。但我们必须注意分母时刻不能为0。
2.2 和式的处理
和式的处理在于简化或接近目标。
2.2.1 和式运算律
分配率:\(\sum\limits_{k\in K}ca_k=c\sum\limits_{k\in K}a_k\)
结合律:\(\sum\limits_{k\in K}(a_k+b_k)=\sum\limits_{k\in K}a_k+\sum\limits_{k \in K}b_k\)
交换律:\(\sum\limits_{k\in K}a_k=\sum\limits_{p(k)\in K}a_{p(k)}\)
小高斯算一到一百的和的过程相当于利用了和式的交换律。
2.2.2 扰动法
就是在求解和式的时候把单独一项从和式中分出去,重新改写式子然后运算。其思想从未知的和式 \(S_n=\sum_{0 \leq k \leq n}a_k\) 开始。然后通过他的最后一项和第一项分离出来,用两种方法改写 \(S_{n+1}\):
然后我们尝试用 \(S_n\) 表示最后那个和式,然后就得到方程,解就完了。
例:求一般的几何级数的和:
用一般的扰动法格式,得
由分配率得 \(RHS=ax^0+xS_n\),于是 \(S_n+ax^{n+1}=a+xS_n\),得到我们早就熟记的公式:
2.3 多重和式
2.3.1 交换求和次序
是我们之前见过的结合律的推广。
这个基本法则有两个变形:简易型(vanilla)和复杂型(rocky road)。
vanilla:\(\sum\limits_{j\in J}\sum\limits_{k \in K}a_{j,k}=\sum\limits_{j\in J , k \in K}a_{j,k}=\sum\limits_{k \in K}\sum\limits_{j \in J}a_{j,k}\)
rocky road 适用于内和的范围与外和的下标有关的情形:
其中 \(J,K(j),K',J'(k)\) 必须以以下的方式关联:
2.3.2 Chebyshev's monotonic inequality
这是个特例。
2.4 一般性的方法
例子:求 \(\square_n=\sum_{k=0}^n k^2\)。
法 0:查表
法 1:对和式用扰动法
丸辣,\(\square_n\) 被抵消了!但我们发现这样可以推出 \(\sum_{k=0}^n k\)!
于是我们考虑通过扰动 \(\sum_{k=0}^n k^3\) 来求 \(\square_n\)