具体数学(Concrete Math) 读书笔记

《具体数学》果真十分“具体”,远没有数学分析、高等代数那么“抽象”。这里记录了我在阅读这本书时所采撷的“心动瞬间”——这些数学公式真是令人心动——可以把这篇文章当做检索目录,遇到问题时:1、Ctrl+F;2、找到对应章节后翻书。

递归问题

河内塔问题

  • 如何确定递归式?

    • \(T_n\)表示\(n\)个圆盘的最小步数

    • \(T_n \le 2 T_{n-1} + 1\), 可以构造;

    • \(T_n \ge 2T_{n-1} + 1\),要把最大一个拿出来至少要\(T_{n-1}+1\),把剩下的移动正确位置,至少需要\(T_{n-1}\)

  • 如何求出封闭形式?

    • 数学归纳,假设\(T_n = 2^n - 1\)

    • 暴力求解,记\(U_n = T_n + 1\),则\(U_n = 2U_{n-1} = 2^n\),从而解出\(T_n\)

平面上的直线

  • 欧拉公式:F = 1 + E - V

    • 每加入一条边,F先+1;每多出一个交点,就会多两条边,从而F又+1.

    • 目标是最大化交点的数量。

  • \(n\)刀,最多把披萨分成几块?

    • 只要所有直线都不平行,第\(i\)条直线可以和之前\(i-1\)条直线相交,从而F加\(i\).
  • \(n\)条折线呢?

    • 每一对折线可以产生\(4\)个顶点,自己本身可以产生1个,初始有1个。

    • \(4 \frac{n(n-1)}{2} + n + 1 = 2n^2 - n + 1\)

  • \(n\)个120°三叉呢?

    • 每对可以产生3个,自己本身可以多2个,初始有1个。

约瑟夫问题

  • 每隔2个干掉一个?

    • 递归,第一轮会把所有偶数位置都干掉

      • \(J(2n) = 2J(n) - 1\)

      • \(J(2n + 1) = 2 J(n) + 1\)

    • 对递归式打表+数学归纳

      • \(J(2^m + l) = 2l + 1\)\(0 \le l < 2^m\)
    • 用二进制形式表示?

      • \(J(n)\)相当于把\(n\)在二进制下循环左移了一位。
    • 一些性质

      • \(J(J(J(.....J(n))))\)最后会停在不动点——二进制下全是1的数

      • \(J(n) = \frac{n}{2}\),得\(l = \frac{1}{3} (2^m - 2)\),m为奇数时一定有解。

  • 拓展一下递归式?

    • \(f(1) = \alpha\); \(f(2n) = 2 f(n) + \beta\); \(f(2n + 1) = 2 f(n) + \gamma\).

    • 显然\(f(n) = A(n) \alpha + B(n) \beta + C(n) \gamma\).

      • 法一:打表、归纳

      • 法二:带入\(f(n)=1\),\(f(n)=n\).解出对应的\(\alpha,\beta,\gamma\),从而解出\(A(n),B(n),C(n)\).

  • 叕拓展一下递归式?

    • \(f(j) = \alpha_j\); \(f(dn + j) = c f(n) + \beta_j\).

    • \(f((b_m b_{m-1} .... b_1 b_0)_d) = (\alpha_{b_m} \beta_{b_{m-1}} .... \beta_{b_0})_c\).

和式

和式和递归式

  • 将和式转化为递归式

    • 可得$R_n = A(n) \alpha + B(n) \beta + C(n) \gamma $。

    • 用上一节的成套方法,即用\(R_n\)为简单函数,解出 \(\alpha,\beta,\gamma\),从而解出\(A(n),B(n),C(n)\)

  • 将递归式转为和式

    • \(a_n T_n = b_n T_{n-1} + c_n\); \(T_0\)是个常数。

    • \(s_n = \frac{a_{n-1} a_{n-2} .... a_1}{b_n b_{n-1} b_2}\); 则有\(b_n s_n = a_{n-1} s_{n-1}\).

    • 则有:\(T_n = \frac{1}{a_n s_n} (s_1 b_1 T_0 + \sum_{k=1}^{n} s_k c_k)\).

    • 注意,要求所有\(a_n,b_n\)均不为0.

  • 例题:计算快速排序复杂度

    • \(C_0 = C_1 = 0\); \(C_n = n + 1 + \frac{2}{n} \sum_{k=0}^{n-1} C_k\).

    • 先转换为递归式

      • 两边乘\(n\):$n C_n = n(n+1) + 2\sum_{k=0}^{n-1} C_k $.

      • 对应到\(n-1\): $(n-1) C_{n-1} = n(n-1) + 2\sum_{k=0}^{n-2} C_k $.

      • 相减:\(n C_n = (n + 1) C_{n-1} + 2n\); \(C_2 = 3\).

    • 应用公式

      • \(a_n = n\); \(b_n = n+1\); \(c_n = 2n - 2[n=1]+2[n=2]\); \(s_n = \frac{2}{n(n+1)}\)

      • \(C_n = 2(n+1)\sum_{k=1}^{n} \frac{1}{k+1} - \frac{2}{3}(n+1)\).

    • 封闭形式

      • 调和数:\(H_n = \sum_{k=1}^{n} \frac{1}{k}\).

      • \(C_n = 2(n+1) H_n - \frac{8}{3}n - \frac{2}{3}\).

