本博客內容大部分來源於對《具體數學》第五章的整理,略去了其中有關超幾何變換的部分。
需要掌握一些 \(\sum\) 的處理技巧,有限微積分和泰勒展開(泰勒展開只在證明用一點點,不會也沒事)。
upd. 評論區有人指出上指標求和的組合意義錯了,已訂正。
為了有一定實力的同學可以略過基本恆等式,為了您的方便,我把出現的十個恆等式列出供您參考:
基本恆等式
\(\dbinom{n}{k}\) 被稱為二項式系數,其組合意義為從 \(n\) 個數的集合中選取大小為 \(k\) 的子集的方案數。顯然通過定義,我們知道定義域為 \(n,k\in\mathbb{N}\),並能得到其定義式:
\(n^{\underline{k}}\) 意思是隨便選取 \(k\) 個元素,排除掉 \(k!\) 種重復的情況就是上式。除此之外,二項式系數之所以被稱為二項式系數,是因為有二項式定理:
可以從組合意義給予證明,\(a^kb^{n-k}\) 產生這一項只能通過從 \(n\) 個 \((a+b)\) 中選取 \(k\) 個 \(a\) 和 \(n-k\) 個 \(b\) 達到,而方案數是 \(\dbinom{n}{k}\)。但我們不僅對正整數定義了指數,同時也對負整數,實數等定義了指數。當我們想展開這類的二項式時,現在的定義域就不夠用了,我們需要把 \(n,k\) 的取值范圍拓展一下。事實上,拓展到 \(n\in\mathbb{R},k\in\mathbb{Z}\) 是有益的,即:
其中為了表示上指標可以取任意實數,我們用 \(r\) 而不是 \(n\) 表示上指標(事實上也可以取復數,但本文不討論,之后如無特殊說明實數成立的結論對復數都成立)。這里為了避免歧義,再給出底數為實數,指數為非負整數的下降冪定義:
顯然,這種情況下,對於某些取值二項式定理就失去了組合意義,但收獲了很大的數學意義。實踐證明,后者的收獲要遠大於前者的損失。
介紹完二項式系數的基本定義后,我們先來對一個 單獨的二項式系數 \(\dbinom{r}{k}\) 做些觀察。首先通過定義,我們能發現 \(\dbinom{r}{k}\) 是關於 \(r\) 的 \(k\) 次多項式,這能在估計復雜度,推導一些數學公式時用到。然后我們來看 \(\dbinom{n}{n}(n\in\mathbb{Z})\) 的值,看起來它總等於 \(1\),但事實上,當 \(n<0\) 時,根據定義我們有 \(\dbinom{n}{n}=0\)。在觀察更復雜的情況前,我們先來看看 \(r,k\) 較小的情況:
這就是大名鼎鼎的楊輝三角了,記住這些數列的特征可以當我們在實戰中遇到類似的數列時往二項式系數方面考慮。除此之外,我們還可以觀察到三個顯然的恆等式:
證明根據定義顯然得證。除此之外,因為 \(n\in\mathbb{R}\),我們可以再觀察一下當 \(n<0\) 時表格的值:
如果您從左上向右下看的話,是能夠看到類似正數情況的楊輝三角的。具體為什么是這樣,可以等到之后我們研究完更多二項式系數恆等式時再回來解釋。
接下來讓我們更靠近看一看 二項式定理 ,這個二項式系數名稱的來源恆等式。上文在沒有拓展上下指標定義域時,給出了它的比較狹義的式子 \((2)\):
但注意到,當 \(ab=0\) 或 \(a+b=0\) 時,會出現 \(f(x)=x^0\) 在 \(f(0)\) 處取什么值的問題。這里我們並不討論具體細節,而是發現如果令 \(f(0)=1\),則一些恆等式就能成立且是正確的。因為這些恆等式太重要了,所以我們就強制規定 \(f(x)=x^0\) 在 \(f(0)\) 的取值為 \(1\)。舉個例子,比如令 \(a=1,b=-1\) 我們就可以得到:
這意味着楊輝三角除了第一行外,其余所有行符號交錯相加均能得到 \(0\)。除此之外,在 OI 中,我們還能用到以下的一些特殊情況:
- \(a=b=1\),我們有:
\[2^n=\sum_{k=0}^n\dbinom{n}{k} \]可以把一堆二項式系數變為一項冪,也可以把一個冪變成一堆二項式系數。也可以用來估算時間復雜度。
- \(a=1,b=2\),我們有:
\[3^n=\sum_{k=0}^n2^k\dbinom{n}{k} \]估計枚舉子集的復雜度。
除此之外,在觀察到形如一個 \(\sum\) 帶上一個二項式系數再帶上一個冪的形式,也可以往套二項式定理方面想,在推導到二項式無法繼續進行時,也可以考慮二項式定理爆拆。
剛剛說了,給出的形式是比較狹義的,因為它只允許指數是自然數。而既然我們已經把上指標拓展到全體實數了,這里也理應有一個更廣義的形式:
這里有一些需要注意的地方。首先這個和式是對所有整數 \(k\) 求和,但如果我們限制了 \(r\in\mathbb{N}\),那就只有滿足 \(0\le k\le r\) 的 \(k\) 是非 \(0\) 的,是有限和式。而如果不限制 \(r\) 的取值,和式就是無限的了,則我們就要有 \(|\frac{a}{b}|<1\) 來保證和式收斂。至於為什么是 \(|\frac{a}{b}|<1\) 和廣義二項式定理的證明,讓我們考慮 \(b=1,a\in\mathbb{R}\) 的情況,即:
考慮記左邊為 \(f(a)=(1+a)^r\),並把 \(f(a)\) 在 \(0\) 處泰勒展開掉:
注意到 \(f(a)\) 的導數比較好做,事實上,\(f^{(k)}(a)=r^{\underline{k}}(1+a)^{r-k}\),因為每次求導都會給指數減去 \(1\) 並把指數乘下來。這樣我們令 \(a=0\) 就得到了上式:
而根據達朗貝爾審斂法,對於一個冪級數 \(f(x)=\sum_{n\ge 0}a_nx^n\) 我們記
則收斂半徑 \(R\) 為:
而套用到我們的式子上,有:
注意到 \(r<k\),所以可以去掉絕對值符號:
這樣我們得到,\((1+a)^r\) 的收斂半徑 \(R=1\)。所以當 \(|a|<1\) 時原式收斂。
現在我們暫時告別二項式定理,來看看其他的關於二項式系數的恆等式。首先是著名的 對稱性 :
可以從組合意義來看,即選 \(k\) 個出來等於選 \(n-k\) 個不出來。但要特別注意的是 \(n\) 的取值范圍是 \(\mathbb{N}\) 而不是 \(\mathbb{Z}\)。(不可能是 \(\mathbb{R}\),因為在后面一項中它跑到了下指標)對於 \(n<0\) 的情況,大家可以自己舉一些反例,這里不再贅述。從數學意義來看,當 \(k<0\) 或 \(k>n\) 時兩邊均為 \(0\)。(如果 \(n<0\) 這個條件顯然不成立)而當 \(k\in[0,n]\) 時,根據定義式我們有:
這個對稱恆等式可以用來小范圍改變下指標,湊一些形式。
然后是將一些東西移進或者移出二項式系數的 吸收恆等式 :
很好記,形式挺整齊。令 \(k\ne 0\) 是為了避免 \(0\) 作除數。當 \(k<0\) 時兩邊均為 \(0\),否則可以從定義推出:
此外,如果把兩邊同時乘 \(k\),還能得到不限制 \(k\ne 0\) 的吸收恆等式:
除此之外,這個恆等式還有另一種形式,它可以保證下指標不變:
推導的話可以利用對稱性:
這樣就證完了……嗎?並不,在應用 \((5)\) 時,我們需要的前提是 \(r\in\mathbb{N}_+\),但卻沒有在推導的條件中寫明這一點,這是漏洞嗎?不,我們需要對此作一番陳述。注意到兩邊均為關於 \(r\) 的 \(k+1\) 次多項式,而一個 \(d\) 次多項式至多有 \(d\) 個零點,(對於 \(d\) 次多項式函數 \(f(x)\),其可以表示為 \(f(x)=k\prod_{i=1}^d(x+a_i),k\ne 0\) 的形式,當 \(a_i\) 兩兩不同時有最多的零點)所以兩個 \(d\) 次多項式相減也至多有 \(d\) 個零點, 或有無窮多個零點,此時相減出來的多項式為常數多項式 \(f(x)=0\),即兩個多項式完全相等。而剛剛,我們證明了上述式子在 \(r\in\mathbb{N}_+\) 時成立,所以已經有了無窮多個零點,這樣等式左右兩邊就一定完全相等了。這種推理方法被稱為 多項式推理 法,其對於將兩邊均為多項式的等式從整數推向實數時非常好用。但注意像 \((5)\) 那樣兩邊就不是多項式的等式就不能用了。
我們再來練習一下多項式推理法,就以這個最重要的恆等式之一 加法公式 為例吧:
從 OI 來講,它最大的用處之一就是幫助我們 \(\mathcal{O}(nk)\) 遞推組合數。而我們現在要從數學意義更進一步觀察這個式子。就從證明開始吧,我們考慮先假設 \(r\in\mathbb{N}_+\) 利用組合意義證明,再通過多項式推理法對 \(r\in\mathbb{R}\) 證明。對於 \(r\in\mathbb{N}_+\),我們可以把 \(\dbinom{r}{k}\) 理解為從 \(r\) 個球中選出 \(k\) 個的方案數,而假設這 \(r\) 個球中恰包含一個紅球其余均為白球。則全選白色的方案數為 \(\dbinom{r-1}{k}\),選到紅色的方案數為 \(\dbinom{r-1}{k-1}\),兩項加起來就是隨便選的方案數 \(\dbinom{r}{k}\)。而由於 \((9)\) 中兩邊相減為關於 \(r\) 的 \(k\) 次多項式,所以通過多項式推理法,我們得到其對於 \(r\in\mathbb{R}\) 均成立。
除此之外,我們還可以應用剛剛看到的恆等式 \((7),(8)\) 證明,兩式相加有:
左邊就是 \(r\dbinom{r}{k}\),這樣等式兩邊同時除以 \(r\) 就得到了 \((9)\)。當然這種推理對 \(r=0\) 時不成立,簡單代入驗證一下就好。順帶一提,我們還能用定義來證明 \((9)\),大家可以自己試試。這些證明雖然截然不同,但本質是相同的,因為不同恆等式之間可以相互推導。
加法公式非常有用,可以以它為起點我們可以歸納出許多其他的恆等式。考慮把反復展開具有最小下指標的項:
好了,現在 \(\dbinom{1}{-1}\) 沒了,推導到此停止。通過歸納,我們可以證明以下的一般公式,稱為 平行求和法:
注意這里並不限制 \(k\) 的下限,因為所有 \(k<0\) 對應的項均為 \(0\)。除此之外,我們通過反復展開具有最大指標的項,(留給讀者自行展開)可以歸納證明:
這一恆等式被稱為 上指標求和。這一恆等式中需要限制 \(k\) 的下限 \(0\),因為 \(k<0\) 的項並不為 \(0\)。這一恆等式有組合意義,表示從編號為 \(0\sim n\) 的球中選出 \(m+1\) 個,則選出的球編號最大為 \(k\) 時方案數有 \(\dbinom{k}{m}\) 種。
對於上述兩個恆等式,我們不僅能通過歸納法證明,還可以相互證明,具體來講有:
這樣我們就通過 \((11)\) 證明出了 \((10)\)。而通過 \((10)\) 證明 \((11)\) 思路是類似的,都是通過整理和式來滿足形式,留作練習。這里需要特別強調的一點是為什么在第一步非得限制一下 \(k\) 的下限,這是因為如果我們要在第二步應用 \((5)\) 就得保證 \(m+k\ge 0\)。
剛剛我們給出了上指標求和的公式,聯想有限微積分,這又是一個比較整齊的和式,有沒有可能通過有限微積分來找到封閉形式呢?那我們要考慮找到 \(\dbinom{k}{m}\) 的差分,即:
這樣,應用有限微積分的技術,我們能得到:
我們看了很多二項式的恆等式了,是時候回過頭研究一下當上指標是負整數時二項式系數的取值了。回憶上文所畫的表格,我們可以發現負數和正數對應的表格都有楊輝三角的形式,只不過方向不一樣。所以上指標為正數時和負數時一定有些轉化關系,事實上,我們有:
證明非常簡單。當 \(k\ge 0\) 時,我們有 上指標反轉 的公式:
兩邊同時乘 \(k!\) 即得 \((13)\)。\(k<0\) 時兩邊均為 \(0\)。上指標反轉非常重要,它可以推導出許多其他的恆等式且不需要附加額外條件。
比如根據:
我們有:
這能讓我們在上下指標位置之間移動量。
除此之外,我們還能找到在楊輝三角的每一行中的一部分交錯符號相加的結果:
現在我們大多處理的是關於二項式系數的和式,如果出現乘積呢?這里有一個 三項式版恆等式:
當 \(k=1\) 時,\((14)\) 跟 \((7)\) 其實是相同的。證明我們依然可以采用先對 \(r\ge m\ge k\ge 0\) 的特殊情況證明,然后用多項式推理法推到 \(\mathbb{R}\)。根據定義展開,我們有:
當 \(k,m<0\) 時,\((14)\) 的兩邊均為 \(0\)。所以這個等式對於 \(k,m\in\mathbb{Z},r\in\mathbb{N}\) 成立了,而因為兩邊均為關於 \(r\) 的 \(m\) 次多項式,所以通過多項式推理法,它對 \(r\in\mathbb{R}\) 也成立。通常來講,這個等式兩邊總會有一邊更容易計算。比如如果我們是關於 \(m\) 求和,可能就更想要右邊的式子而不是左邊的,因為右式僅有一個 \(m\)。
接下來來點更恐怖的,也是本文介紹的最后一個恆等式,是關於求和和乘積結合的范德蒙德卷積:
說它是卷積是因為它的下指標有卷積的形式,可以利用這點方便記憶。證明依然是老套路,我們假設 \(r,s\in\mathbb{N}\),則該式具有組合意義。\(\dbinom{r+s}{n}\) 表示從 \(r\) 個紅球 \(s\) 個白球拿出 \(n\) 個球的方案數。而 \(\sum_{k}\dbinom{r}{k}\dbinom{s}{n-k}\) 表示拿出 \(k\) 個紅球,\(n-k\) 個白球的方案數,對 \(k\) 求和就得到所有的方案數。那因為兩邊均為關於 \(r,s\) 的 \(n\) 次多項式,多項式推理法告訴我們 \(r,s\in\mathbb{R}\) 的情況也成立。
范德蒙德卷積的用處在於可以通過前面的恆等式稍作變化,簡化一些(或者讓它們暫時變復雜)一些和式加乘積的形式。舉個例子,證明:
看起來有范德蒙德卷積的形式,但還不太像,因為多了一個字母 \(m\)。不過沒關系,我們用 \(k\) 代替 \(k+m\),\(n\) 代替 \(n-m\),立馬可以得到:
還是不太像,下指標之和不是定值。不過沒有關系,我們對 \(\dbinom{l}{k}\) 運用 \((5)\) 對稱性:
搞定,這就是范德蒙德卷積的形式了。不過從上面的推導我們可以看出,有時給范德蒙德卷積多一個變量是有益的,這樣不用因為要給推導的恆等式少一個變量頭疼了。具體來講,我們設 \(m\in\mathbb{Z}\),則用 \(k+m\) 代替 \(k\) 可以得到:
用 \(n\) 代替 \(n-m\) 可以得到更好看的式子:
這樣我們在推導上面那個恆等式時,直接對 \(\dbinom{l}{m+k}\) 用對稱性,套 \((16)\) 就可以證明了。
注意 \((16)\) 和 \((17)\) 的相似性和區別性。相似的是,它們均由兩個二項式系數相乘帶上一個和式得到,且兩個二項式系數下指標中均有求和指標。不同的是,它們下指標中求和指標的符號不同。這提示我們遇到類似范德蒙德卷積的式子時根據求和指標的位置和符號選擇合適的恆等式,這里給出由范德蒙德卷積導出的 \(4\) 個恆等式,注意觀察求和指標的位置和符號:
如果記不住也可以寄希望於人類智慧,用的時候通過對稱性,反轉上指標之類的由范德蒙德卷積推導。
這就是《具體數學》上給出的最重要的十個二項式系數恆等式的介紹了,接下來我們來看點練習。
練習和技巧
我們先來看一些利用前面恆等式的練習題,然后會有三個技巧。
第一道練習
化簡:
這看起來非常恐怖,首先我們就可以注意到,分母里不含任何求和指標,所以可以把它直接移出和式,現在我們要化簡的和式為:
但看起來還是很棘手。不過觀察到 \(k\) 只在上指標中出現了,如果沒有多出來的 \(k\),我們可以改變一下求和指標的意義后用上指標求和 \((11)\)。而面對這個多出來的 \(k\),我們可以考慮用吸收恆等式那一套把 \(k\) 給吸收進去。但很遺憾,看完所有的吸收恆等式后,會發現沒有一個能用的。但是,如果我們用 \(m-k\) 代替 \(k\),就能用恆等式 \((7)\) 得到:
這樣 \(k\) 就只在二項式系數中出現了。在原式中,我們可以把 \(k\) 改寫為 \(m-(m-k)\) 從而避免煩人的指標變換:
接下來就簡單了,化簡兩個和式里面的內容就好。我們先看看起來比較簡單的 \(\sum_{k=0}^n\dbinom{m-k}{m-n}\),只需讓 \(k\) 代替 \(m-k\),有:
另一個很類似,只需用 \(m\) 代替 \(m+1\) 就好,所以原式又等於:
因為 \(\binom{m+1}{m-n+1}=\frac{(m+1)!}{(m-n+1)!n!}=\frac{m+1}{m-n+1}\frac{m!}{n!(m-n)!}=\binom{m}{m-n}\),所以有:
帶回原式有:
第二道練習
定義:
求 \(Q_{10^6}\) 的值。
看起來非常棘手,想開始寫代碼求解的同學先坐下,我們數學推導完就可以 \(\mathcal{O}(1)\) 求解了。好吧,看起來這題沒什么思路,您可以試一下上述所有的恆等式,在這里面都不會化簡太多。當我們沒思路的時候,可以考慮觀察一下小數據,事實上,通過手玩我們有:
看起來非常有規律,但也僅僅停留在非常有規律,我們還是什么都不知道。事實上,我們想找到一個遞歸式,但這就需要把 \(Q_n\) 和比較近的項關聯,但 \(Q_n,Q_{n-1}\) 中的二項式系數上指標相差是指數級別的,我們根本不可能用像加法公式這樣的恆等式計算。一個 Key Observation 是,\(n\) 出現的情況均為 \(2^n\),所以可以考慮換元。令 \(m=2^n\) 有:
我們有 \(Q_n=R_{2^n}\),所以當我們對 \(R\) 找到封閉形式時,\(Q\) 也能找到。而 \(R\) 中的二項式系數更加友好了,我們可以嘗試使用加法公式找到遞歸式:
這里的推導有幾個需要注意的地方。首先倒數第二步我們用了 \(\dbinom{-1}{m}=(-1)^m\) 的結論,事實上,它可以由上指標反轉 \((13)\) 這樣推出:
注意到我們這里能說 \(\dbinom{m}{m}=1\) 是因為 \(m\ge 0\)。然后是這個推導的思路,我們通過加法公式將 \(R_m\) 變成了好幾項,並嘗試湊出 \(R\) 的格式,這類似於處理和式時的擾動法。這樣,只要 \(m\ge 3\),我們就有:
這樣,只要 \(m\ge 6\),就有 \(R_m=R_{m-6}\)。所以 \(R\) 是以 \(6\) 為循環節循環的。可以根據上述遞推式快速求出 \(m=0\sim 5\) 時 \(R_m\) 的值,從而得出總的封閉形式:
最后,我們從 \(R\) 的封閉形式嘗試找到 \(Q\) 的封閉形式。也就是找到 \(2^n\bmod6\) 的規律。事實上,它是這樣的序列:\(\left<1,2,4,2,4,2,4\cdot\cdot\cdot\right>\)。所以 \(Q\) 的封閉形式為:
回到最初的問題,顯然我們有 \(Q_{10^6}=-1\)。
第三道練習題
化簡:
還記得剛剛證明過的恆等式 \((16)\) 嗎?注意到這個式子下指標里都有求和指標 \(k\) 且符號相同,可以嘗試往那個方面套。顯然我們的最大阻礙還是游離的 \(k\),依然考慮吸收恆等式 \((7)\):
這樣就可以用恆等式 \((16)\) 並直接得出答案了:
當然,這道題的想法都是比較直接的,為什么我要把它拿出來說呢?注意到其實我們第一步選擇吸收恆等式的時候有兩種選擇,可以把 \(k\dbinom{s}{k}\) 當做一個整體,可以把 \(k\dbinom{n}{k}\) 當做一個整體,但我們卻選擇了前者。是等價的嗎?不,我們只能選擇前者。因為如果選擇后者,我們會得到:
而注意到 \(s\) 是沒有取值限制的,\(n-1\) 是可能取負數的。但 \((16)\) 要求上指標至少一個是非負數,所以就無法套用了。這個式子提醒我們在套用恆等式時注意取值范圍。
一些技巧
《具體數學》上還有 \(3\) 道練習,大家如果覺得剛剛三題不夠的話可以再去練一練。我們接下來要進入處理技巧了。
首先是形如 \(\dbinom{n-\frac{1}{2}}{k},n,k\in\mathbb{Z}\) 的式子,它可以被轉化為兩個二項式系數相乘的形式,從而推導出一類新的恆等式。首先,我們有 加倍公式:
證明比較顯然,將左邊的式子展開就好:
現在我們在加倍公式的兩邊同時除以 \((k!)^2\),則有:
其中可能引起迷惑的是 \(\dfrac{(2r)^{\underline{2k}}}{(k!)^2}=\dbinom{2r}{2k}\dbinom{2k}{k}\) 這一步。事實上,它不過是在分子分母同時乘上 \((2k)^{\underline{k}}\) 得到的結果。言歸正傳,如果我們令 \(k=r=n,n\in\mathbb{N}\),則有:
突然發現好像卡特蘭數,有沒有人出道題 而如果我們對左邊反轉上指標,有:
除此之外,如果我們根據范德蒙德卷積 \((15)\),則有:
代入 \((22)\) 有:
代回,有:
即:
通過上面對加倍公式的相關闡釋,我們得到的技巧是,面對形如 \(\dbinom{2k}{k}\) 的二項式系數時,可以考慮轉化為 \(\dbinom{n-\frac{1}{2}}{k}\) 的形式,其中 \(n\) 是某個適當的整數(如 \(0,1,k\) 等),這樣再根據上面的恆等式或其他恆等式化簡就會簡單得多。
技巧二是是利用高階差分,也就是研究有限微積分中定義的算子 \(\Delta\) 和二項式系數之間的關系。我們定義函數 \(f\) 在 \(x\) 點的差分 \(\Delta f\) 為:
既然要研究高階差分,我們就先來研究研究小數據。再次利用差分,我們可以得到二階差分:
好像有點楊輝三角的影子?我們再嘗試再多用幾次差分:
現在我們完全看到楊輝三角的樣子了,我們可以猜測結論:
通過歸納,我們可以很方便的證明。但我們還有更簡單的方法。我們定義平移算子 \(\text{E}\) 為:
定義恆等算子 \(1\) 為:
則顯然有:\(\Delta=\mathrm{E}-1\),則有:
由於 \(\mathrm{E}^k f(x)=f(x+k)\),所以上式等價於 \((23)\)。
我們來考慮負的下降冪,情況十分有趣,我們設 \(f(x)=(x-1)^{-1}=\frac{1}{x}\),則根據有限微積分的結論:
有:
如果代入 \((23)\) 中,我們有:
上面所有的等式如果變換不理解的話,均可以通過展開上升冪或者下降冪的方法證明。這樣我們得到了一個關於二項式系數帶分母交錯求和的恆等式。
除此之外,我們還能研究正的下降冪,顯然 \(x^{\underline{d}}(d>0)\) 是關於 \(x\) 的 \(d\) 次不等式。則如果設 \(f(x)=x^{\underline{d}}\),\(\Delta^df(x)\) 就為一個常數,而當 \(n>d\) 時,\(\Delta^nf(x)=0\)。事實上,上面的描述對所有 \(d\) 次多項式均適用。這個結論在推導時可以幫助簡化公式。
然后我們還能通過下降冪和通常冪的關系來找到一些關系(事實上,見到二項式系數和普通冪摻和到一起時,就要考慮轉下降冪了,因為二項式系數和下降冪很搭,詳見:P6620 [省選聯考 2020 A 卷] 組合數問題),我們設
是一個 \(d\) 次多項式,則根據:
所以如果我們設 \(b_k=\sum_{j}\begin{Bmatrix}k\\j\end{Bmatrix}\),則 \(f(x)\) 還可以被表示為:
更進一步,如果我們設 \(c_k=k!b_k\),則 \(f(x)\) 又等於:
從而,我們能把任意多項式表示為二項式系數的倍數之和,這種展開被稱為 牛頓級數。根據加法公式 \((5)\),我們有:
則容易得到:
如果我們令 \(x=0\),則除了 \(k=n\) 的那一項外,其余均為 \(0\),即:
所以我們就有多項式 \(f(x)\) 牛頓級數的另一種形式:
如果代入 \((23)\),我們還能得到另一種推導形式:
從而,我們可以證明:
它成立是因為多項式 \(a_0+a_1k+\cdot\cdot\cdot+a_nk^n\) 能被牛頓級數 \(c_0\dbinom{k}{0}+c_1\dbinom{k}{1}+\cdot\cdot\cdot+c_n\dbinom{k}{n}\) 表示,其中 \(c_n=n!b_n=n!a_n\)。
說了這么多,高階差分到底有啥用呢,它可以用來化簡一些無從下手的式子,比如這個:
看起來很無從下手,但我們發現一個非常關鍵的地方,這里有 \(\sum_k\dbinom{n}{k}(-1)^k\) 的形式,而如果我們設 \(f(k)=\dbinom{r-sk}{n}\),則會有:
這個可以把二項式系數通過下降冪的形式展開,然后觀察怎么得到 \(k^n\) 項來找到 \(n\) 次項的系數。如果我們把它換成牛頓級數的形式,因為 \(c_n=n!b_n=n!a_n\),所以有 \((-1)^ns_n\binom{k}{n}\)。然后不管是根據第一種形式套 \((26)\) 還是第二種形式套 \((25)\),結果都是一樣的,均為:
《具體數學》上之后對於高階差分還有跟泰勒級數比較的討論,但本文不再涉及。我們直接進入下一個技巧,二項式反演(本文這一部分會把重點放在 OI 相關)。那我們就先從人盡皆知的式子和證明開始吧。首先我們有基本式子:
這個公式可以完成從“至多”到“恰好”的轉換( \(f_n\) 表示“至多”,\(g_n\) 表示“恰好”。)
這個公式可以完成從“至少”到“恰好”的轉換( \(f_n\) 表示“至少”, \(g_n\) 表示“恰好”。 )
給出代數證明:(或者可以直接套牛頓級數的公式)
另一種公式證明類似。
來看一個實際問題,設一個排列 \(\mathcal{P}=\left<1,2,\cdot\cdot\cdot,n\right>\),將 \(\mathcal{P}\) 任意重排。設 \(f_{n,k}\) 表示長為 \(n\) 的排列重排后恰有 \(k\) 個元素滿足 \(\mathcal{P}_i=i\) 的方案數。我們來研究一下這個 \(f_{n,k}\)。首先根據 OI 的做題經驗,我們很容易想到把恰好給干掉,考慮設 \(g_{n,k}\) 表示至少有 \(k\) 個元素滿足 \(\mathcal{P}_i=i\) 的方案數。顯然我們有 \(g_{n,k}=\dbinom{n}{k}(n-k)!\) 即選 \(k\) 個元素滿足該條件,剩下的隨便。則根據二項式反演,我們有:
利用三項式版恆等式,可以簡化為:
這樣,就可以做到 \(\mathcal{O}(n)\) 計算了。其中后面那一坨 \(\sum_{i=k}^n\dbinom{n-k}{i-k}(n-i)!(-1)^{i-k}\) 其實就是 \(n-k\) 個元素的錯排數。因為這個式子還有一種理解方式是,我欽定 \(k\) 個滿足 \(\mathcal{P}_i=i\),其余均不滿足,那方案數自然就是 \(n-k\) 的錯排。
再來看道例題吧:
給出長度為 \(n\) 的兩個集合 \(A=\{a_i\}\) 和 \(B=\{b_i\}\) ,將它們兩兩配對,求在所有可能中,滿足存在 \(p\) 組 \((a_i,b_i)\) 使得 \(b_i<a_i\) ,存在 \(q\) 組\((a_i,b_i)\) 使得 \(b_i>a_i\) 且 \(p-q=k\) 的情況個數,對 \(10^9+9\)取模( \(1\le n\le 2000,0\le k\le n\) )。
對於這種直接求不好求的題目,我們的方法還是像剛剛的例子一樣,先欽定一個東西,再二項式反演搞一下。這題我們可以令 \(g_i\) 表示欽定 \(i\) 對滿足 \(a_i > b_i\) 的情況,\(f_i\) 表示恰好存在 \(i\) 對滿足 \(a_i >b_i\) 的情況。可以看出 \(g_i\) 表示“至少”有 \(i\) 個,\(f_i\) 表示“恰好”有 \(i\) 個,它們之間可以用二項式反演建立橋梁,而最終答案應該為 \(f_{\frac{n+k}{2}}\)。
接下來的問題就轉移到求 \(g_i\) 上了。觀察到 \(n\) 的范圍較小,可以考慮二維dp。我們設 \(dp_{i,j}\) 表示已經看到了 \(A\) 的前 \(i\) 位,已經欽定了 \(j\) 個,且 \(A\) 的 \([1,i]\) 位都已經與 \(B\) 中不同的數配對。為了方便轉移,我們先把 \(A,B\) 排序,則狀態轉移方程易得: \(dp_{i,j}=dp_{i-1,j}+dp_{i-1,j-1}\times(cnt-j+1)\),其中 \(cnt\) 表示 \(B\) 中比 \(a_i\) 小的數有 \(cnt\) 個,因為數組有序,所以可以通過一個指針維護當前比第一個大於等於 \(a_i\) 的,指針一定單調增長且最多 增長 \(n\) 次,這樣可以做到均攤 \(O(1)\) 求出 \(cnt\)。 這個轉移方程方程的意思為如果此次不為 \(a_i\) 欽定一個 \(b_i\),則從 \(dp_{i-1,j}\) 直接轉移;如果欽定,則從 \(dp_{i-1,j-1}\) 轉移,方案數為總共可選的 \(cnt\) 減去已經選過的 \(j-1\) 個值。
求出 \(dp\) 后,\(g_i\) 就可求了,即 \(g_i=dp_{n,i}\times (n-i)!\),因為欽定了 \(i\) 個,剩余的 \((n-i)\) 個就可以隨便選取了。接下來根據二項式反演的套路,把“至少”轉化為“恰好”。\(g_k=\sum_{i=k}^n \dbinom{i}{k}f_i \Leftrightarrow f_k=\sum_{i=k}^n\dbinom{i}{k}g_i(-1)^{i-k}\)
利用箭頭右邊的等式計算即可,組合數可以直接遞推,復雜度 \(\mathcal{O}(n^2)\),足以通過本題。
最后一道例題:
小 A 和小 B 在玩一個游戲:有一顆包含 \(n=2m\) 個點的有根樹,根為 \(1\) ,初始時二人各有 \(m\) 個點。每回合二人需要選出一個自己擁有且之前未被選過的點,若對手的點在自己點的子樹內則自己獲勝,若自己的點在對方的點的子樹內則自己失敗;其他情況視為平局。游戲共 \(m\) 回合。 現在詢問在二人隨機選點的情況下,對於 \(k=0,1,2,\cdot\cdot\cdot,m\) ,計算出非平局回合為 \(k\) 的情況數。兩種情況不同當且僅當存在一個小 A 擁有的點 \(x\) 。小 B 在 \(x\) 被小 A 選擇的那個回合所選的點不同,情況數對 \(998244353\) 取模( \(n\le 5000\) )。
考慮轉化,設 \(g_i\) 表示欽定選了 \(i\) 對有祖先關系的方案數, \(f_i\) 表示恰好存在 \(i\) 對有祖先關系的答案。可以發現 \(g_i\) 為“至少”,\(f_i\) 為恰好,可以通過二項式反演來建立橋梁,最終答案即為 \(f_0,f_1,f_2,\cdot\cdot\cdot,f_m\)。
問題落在了求 \(g_i\) 上。觀察到 \(n\) 的范圍不大,考慮二維樹上dp。設 \(dp_{i,j}\) 表示在以 \(i\) 為根的子樹中,欽定了 \(j\) 對有祖先關系的點對的方案數。易得狀態轉移方程: \(dp_{i,j+k}=dp_{i,j}+\sum_{s\in son_i}dp_{s,k}\)(不配對) \(dp_{i,j+k+1}=[a_i=0](dp_{i,j}+\sum_{s\in son_i}dp_{s,k}[a_s=1])\)(\(0\) 與 \(1\) 配對)
\(dp_{i,j+k+1}=[a_i=1](dp_{i,j}+\sum_{s\in son_i}dp_{s,k}[a_s=0])\) (\(1\) 與 \(0\) 配對)
可以通過恰當的安排循環條件將復雜度從 \(\mathcal{O}(n^3)\) 降至 \(\mathcal{O}(n^2)\)。
最后總結和閑話
那本文到此所有的知識點就都講解完畢了~,寫了 \(2.5\rm w\) 字,總時長三天,還是很希望能讓大家(當然還有我自己)學到新東西的。本文主要介紹了二項式恆等式及其簡單練習,和與二項式相關的三個技巧。其中二項式反演的技巧跟書上差別蠻大,大家有興趣可以去《具體數學》上看看他是怎么講解的。
總之,二項式系數的東西不可能一篇文章全部寫完,我已經盡量挑最基本的說了。而且這玩意沒有題單之類的,有的就是平常在推式子時積累的經驗,所以大家可以找來《具體數學》的練習題做,或者去做點難的計數題,慢慢就熟能生巧了,祝您早日成為數數大師!