具體數學(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\)
\(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\)
- \(J(2^m + l) = 2l + 1\)
用二進位制形式表示?
- \(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}[(x+1)^{\underline{2}} - x^{\underline{2}}]\),\(v(x) = \frac{1}{2} x^{\underline{2}}\)
\(H_{x+1} - H_x = x^{\underline{-1}}\)
答案為\(\frac{n^2}{2}(H_n - \frac{1}{2})\).
無限和式
無限個非負數的和?
對於\(\sum_{k \in K} a_k\),如果存在常數\(A\),使得\(K\)的任意有限子集\(F\)都滿足\(\sum_{k \in F} a_k \le A\),則稱\(A\)為一個上界;最小的\(A\)(即下确界)稱為\(\sum_{k \in K} a_k\)的和。
如果不在常數\(A\),則和為無限;可以用數分中的\(\epsilon - \delta\)語言寫清楚。
如果和有限且\(K\)為自然數集,則\(\sum_{k \in K} a_k = \lim_{n->\infty} \sum_{0 \le k \le n} a_k\)。
無限和式的定義
定義\(x = x^+ - x^-\),\(x^+ = x [x > 0]\),\(x^- = -x[x<0]\)
\(\sum_{k \in K} a_k = \sum_{k \in K} a_k^+ - \sum_{k \in K} a_k^-\)
如果\(\sum_{k \in K} a_k^+\)和\(\sum_{k \in K} a_k^-\)都有限,則無限和式存在;如果\(\sum_{k \in K} a_k^+\)無限,另一個有限,則無限和式為\(+ \inf\). 反之亦然。如果都無限,則不予定義。
和有限的無限和式之間,滿足分配率、結合律、交換律
一些反例
\(T = 1 + 2 + 4 + 8 + .....\)
\(2T = 2 + 4 + 8 + .... = T - 1\). \(T = -1\).
事實上\(T=+\infty\)
\(T = 1 - 1 + 1 - 1 + 1 .....\)
\((1 - 1) + (1 - 1) + .... = 0\)
\(1 + (-1 + 1) + (-1 +1)+.... = 1\)
事實上由等比數列可得,和為\(\frac{1}{2}\)。一群整數的和竟然是分數.....
\(...+(- \frac{1}{4}) + (- \frac{1}{3}) + (- \frac{1}{2}) + 1 + \frac{1}{2} + \frac{1}{3} + ......\)
可以等於0
可以等於\(1 + H_{2n} - H_{n+1}\),每次右邊選兩個數,左邊選一個數,求極限。和為\(1 + \ln(2)\)。
整值函式
底和頂
\(\lceil x \rceil - \lfloor x \rfloor = [x \text{不是整數}]\)
\(\lfloor \frac{n}{m} \rfloor = \lfloor \frac{cn}{cm} \rfloor\)
底和頂的應用
\(\lfloor \sqrt{\lfloor x \rfloor} \rfloor = \lfloor \sqrt{x} \rfloor\)
證明:設\(m = \lfloor \sqrt{\lfloor x \rfloor} \rfloor\),展開得到\(x\)的範圍
拓展:若\(f(x)\)是個單調遞增的函式,且若\(f(x)\)是整數能推匯出\(x\)是整數,則\(\lfloor f(\lfloor x \rfloor) \rfloor = \lfloor f(x) \rfloor\)
\(\lceil \sqrt{\lfloor x \rfloor} \rceil = \lceil \sqrt{x} \rceil\)???
- 否;當\(m^2 < x < m^2 + 1\)時,即\(x\)不是整數,且\(\sqrt{\lfloor x \rfloor}\)是整數時,為反例
在\(1 \le n \le 1000\)中,有多少整數\(n\)滿足\(\lfloor n^{\frac{1}{3}} \rfloor | n\)?
設\(m = \lfloor n^{\frac{1}{3}} \rfloor\)
\(1 + \sum_{m=1}^{9} \lfloor \frac{(m+1)^3 - m^3}{m} \rfloor = 172\)
用多項式近似,可得 \(W = \frac{3}{2} N^{\frac{2}{3}} + O(N^{\frac{1}{3}})\)
譜
\(Spec(\alpha) = \{ \lfloor \alpha \rfloor , \lfloor 2 \alpha \rfloor, \lfloor 3 \alpha \rfloor, ........ \}\)
\(\sqrt{2}\)和\(2+\sqrt{2}\)的譜,構成所有正整數的劃分。
底和頂的遞迴式
\(K_0 = 1\);\(K_{n+1} = 1 + \min(2 K_{\lfloor \frac{n}{2} \rfloor}, 3 K_{\lfloor \frac{n}{3} \rfloor})\);證明\(K_n \ge n\)
- 歸納法,需要證明\(K_n \ge n + 1\)
約瑟夫問題新解(以 \(m = 3\) 為例):
剛開始有\(n\)個人,每次有一個活下去就把他的標號+n。
1和2變成\(n+1\),\(n+2\);4和5變成\(n+3\),\(n+4\)
\(3k+1,3k+2\)變成\(n+2k+1,n+2k+2\)
用程式碼模擬(詳見課本);還可以換成方法加速
\(D_0^{(q)} = 1\);\(D_n^{(q)} = \lceil \frac{q}{q-1} D_{n-1}^{(q)} \rceil\),\(n > 0\)
\(J_q(n) = qn+1 - D_k^{(q)}\),\(k\)是最大的使得答案不是負數的值
mod:二元運算
\(x \mod{0} = x\)
\(c (x \mod{y}) = (cx) \mod{(cy)}\)
\(n = \lfloor \frac{n}{m} \rfloor + \lfloor \frac{n + 1}{m} \rfloor + ... \lfloor \frac{n + m - 1}{m} \rfloor\)
\(n = \lceil\frac{n}{m} \rceil + \lceil \frac{n - 1}{m} \rceil + ... \lceil\frac{n - m + 1}{m} \rceil\)
\(\lfloor mx \rfloor = \lfloor x \rfloor + \lfloor x + \frac{1}{m} \rfloor + ... \lfloor x + \frac{m - 1}{m} \rfloor\)
底和頂的和式
\(\sum_{0 \le k < n} \lfloor \sqrt{k} \rfloor\)
method1 : \(\sum_{m = 1}^{\sqrt{n}} ((m+1)^2 - m^2) m\)
method2 : \(\sum_{m=1}^{\sqrt{n}} n - m^2\),線性性質
設\(\alpha\)是無理數,則\(\{n\alpha\}\)在\(n->\infty\)時在[0,1)之間是一致分佈的
- 可以直接當做積分?
\(\sum_{0 \le k < m} \lfloor \frac{nk + x}{m} \rfloor\)
原式\(= \sum_{0 \le k < m} \lfloor \frac{x + nk~mod~m}{m} \rfloor + \frac{kn}{m} - \frac{kn~mod~m}{m}\).
第二部分是個等差數列,\(\frac{(m-1)n}{2}\)
令\(d = \gcd(n,m)\),則\(kn~mod~m\)會遍歷\(0,d,2d,...m-d\)。每個數出現\(d\)次。
第三部分也是等差數列,\(- \frac{m-d}{2}\)
第一部分:\(d*(\lfloor \frac{x}{m} \rfloor+ \lfloor \frac{x+d}{m} \rfloor + .... + \lfloor \frac{x+m-d}{m} \rfloor) = d \lfloor \frac{x}{d}\rfloor\)
發現將\(n,m\)意義對調,答案不變。
- 本質上這是在數座標軸在一條直線下方有多少點,\(n,m\)對調相當於轉座標軸。
數論
整除性
- 拓展歐幾里得演算法
素數
- 算術基本定理(唯一分解定理)
素數的例子
素數有無窮多個
\(M = 2 \times 3 \times 5 \times .... \times P_n + 1\),與\(P_1,...,P_n\)全部互質,又多出一個“質數”(事實上不一定是質數)
\(e_n = e_1 e_2 ... e_{n-1} + 1 = e_{n-1}^2 - e_{n-1} + 1\)
- 封閉形式:\(e_n = \lfloor E^{2^n} + \frac{1}{2} \rfloor\),\(E = 1.264\)
梅森數
- \(2^p - 1\),\(p\)是質數。但並不是所有梅森數都是素數。
質數密度
偶數比完全平方數更“稠密”,\(1-n\)有\(\frac{n}{2}\)個偶數;有\(\sqrt{n}\)個完全平方數。
$P_n $ ~ \(n \ln n\);\(\pi(x)\) ~ \(\frac{x}{\ln x}\);故質數個數比偶數少,比完全平方數多。
階乘的因子
階乘以指數方式增長:斯特林公式
\(\epsilon_p(n!) = \sum_{k \ge 1} \lfloor \frac{n}{p^k} \rfloor \le \frac{n}{p-1}\)
- 當\(p=2\)時,\(\epsilon_2(n!) = n - v_2(n)\),\(v_2(n)\)為二進位制上1的個數
素數有無窮個的另一種證明:
\(p^{\epsilon_{p}(n!)} \le p^{n/(p-1)} \le 2^n\)
一個質數只能對\(n!\)產生\(2^n\)的貢獻,如果質數個數有限,取\(n\)足夠大就會產生矛盾
互素(Stern-Brocot樹)
用於構造所有\(m \perp n\)的非負分數
構造方式
第一層只有\(\frac{0}{1}\)和\(\frac{1}{0}\)
第\(k+1\)層的分數構成 為 第\(k\)層的所有分數 加上 第\(k\)層相鄰兩個分數,分子和分母分別相加得到
- \(\frac{m}{n},\frac{m'}{n'} -> \frac{m+m'}{n+n'}\)
性質
每一層的每對相鄰的分數都滿足\(m'n - mn' = 1\)
- 歸納法,第一層是對的;每次\(\frac{m}{n},\frac{m'}{n'}\)會新建\(\frac{m+m'}{n+n'}\),分別驗證。
為什麼\(\frac{n+n'}{m+m'}\)是最簡分數?
- 利用拓展歐幾里得,因為\(m'n - mn' = 1\),說明\(ax+by=1\)成立,所以\(\gcd=1\).
是否會重複出現分數?
- 不存在的,這是一棵嚴格的二叉搜尋樹。因為$ \frac{m}{n} < \frac{m+m'}{n+n'} < \frac{m'}{n}$.
是否有分數遺漏?
不存在的,推導可證明:\(a+b \ge m'+n'+m+n\). 每一步右式都會增加,在\(a+b\)步以內就可以找到解。
該式說明:\(\frac{m'+m'}{m+n}\)是[\(\frac{m}{n}\),\(\frac{m'}{n'}\)]之間分子加分母和最小的分數???這可離不開第一條性質!
應用
分數定位
用\(2 \times 2\)的矩陣存下每個分數的左右祖先,構造矩陣\(L\)和\(R\)。到左兒子則右乘\(L\),右兒子則右乘\(R\).
法一:每次右乘一個\(L,R\),判斷大小。
法二:利用左乘。如果分子大,說明左乘了\(R\),不然左乘了\(L\)。可以用倍增定位。\(O(\log n)\).
無理數定位
用SB樹逼近和二分逼近效果差不多
if a < 1 then output(L) a = a/(1-a) else output(R) a = a - 1
拓展:Farey級數
階為\(N\)的法裡級數為\(F_N\),它由所有分母不超過\(N\)的最簡分陣列成。
\(F_N\)構造:從\(F_{N-1}\)繼承,在\(F_{N-1}\)中相鄰\(\frac{m}{n}\)和\(\frac{m'}{n'}\),滿足\(n+n'=N\)的中間,加入分母為N的數。
同餘關係
\(2^{2n} - 1\)是3的倍數,因為\(2^2 \pmod{3} = 1\)
$ad \equiv bd \pmod{md} $ 等價於 \(a \equiv b \pmod{m}\).
\(ad \equiv bd \pmod{m}\)等價於\(a \equiv b \pmod{\frac{m}{\gcd(m,d)}}\).因為剩下的因子可以用逆元除掉。
\(a \equiv b \pmod{m}\)且\(a \equiv b \pmod{n}\),則\(a \equiv b \pmod{lcm(n,m)}\).因為\(a-b\)既是n的倍數也是m的倍數
獨立剩餘
剩餘系\(Res(x) = (x \mod m_1, \cdots,x \mod m_r)\),\(m_i \perp m_j\).
每個分量上可以獨立地進行運算,相當於高精度
例子:計算大矩陣的行列式,選取若干質數,除法變成逆元;最後CRT合併起來!
CRT
- 相當於要找到(1,0,0),(0,1,0),(0,0,1)這些分量對應的數;用拓展歐幾里得求出逆元。
求\(x^2 \equiv 1 \pmod{m}\)解的個數
將\(m\)分解成若干個\(p^k\),改寫成\((x-1)(x+1) \equiv 0 \pmod{p^k}\).
當\(p \ne 2\)時,只有兩個解1和p-1
當\(p=2\)時,若\(k=1\)解為1;\(k=2\)時解為1,3;\(k > 2\)時,\(x-1\)和\(x+1\)可以都是2的倍數,但是不可能都是4的部分,所以其中一個要是\(2^{k-1}\)的倍數。所以有4個解。
設\(r\)為質因子個數,答案為\(2^{r - [2|m]+[4|m]+[8|m]}\).
進一步的應用
\(0, n, 2n, 3n,....,(m-1)n \pmod{m}\)為\(0,d,2d,...,m-d\)重複d遍;\(d = \gcd(n,m)\)
費馬大定理:\(a^n + b^n = c^n\)在\(n > 2\)時沒有正整數解
費馬小定理:\(n^{p-1} \equiv 1 \pmod{p}\),\(n \perp p\)
- 證明:\(n*2n*.....*(p-1)n \equiv (p-1)!\)
Miller_Rabin:驗證\(2^{32}+1\)是不是質數?
- 若是質數,應用費馬小定理:$3^{2^{32}} \equiv 1 \pmod{2^{32}+1} $.矛盾
威爾遜定理:\(n\)是質數時,\((n-1)! \equiv -1 \pmod{n}\)
- 除了1和\(n-1\),其他數的逆元兩兩匹配,所以\((n-1)! \equiv n-1 \mod{n}\)
\(\varphi\)函式和\(\mu\)函式
尤拉定理:\(n^{\varphi(m)} \equiv 1 \pmod{m}\),\(n \perp m\)
- 拓展尤拉定理,處理\(n\)和\(m\)不互質的情況。
莫比烏斯反演:\(g = f * 1\)等價於\(f = g*\mu\)
- 廣義莫比烏斯反演:\(g(x) = \sum_{d \ge 1} f(x / d)\)等價於\(f(x) = \sum_{d \ge 1} \mu(d) g(x / d)\)
積性的傳遞性
\(g(m) = \sum_{d|m} f(d)\)
左右任何一邊是積性函式,都可以推出剩下一邊是積性函式。
杜教篩:求\(\Phi(x) = \sum_{1 \le k \le x} \phi(k)\)
\(\sum_{d \ge 1} \Phi(\frac{x}{d}) = \frac{x(x+1)}{2}\);考慮所有\(0 \le m < n \le x\)的分數,d為分子和分母的\(\gcd\).
預處理小的\(\Phi(m)\),分塊遞迴求解,時間複雜度\(O(n^{\frac{2}{3}})\).
Polya經典題:求解長度為\(m\),顏色數為\(n\)的不同項鍊個數
- 考慮一種項鍊會被計算多次:\(\frac{1}{m} \sum_{d | m} \phi(d) n^{\frac{m}{d}}\)
二項式係數
基本恆等式
定義(此定義和之前的不一樣)
當整數\(k < 0\),\(\binom{n}{m} = 0\),否則\(\binom{n}{m} = \frac{n^{\underline{m}}}{m!}\)
當不是整數時,可以用廣義階乘,取極限;如\(\binom{\frac{1}{2}}{n}\)
性質
\(\binom{-1}{k} = (-1)^k\)
當\(n < 0\)時,\(\binom{n}{n} = 0\)
當\(n<0\)時,不滿足對稱性\(\binom{n}{k} = \binom{n}{n-k}\)
由加法公式,\(\binom{r}{k} = \binom{r-1}{k-1} + \binom{r-1}{k}\);由此可以拓展出\(r<0\)的情況。
恆等式
吸收恆等式:\(\binom{r}{k} = \frac{r}{k} \binom{r-1}{k-1}\);\(k \binom{r}{k} = r \binom{r-1}{k-1}\)
對角線求和:\(\sum_{k \le n} \binom{r+k}{k} = \binom{r+n+1}{n}\)
上指標求和:\(\sum_{0 \le k \le n} \binom{k}{m} = \binom{n+1}{m+1}\)
二項式定理:\((x+y)^r = \sum_{k} \binom{r}{k} x^k y^{r-k}\)
上指標反轉:\(\binom{r}{k} = (-1)^k \binom{k-r-1}{k}\),當\(r\)是負數時可以用這種方法快速求解!!!
同行交錯和:\(\sum_{k \le m} \binom{r}{k} (-1)^k = \sum_{k \le m} \binom{k-r-1}{l} = \binom{-r}{m} = (-1)^m \binom{r-1}{m}\)
雙選恆等式:\(\binom{r}{m} \binom{m}{k} = \binom{r}{k} \binom{r-k}{m-k}\)
範德蒙卷積:\(\sum_{k} \binom{r}{k} \binom{s}{n-k} = \binom{r+s}{n}\),表5-3有多種形式,可以查表!
基本練習
\(\sum_{k} \binom{m}{k} / \binom{n}{k} = \frac{n+1}{n+1-m}\),雙選恆等式
\(\sum_{k} k \binom{m-k-1}{m-n-1}/ \binom{m}{n} = \frac{n}{m-n+1}\),用吸收恆等式
\(Q_n = \sum_{k \le 2^n} \binom{2^n - k}{k} (-1)^k\),遞推式,找規律,有迴圈節
\(\sum_k k \binom{m-k-1}{m-n-1}\),把\(k\)寫成\(\binom{k}{1}\),用範德蒙卷積
\(\sum_{k} \binom{n}{k} \binom{s}{k} k = s \binom{n+s-1}{n-1}\),用吸收恆等式,再範德蒙卷積
\(\sum_{k} \binom{n+k}{2k} \binom{2k}{k} \frac{(-1)^k}{k+1}\),先用雙選恆等式,把\(2k\)去掉;再用吸收恆等式, 把\(\frac{1}{k+1}\)拿掉;然後上指標翻轉,最後範德蒙卷積
問題七和問題八用和式代替一個組合數,技巧性太強;不如用後面的超幾何
處理的技巧
取一半
\(r^{\underline{k}} (r - \frac{1}{2})^{\underline{k}} = (2r)^{\underline{2k}} / 2^{2k}\)
由此可以推出:\(\binom{- \frac{1}{2}}{n} = (\frac{-1}{4})^n \binom{2n}{n}\)
高階差分
\(\Delta f(x) = f(x+1) - f(x)\);\(\Delta^n f(x) = \sum_{k} \binom{n}{k} (-1)^{n-k} f(x+k)\)
多項式可以用斯特林數改寫成下降冪多項式,稍作修改可以寫成牛頓級數:
\(f(x) = \sum_d c_d \binom{x}{d}\),牛頓級數的求導非常方便;書上還寫著一種\(O(n^2)\)的求牛頓級數係數的方法。
\(\sum_k \binom{n}{k} (-1)^k (a_0 + a_1k + ... + a_n k^n) = (-1)^n n! a_n\)
反演
\(g(n) = \sum_{k} (-1)^k \binom{n}{k} f(k)\)等價於\(f(n) = \sum_{k} (-1)^k \binom{n}{k} g(k)\)
二項式反演:\(g(n) = \sum_{k} \binom{n}{k} f(k)\)等價於\(f(n) = \sum_{k} (-1)^{n-k} \binom{n}{k} g(k)\)
- 本質就是令\(f'(n) = (-1)^n f(n)\)
重排公式:\(D(n) = n! \sum_k \frac{(-1)^k}{k!}\);\(D(n) = \lfloor \frac{n!}{e} + \frac{1}{2} \rfloor + [n == 0]\)
生成函式
\((1+z)^r (1+z)^s = (1+z)^{r+s}\),該式子可以直接證明範德蒙恆等式
\((1-z)^r (1+z)^r = (1-z^2)^r\);\(\sum_k \binom{r}{k} \binom{r}{n-k} (-1)^k = (-1)^{n/2} \binom{r}{n/2}\)
\(\frac{1}{(1-z)^{n+1}} = \sum_{k \ge 0} \binom{n+k}{n} z^k\);\(\frac{z^n}{(1-z)^{n+1}} = \sum_{k \ge 0} \binom{k}{n} z^k\)
乘上\(\frac{1}{1-z}\)相當於做字首和
廣義部分待補
超幾何函式
定義:\(F(a_1...a_m;b_1...b_n;z) = \sum_{k \ge 0} \frac{\prod a_i^{\bar{k}} z^k}{\prod b_i^{\bar{k}} k!}\)
轉化:\(\frac{t_{k+1}}{t_k}\)是一個關於\(k\)的有理函式,分子作為上引數,分母作為下引數
廣義階乘和\(\Gamma\)函式用於解釋退化的情況
查表:\(F(a,b;c;1)\)和\(F(a,b,-n;c,a+b-c-n+1;1)\),SAA恆等式
超幾何變換
超幾何函式通用解法就是查表,本章介紹幾種技巧拓展表庫
- 反射定律;習題25、26
求導,移位:
\(\frac{d}{dz} F(ai;bi;z) = \frac{a_1...a_m}{b_1...b_n} F(a_i+1;b_i+1;z)\)
\((\vartheta + a_1) F(a_1,...a_m;b_1...b_n;z) = a_1 F(a1+1,a_2,...,a_m;b_1...b_n;z)\)
\((\vartheta + b_1 -1) F(a_1,...a_m;b_1...b_n;z) = (b_1 - 1) F(a1,a_2,...,a_m;b_1-1,b_2...b_n;z)\)
\(\vartheta\)為\(z \frac{d}{dz}\)操作
這個技巧可以用於解微分方程
部分超幾何和式
利用差分法,試圖找出函式滿足\(t_k = T_{k+1} - T_{k}\),從而可以求解\(\sum_{0 \le k \le n} t_k\)。
\(Gosper\)演算法
找出\(p(k),r(k),q(k)\),滿足\(\frac{t_{k+1}}{t_k} = \frac{p(k+1)}{p(k)} \frac{q(k)}{r(k+1)}\)
求解\(s(k)\),滿足\(p(k) = q(k) s(k+1) - r(k) s(k)\)
得到\(T(k) = \frac{r(k)s(k)t(k)}{p(k)}\)
機械求和法
機械求和法是個非常繁瑣的演算法,用於求解給定n,對\(k\)從\(0\)到\(\infty\)求和。不能求\(k\)的部分和
思路是定義新的函式,應用\(Gosper\)演算法,得到\(S_n\)的遞推式。
詳見書上的例子。
特殊的數
斯特林數
第一類斯特林數\([^n_k]\),第二類斯特林數\(\{ ^n_k \}\).
\(\{^n_k\} = k \{^{n-1}_k\} + \{^{n-1}_{k-1}\}\)
\([^n_k] = (n-1)[^{n-1}_k] + [^{n-1}_{k-1}]\)
\([^n_k] \ge \{^n_k\}\),等號成立,當且僅當\(k=n-1\)或\(k=n\)
\(\sum_{k=0}^n [^n_k] = n!\)
冪之間轉換(均可用歸納法證明)
\(x^n = \sum_k \{^n_k\} x^{\underline{k}}\)
\(x^{\bar{n}} = \sum_k [^n_k] x^k\)
\(x^{\underline{n}} = (-1)^n (-x)^{\bar{n}}\)
\(x^n = \sum_k \{^n_k\} (-1)^{n-k} x^{\bar{k}}\)
\(x^{\underline{n}} = \sum_k [^n_k] (-1)^{n-k} x^k\)
反轉公式(應用兩次冪轉換公式即可)
\(\sum_k [^n_k] \{^k_m\} (-1)^{n-k} = [m=n]\)
\(\sum_k \{^n_k\} [^k_m] (-1)^{n-k} = [m = n]\)
應用加法原則拓展至負數,有\([^n_k] = \{^{-k}_{-n}\}\)
書上還有一大堆用於字首和、卷積的恆等式,可用於查表。
尤拉數
\(<^n_k>\)表示長度為\(n\)的排列\(\pi\),有\(k\)個位置滿足\(\pi_j < \pi_{j+1}\),即升高位置
\(<^n_k> = <^n_{n-1-k}>\)
\(<^n_k> = (k+1) <^{n-1}_{k}> + (n-k)<^{n-1}_{k-1}>\)
\(x^n = \sum_k <^n_k> \binom{x+k}{n}\),天吶,這個式子的組合意義是啥!!!
書上還有一些奇奇怪怪的恆等式哦!還有一個通項式
二階尤拉數:\(2n\)個數,\(k\)個上升,且每對\(x\)之間其他數都要大於\(x\)
\(<<^n_k>> = (k+1) <<^{n-1}_{k}>> + (2n-1-k)<<^{n-1}_{k-1}>>\)
\(\sum_k <<^n_k>> = \frac{(2n)^{\underline{n}}}{2^n}\)
斯特林多項式(由書上的恆等式推出)
\(\sigma_n(x) = [^x_{x-n}] / (x(x-1) \cdots (x-n))\),其中\(\sigma_n(x)\)的次數為\(n-1\)
斯特林多項式可以由二階尤拉數給出,於是可以處理係數為斯特林數的的生成函式的卷積。
調和數
\(H_n = \sum_{k=1}^n \frac{1}{k}\)
- 發散,且\(\ln_n < H_n < \ln n+1\)
例題:
\([^{n+1}_2] = n[^n_2]+[^n_1] = n[^n_2]+(n-1)!\)
兩邊除以\(n!\),求遞迴式:\([^{n+1}_2] = n! H_n\)
\(r\)次調和數:\(H^{(r)}_n = \sum_{k=1}^n \frac{1}{k^r}\)
\(\ln(\frac{k}{k-1}) = - ln(\frac{k-1}{k}) = \frac{1}{k} + \frac{1}{2k^2} + \frac{1}{3k^3}+ \cdots\)
對\(k\)從2-n求和:\(\ln n -\ln 1 = (H_n - 1) + \frac{1}{2} (H^{(2)}_n - 1) - .....\)
移項後,可以估計\(H_n - \ln n\)的值,記為尤拉常數\(\gamma\)
調和求和法
\(\sum_{0 \le k < n} \binom{k}{m} H_k\)
利用分部求和法,\(u(k) = H_k\),\(\Delta v(k) = \binom{k+1}{m+1} - \binom{k}{m+1} = \binom{k}{m}\)
利用吸入恆等式
\(S_n = \sum_{1 \le k \le n} \frac{H_k}{k}\)
\(S_n = \sum_{1 \le j \le k \le n} \frac{1}{j*k} = \frac{1}{2} ( (\sum_{1 \le k \le n} \frac{1}{k})^2 + \sum_{1 \le k \le } \frac{1}{k^2} )\)
第二章的技巧
\(U_n = \sum_{k \ge 1} \binom{n}{k} \frac{(-1)^{k-1}}{k} (n-k)^n\)
- 將\((n-k)^n\)二項式展開,交換順序,轉化為高階差分,利用恆等式;得\(U_n = n^n (H_n - 1)\)
伯努利數
求解冪和數
\(S_m(n) = \sum_{k=0}^{n-1} k^m = \frac{1}{m+1} \sum_{k=0}^m \binom{m+1}{k} B_k n^{m+1-k}\)
\(\sum_{j=0}^m \binom{m+1}{j} B_j = [m = 0]\)
可以用擾動法+歸納法證明
生成函式的定義:\(\frac{z}{e^z-1} = \sum_{n \ge 0} B_n \frac{z^n}{n!}\)
用伯努利數為係數表示三角函式
- \(\tan z = \sum_{n \ge 0} (-1)^{n-1} 4^n (4^n - 1) B_{2n} \frac{z^{2n-1}}{(2n)!}\)
伯努利數和斯特林數的關係
\(S_m(n) = \sum_{j \ge 0} \{^m_j\} \frac{1}{j+1} \sum_{k \ge 0} (-1)^{j+1-k} [^{j+1}_k] n^k\)
由此建立恆等式
斐波那契數
恆等式
\(F_{n+k} = F_k F_{n+1} + F_{k-1} F_n\);考慮走樓梯
\(F_{2n} = F_n F_{n+1} F_n F_{n-1}\);從而\(F_{2n}\)是\(F_n\)的倍數,歸納可得\(F_{kn}\) 是\(F_n\)的倍數
\(\gcd(F_m,F_n) = F_{\gcd(m,n)}\);由上式推出
\(\sum_{k=0}^n F_k = F_{n+2} - 1\);歸納即可
\(\sum_{k=1}^n F_k^2 = \sum_k F_k (F_{k+1} - F_{k-1}) = F_{n+1} F_n\);裂項相消
\(F_n = \frac{1}{\sqrt{5}}(\phi^n - \hat{\phi^n})\);其中\(\phi = \frac{\sqrt{5} + 1}{2}\),為黃金分割
\(F_{n+1} = \sum_{k=0}^n \binom{n-k}{k}\)
斐波那契數系
\(j >> k\) 等價於\(j \ge k +2\)
每個整數都有唯一的表示:\(n = F_{k_1} + F_{k_2} + ..... + F_{k_r}\)
\(n = (b_mb_{m-1}\cdots b_2)_F\),因為\(b_1=b_2=1\),從2開始表示唯一
能表示的最大值為\(F_{m+2} - 2\)
斐波那契奇數是指表示中,最後一位是1的數;偶數類似。
連項式
定義
\(K() = 1\)
\(K(x_1) = x_1\)
$K_n(x_1,\cdots,x_n) = K_{n-1}(x_1,\cdots, x_{n-1}) x_n + K_{n-2}(x_1,\cdots,x_{n-2}) $
性質
\(K_n(1,1,...,1) = F_{n+1}\)
摩爾斯碼:相當於可以放一些長度為2的多米諾骨牌;如果\(x_i\)不在,必然有相鄰的\(x_{i+1}\)或者\(x_{i-1}\)與之對應
\(K_n(z,z, \cdots, z) = \sum_{k=0}^{n} \binom{n-k}{k} z^{n-2k}\)
\(K_n(x_n,...,x_1) = K_n(x_1,...,x_n)\)
\(K (x_1,...x_m,x_{m+1},...x_{m+n})= K(x_1,...x_m) K(x_{m+1},...,x_{m+n}) + K(x_1,...,x_{m-1}) K(x_{m+2},...x_{m+n})\)
連項式與連分數
\(a_0 + \frac{1}{a_1 + \frac{1}{a_2 + \frac{1}{a3}}} = \frac{K(a_0,a_1,a_2,..,a_3)}{K(a_1,a_2,a_3,)}\);歸納之
\(\frac{K(a_0,a_1,a_2,a_3+1/a_4)}{K(a_1,a_2,a_3+1/a_4)} = \frac{K(a_0,a_1,a_2,a_3,a_4)}{K(a_1,a_2,a_3,a_4)}\);將連分數最後一位變化
連項式與Stern-Brocot樹
假設一個分數為\(R^{a_0},L^{a_1},R^{a_2},L^{a_3} ... R^{a_{n-2}}L^{a_{n-1}}\)
則\(F(R^{a_0}L^{a_1}R^{a_2}L^{a_3} ... R^{a_{n-2}}L^{a_{n-1}}) = \frac{K(a_0,a_1,...a_{n-1},1)}{K(a+1....a_{n-1},1)}\)
由此可以在連分數和SB樹之間快速轉換
生成函式
多米諾理論與換零錢
用多米諾骨牌鋪3*n矩形
\(U_n\)表示\(3 \times n\)的方案,\(V_n\)表示\(3 \times n\)缺一角的方案
\(U_n = 2 V_{n-1} + U_{n-2} + [n == 0]\)
\(V_n = U_{n-1} + V_{n-2}\)
寫成生成函式
\(U(x) = 2x V(x) + x^2 U(x) + 1\)
\(V(x) = x U(x) + x^2 V(x)\)
求解
\(V(x) = \frac{x}{1-x^2} U(x)\)
$U(x) = 1 + \frac{2x^2}{1-x^2} U(x) + x^2 U(x) $
若將\(U(x)\)的封閉形式展開,可以得到\(U_n\)的封閉形式;最後通過組合式的恆等式還可以化簡
換零錢
和OI經典題“食物”類似
有無限個價值為\(m\)的硬幣,其生成函式為\(1+x^m+x^{2m}+.....=\frac{1}{1-x^m}\)
劃分數
- \(\frac{1}{(1-z)(1-z^2)(1-z^3).....}\)的\(z^n\)前係數為\(n\)的劃分數,意義為用無窮個1-n湊成\(n\)的方案數
基本策略
運算
收斂性不作要求,因為變數\(z\)僅僅表示一個特徵,我們只在乎\(z^n\)前的係數
左移時,要把低位“減掉”,再除以\(z^m\)
\(G(cz) = \sum_n g_n c^n z^n\);\(G(z^m) = \sum_n g_n z^{nm}\)
求導;求導+右移(每一位乘上\(n\));積分;左移+積分(每一位除以n)
卷積
字首和:乘上\(\frac{1}{1-z}\)
常見生成函式
<1,-1,1,-1,1,-1,1,-1,......>;\(\frac{1}{1+z}\)
<1,0,1,0,1,0,1,0,.......>; \(\frac{1}{1-z^2}\)
<1,2,4,8,16,....>;\(\frac{1}{1-2z}\)
<1,4,6,4,1,0,0,...>; \((1+z)^4\)
<1,c,\(\binom{c+1}{2}\),\(\binom{c+2}{3}\),.....>;\(\frac{1}{(1-z)^c}\)
<0,1,1/2,1/3,1/4,.....>;\(\ln \frac{1}{1-z}\);積分
<0,1,-1/2,1/3,-1/4,....>; \(\ln(1+z)\);積分
<1,1,1/2,1/6,1/24,.....>;\(e^z\)
提取
用\(\frac{G(z) + G(-z)}{2}\)提取偶數項
用\(\frac{G(z) - G(-z)}{2}\)提取奇數項
解遞迴式
再探斐波那契數
\(g_n = g_{n-1} + g_{n-2}+[n=1]\);寫遞迴式時要注意寫出邊界項
\(G(z) = z G(z) + z^2 G(z) + z\) ;可推出\(G(z) = \frac{z}{1-z-z^2}\)
求解部分分式:\(R(z) = \frac{P(z)}{Q(z)}\)
\(\frac{a}{(1-pz)^{m+1}} = \sum_{n \ge 0} \binom{m+n}{m} a p^n z^n\)
目標將\(R(z)\)轉化成:\(\sum_i \frac{a_i}{(1-p_i z)^{m_i + 1}}\);就可以得到\(g_n\)的封閉形式
假設\(Q(z) = q_0 + q_1 z + .... + q_m z^m\),則令\(Q^R(z) = q_0 z^m + q_1 z^{m-1} + .... q_m\)
求解\(Q^R\)的根,即\(Q^R(z) = q_0 (z-p_1)...(z-p_m)\),則\(Q(z) = q_0 (1-p_1 z)...(1-p_mz)\)
既然求出分母的根,然後將其拆成\(\frac{..}{1-p_1z}+....\frac{..}{1-p_mz}\)
當根互不相同時,可以用高斯消元?或者用書上的定理。
事實上,求解部分分式的過程就是解特徵方程。
帶幾分隨機的遞迴式
\(g_n = g_{n-1} + 2g_{n-2}+(-1)^n[n \ge 0] + [n=1]\)
解得\(G(z)=\frac{1+z+z^2}{(1-2z)(1+z)^2}\);用書上另一個公式來對有重根的分母進行部分分式。
互相遞迴的數列(和解方程類似)
換零錢封閉形式(用於OI題,類似於Code Chef的CHANGE)
發散級數(超幾何解微分方程)
完全返回的遞迴式
求解扇形的生成樹數量
分析最後一個頂點的連邊,可得
- \(f_n = f_{n-1} + \sum_{k < n} f_k + [n > 0]\)
字首和用乘上\(\frac{1}{1-z}\)表示:
- \(F(z) = z F(z) + F(z) \frac{z}{1-z} + \frac{z}{1-z}\)
求部分分式,得\(f_n = F_{2n}\),即偶數位斐波那契數列
特殊的生成函式
表7-3給出各種係數為特殊數的生成函式,包括斯特林數、尤拉數、伯努利數
\(\frac{1}{(1-z)^{m+1}} \ln \frac{1}{1-z} = \sum_{n \ge 0} (H_{m+n}- H_m) \binom{m+n}{n} z^n\)
\(\frac{1}{(1-z)^{x+1} } = \sum_n \binom{x+n}{n} z^n\)
左邊:\((1-z)^{-x-1}=e^{(x+1)\ln(1/(1-z))}\),微分後,為\(\frac{1}{(1-z)^{m+1}} \ln \frac{1}{1-z}\)
右邊:\(\binom{x+n}{n}\)微分後,為\((\frac{1}{x+1} + \frac{1}{x+2} .... \frac{1}{x+n})\),等於\(H_{x+n} - H_x\)
對複雜的乘積求微分,通常將原式保留,並提取出係數,比直接寫成和式方便。
特殊情況:\(\frac{1}{1-z} \ln \frac{1}{1-z} = \sum_n H_n z^n\)
卷積
斐波那契卷積
- \(\sum_{k=0}^n F_k F_{n-k}\)等價於\(F^2(x)[z^n]\)
調和卷積
\(T_{m,n} = \sum_{0 \le k < n} \binom{k}{m} \frac{1}{n-k}\)
因\(\sum_{n \ge 0} \binom{n}{m} z^n = \frac{z^m}{(1-z)^{m+1}}\),且\(\sum_{n > 0} \frac{z^n}{n} = \ln \frac{1}{1-z}\)
\(T_{m,n} = [z^n]\frac{z^m}{(1-z)^{m+1}} \ln \frac{1}{1-z} = (H_n - H_m) \binom{n}{n-m}\)
卷積的卷積
之前的扇形生成樹個數,可以認為有一些鏈,需要從根向他們連邊。
\(f_n = \sum_{m > 0} \sum_{k_1+...+k_m=n} k_1k_2...k_m\)
即\(F(z) = G(z) + G(z)^2 + G(z)^3 + .... = \frac{G(z)}{1-G(z)}\)
卷積的遞迴式
卡特蘭數的括號解釋:\(C_n = \sum_k C_k C_{n-1-k} + [n = 0]\)
\(C(z) = z C^2(z) + 1\),解得\(C(z) = \frac{1 (+/-) \sqrt{1-4z}}{2z}\);加或減
當取+號時,\(C(0)\)是無窮,與事實不符;所以為減
用廣義二項式展開\(\sqrt{1-4z}\),可以得到卡特蘭數公式:\(C_n = \binom{2n}{n} \frac{1}{n+1}\)