和式的处理

  • 扰动法

    • \(S_n = \sum_{i=0}^{n} a_n\)

    • \(S_n + a_{n+1} = a_0 + \sum_{i=0}^{n} a_{i+1}\)

    • 尝试用\(S_n\)来表示右边

  • 例题:\(S_n = \sum_{k=0}^{n} k 2^k\)

    • \(S_n + (n+1)2^{n+1} = \sum_{k=0}^{n} (k+1) 2^{k+1} = 2S_n + (2^{n+2} - 2)\);化简即可
  • 拓展:\(S_n = \sum_{k=0}^{n} k x^k\).

    • \(\sum_{k=0}^{n} x^k = \frac{1-x^{n+1}}{1-x}\)

    • 求导:\(\sum_{k=0}^{n} k x^{k-1} = \frac{1-(n+1)x^n + nx^{n+1}}{(1-x)^2}\).

    • 看起来离散和连续之间,有一种不可告人的关系

多重和式

  • 切比雪夫单调不等式

    • \(S = \sum_{1 \le j < k \le n} (a_k - a_j) (b_k - b_j)\)

    • $2S = \sum_{1 \le j,k \le n} (a_k - a_j) (b_k - b_j) = 2n \sum_{k=1}^{n} a_k b_k - 2 (\sum_{k=1}^{n} a_k) (\sum_{k=1}^{n} b_k) $

    • \((\sum_{k=1}^{n} a_k) (\sum_{k=1}^{n} b_k) = n \sum_{k=1}^{n} a_k b_k - \sum_{1 \le j < k \le n} (a_k - a_j) (b_k - b_j)\).

    • \(a_i,b_i\)不减时,\(S \ge 0\),上式的等号变成\(\le\)

    • \(a_i\)不减,\(b_i\)不增,\(S \le 0\),上式取\(\ge\)

  • 连续情况下的切比雪夫不等式

    • \((\int_a^b f(x) dx) (\int_a^b g(x) dx) \le (b-a) (\int_a^b f(x)g(x)dx)\); 若\(f(x),g(x)\)不减
  • 例题:\(S_n = \sum_{1 \le j < k \le n} \frac{1}{k-j}\)

    • \(S_n = \sum_{0 \le k < n} H_k\)

    • \(S_n = \sum_{k=1}^{n} \frac{n-k}{k} = n H_n - n\)

    • 从而\(\sum_{0 \le k < n} H_k = n H_n - n\). 真是神奇

一般性的方法

讨论\(S_n = \sum_{k=1}^{n} k^2\)的解法

  • 打表+猜测答案+数学归纳

  • 扰动法

    • 需要用\(\sum_{k=1}^{n} k^3\)来扰动.
  • 成套方法

    • \(R_n = R_{n-1} + \beta + \gamma n + \delta n^2\)

    • \(R_n = A(n) \alpha + B(n) \beta + C(n) \gamma + D(n) \delta\)

    • 假定\(\delta = 0\)\(A(n),B(n),C(n)\)和之前一样;再令\(R_n = n^3\),解出\(D(n)\)

  • 用积分估计,对误差递归

    • \(\int_0^n x^2 dx = \frac{n^3}{3}\)

    • \(E_n = S_n - \frac{n^3}{3}\)

    • \(E_n = S_{n-1} + n^2 - \frac{n^3}{2} = E_{n-1} + \frac{(n-1)^3}{2} + n^2 - \frac{n^3}{2} = E_{n-1} + n - \frac{1}{3}\)

    • \(E_n\) 超级好算。

  • 展开和放缩

    • \(S_n = \sum_{1 \le j \le k \le n} k = \sum_{1 \le j \le n} (j+n)(n-j+1)/2\)

    • 拆开即可

有限微积分

  • 下降幂

    • \(x^{\underline{m}} = x(x-1)(x-2)...(x-m+1)\)\(m > 0\)

    • \(x^{\underline{-m}} = \frac{1}{(x+1)(x+2)...(x+m)}\)\(m > 0\)

    • \(x^{\underline{m+n}} = x^{\underline{m}} (x - m)^{\underline{n}}\)

  • 求解\(\sum_{a \le x < b} f(x)\)

    • 若能找到\(f(x) = g(x+1) - g(x)\)

    • 则答案为\(g(b) - g(a)\)

  • 一些“原函数”

    • \(x^{\underline{m}} = \frac{1}{m+1}[(x+1)^{\underline{m+1}} - x^{\underline{m+1}}]\)\(m \ne -1\)

    • $x^{\underline{-1}} = \frac{1}{x+1} = H(x+1) - H(x) \(,\)H(x)$是调和数

    • \(x = \frac{1}{2}[(x+1)x - x(x-1)]\)

    • \(x^n\) 要先用斯特林数化成\(x^{\underline{m}},1 \le m \le n\)的形式,然后分别找原函数

    • \(2^x = 2^{x+1} - 2^x\),和连续时\(e^x\)类似

    • \(c^x = \frac{c^{x+1} - c^x}{c-1}\)

  • 离散的“分部积分”

    • \(\sum_{a \le x < b} u(x) [v(x+1) - v(x)] = u(b) v(b) - u(a) v(a) - \sum_{a \le x < b} [u(x+1) - u(x)] v(x+1)\)

    • 例题:\(\sum_{0 \le x < n} H_x x\)

      • \(x = \frac{1}{2}[(

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值