生成函式學習筆記

2022-10-10 21:42:22 字數 4810 閱讀 2117

post time: 2021-12-18 15:07:40

什麼是生成函式?

我們年級有許多漂亮的mm。一班有 \(7\) 個左右吧,二班大概有 \(4\) 個,三班最多,\(16\) 個,四班最可憐,乙個漂亮的mm都沒有,五班據說有 \(1\) 個。如果用乙個函式f(班級)=漂亮mm的個數,那麼我們可以把上述資訊表示成:\(f(1)=7,f(2)=4,f(3)=16,f(4)=0,f(5)=1\),等等。

生成函式(也有叫做「母函式」的,但是我覺得母函式不太好聽)是說,構造這麼乙個多項式函式 \(g(x)\),使得 \(x\) 的 \(n\) 次方係數為 \(f(n)\)。於是,上面的 \(f\) 函式的生成函式 \(g(x)=7x+4x^2 + 16x^3+x^5+...\)。這就是傳說中的生成函式了。關鍵是,這個有什麼用呢?一會兒要慢慢說。我敢打賭這絕對會是我寫過的最長的一篇文章。

生成函式最絕妙的是,某些生成函式可以化簡為乙個很簡單的函式。也就是說,不一定每個生成函式都是用一長串多項式來表示的。比如,這個函式 \(f(n)=1\)(\(n\) 當然是屬於自然數的),它的生成函式就應該是\(g(x)=1+x+x^2+x^3+x^4+…\)(每一項都是一,即使 \(n=0\) 時也有 \(x^0\) 係數為 \(1\),所以有常數項)。再仔細一看,這就是乙個有無窮多項的等比數列求和嘛。如果 \(-1,那麼 \(g(x)\) 就等於 \(\frac\) 了。在研究生成函式時,我們都假設級數收斂,因為生成函式的 \(x\) 沒有實際意義,我們可以任意取值。於是,我們就說,\(f(n)=1\) 的生成函式是 \(g(x)=\frac\)。

我們舉乙個例子說明,一些具有實際意義的組合問題也可以用像這樣簡單的乙個函式全部表示出來。考慮這個問題:從二班選 \(n\) 個mm出來有多少種選法。學過簡單的排列與組合的同學都知道,答案就是 \(\binom\)。也就是說。從 \(n=0\) 開始,問題的答案分別是 \(1,4,6,4,1,0,0,0,…\)(從 \(4\) 個mm中選出 \(4\) 個以上的人來方案數當然為 \(0\) 嘍)。那麼它的生成函式 \(g(x)\) 就應該是 \(g(x)=1+4x+6x^2+4x^3+x^4\)。這不就是……二項式展開嗎?於是,\(g(x)=(1+x)^4\)。

你或許應該知道,\((1+x)^k=\binomx^0+\binomx^1+…+\binomx^k\);但你或許不知道,即使 \(k\) 為負數和小數的時候,也有類似的結論:\((1+x)^k=\binomx^0+\binomx^1+…+\binomx^k+\binomx^+\binomx^+…\)(一直加到無窮;式子看著很彆扭,自己寫到草稿紙上吧,畢竟這裡輸入數學式子很麻煩)。其中,廣義的組合數 \(\binom\) 就等於 \(\frac\),比如 \(\binom=\frac=0\),再比如 \(\binom=\frac=1.68\)。後面這個就叫做牛頓二項式定理。當 \(k\) 為整數時,所有 \(i>k\) 時的 \(\binom\) 中分子都要「越過」\(0\) 這一項,因此後面 \(\binom,\binom\) 之類的都為 \(0\) 了,與我們的經典二項式定理結論相同;不同的是,牛頓二項式定理中的指數 \(k\) 可以是任意實數。

我們再舉乙個例子說明一些更複雜的生成函式。 \(n=x_1+x_2+x_3+…+x_k\) 有多少個非負整數解?這道題是學排列與組合的經典例題了。把每組解的每個數都加 \(1\),就變成 \(n+k=x_1+x_2+x_3+…+x_k\) 的正整數解的個數了。教材上或許會出現這麼乙個難聽的名字叫「隔板法」:把 \(n+k\) 個東西排成一排,在 \(n+k-1\) 個空格中插入 \(k-1\) 個「隔板」。答案我們總是知道的,就是 \(\binom\)。它就等於 \(\binom\)。它關於 \(n\) 的生成函式是 \(g(x)=\frac\)。這個生成函式是怎麼來的呢?其實,它就是 \((1-x)\) 的 \(-k\) 次方。把 \((1-x)^\) 按照剛才的牛頓二項式展開,我們就得到了 \(x^n\) 的係數恰好是 \(\binom\),因為 \(\binom\cdot (-x)^n=[(-1)^n\cdot \binom]\cdot[(-1)^n\cdot x^n]=\binomx^n\)。這裡看暈了不要緊,後文有另一種方法可以推導出一模一樣的公式。事實上,我們有乙個純組合數學的更簡單的解釋方法。因為我們剛才的幾何級數 \(1+x+x^2+x^3+x^4+…=\frac\),那麼 \((1+x+x^2+x^3+x^4+…)^k\)就等於 \(\frac\)。仔細想想 \(k\) 個 \((1+x+x^2+x^3+x^4+…)\) 相乘是什麼意思。\((1+x+x^2+x^3+x^4+…)^k\) 的展開式中,\(n\) 次項的係數就是我們的答案,因為它的這個係數是由原式完全展開後 \(k\) 個指數加起來恰好等於 \(n\) 的項合併起來得到的。

現在我們引用《組合數學》上暴經典的乙個例題。很多書上都會有這類題。

我們要從蘋果、香蕉、橘子和梨中拿一些水果出來,要求蘋果只能拿偶數個,香蕉的個數要是 \(5\) 的倍數,橘子最多拿 \(4\) 個,梨要麼不拿,要麼只能拿乙個。問按這樣的要求拿 \(n\) 個水果的方案數。

結合剛才的 \(k\) 個 \((1+x+x^2+x^3+x^4+…)\) 相乘,我們也可以算出這個問題的生成函式。

\[\begin

g(x)&=(1+x^2+x^4+…)(1+x^5+x^+\ldots)(1+x+x^2+x^3+x^4)(1+x)\\

&=\frac\cdot \frac\cdot \frac\cdot (1+x)

\end

\](前兩個分別是公比為 \(2\) 和 \(5\) 的幾何級數,第三個嘛,\((1+x+x^2+x^3+x^4)\cdot(1-x)\)不就是 \(1-x^5\) 了嗎)

\[\begin

\text&=\frac\\

&=(1-x)^\\

&=\binom+\binomx+\binomx^2+\binomx^3…\\

&=1+2x+3x^2+4x^3+5x^4+…\\

\end

\]於是,拿 \(n\) 個水果有 \(n+1\) 種方法。我們利用生成函式,完全使用代數手段得到了答案!

如果你對 \(\frac\) 的展開還不熟悉,我們這裡再介紹乙個更加簡單和精妙的手段來解釋 \(\frac=1+2x+3x^2+4x^3+5x^4+…\)。

\(\frac=1+x+x^2+x^3+x^4+…\) 是前面說過的。我們對這個式子等號兩邊同時求導數。於是,\(\frac=1+2x+3x^2+4x^3+5x^4+…\)。一步就得到了我們所需要的東西!不斷地再求導數,我們同樣可以得到剛才用複雜的牛頓二項式定理得到的那個結論(自己試試吧)。生成函式還有很多其它的處理手段,比如等式兩邊同時乘以、除以常數(相當於等式右邊每一項乘以、除以常數),等式兩邊同時乘以、除以乙個 \(x\)(相當於等式右邊的係數「移一位」),以及求微分積分等。神奇的生成函式啊。

我們用兩種方法得到了這樣乙個公式:\(\frac=1+\binomx^1+\binomx^2+\binomx^3+…+\binomx^k+…\)。這個公式非常有用,是把乙個生成函式還原為數列的**。而且還是核**。

接下來我們要演示如何使用生成函式求出 fibonacci 數列的通項公式。

fibonacci 數列是這樣乙個遞推數列:\(f(n)=f(n-1)+f(n-2)\)。現在我們需要求出它的生成函式 \(g(x)\)。\(g(x)\) 應該是乙個這樣的函式:

\[g(x)=x+x^2+2x^3+3x^4+5x^5+8x^6+13x^7+…

\]等式兩邊同時乘以 \(x\),我們得到:

\[x\cdot g(x)=x^2+x^3+2x^4+3x^5+5x^6+8x^7+…

\]就像我們前面說過的一樣,這相當於等式右邊的所有係數向右移動了一位。

現在我們把前面的式子和後面的式子相加,我們得到:

\[g(x)+x\cdot g(x)=x+2x^2+3x^3+5x^4+8x^5+…

\]把這最後乙個式子和第乙個式子好好對比一下。如果第乙個式子的係數往左邊移動一位,然後把多餘的 \(1\) 去掉,就變成了最後乙個式子了。由於遞推函式的性質,我們神奇地得到了:

\[g(x)+x\cdot g(x)=\frac-1

\]也就是說,\(g(x)\cdot x^2+g(x)\cdot x-g(x)=-x\)。把左邊的 \(g(x)\) 提出來,我們有:\(g(x)(x^2+x-1)=-x\)。於是,我們得 ??

後面沒了,我也不會了。

update 2021.12.27

繼續推導斐波那契數列的通項公式:

由上面的式子可以解出

\[g(x)=\frac

\]我們已經知道了

\[\frac=\sum_^x^i

\]可以得到

\[\frac=\sum_^k^ix^i

\]考慮把那個 \(g(x)\) 的式子因式分解,得到

\[g(x)=\fracx}\cdot\fracx}\cdot x

\]左邊這個東西拆成加和的形式,即

\[\fracx}\cdot\fracx}=\fracx}+\fracx}

\]解得 \(a=-\frac,b=\frac\)

乘了個 \(x\) 相當於整體向右移,所以最後的式子 \(x^n\) 項係數為

\[\frac((\frac)^-(\frac)^)\]即

\[f(n)=\frac((\frac)^-(\frac)^)

\]接下來考慮指數生成函式

\[e^x=\sum_^\frac

\]這個可以將 \(f(x)=e^x\) 在 \(x_0=0\) 處泰勒展開直接得到。

然後可以由這個出發得到很多常用變換,比如

\[\begin

e^=1-\frac+\frac-\frac+...\\

\frac}=1+\frac+\frac+...\\

\frac}=\frac+\frac+\frac+...\\

e^=1+\frac+\frac+\frac+...

\end

\]

生成函式學習筆記

生成函式即為母函式 設 是任一數列,則形式冪級數 a t sum a it i 叫做數列 的常生成函式 引理 1 以 m k k 1,2,n 表示不定方程 x 1 x 2 x 3 x n r 中的未知數 x k 的可取值所成之集 以 a r 表示不定方程 x 1 x 2 x 3 x n r 滿足條件...

生成函式學習筆記

a是一類組合物件構成的集合 其中大小為i的物品數量為a i a x sum a n x n 組合元素可以理解為一種由基本元素構成的集合 這裡所說的seq a 是乙個以ogf為自變數的函式 表示的是有a中元素有序排列,大小相加構成的所有元素 所組成的集合 結合上文的兩個例子理解 f x 存在逆元的充要...

生成函式學習筆記

p.s.本文是菜雞筆者整理知識點以及做書上例題搞的 可能偏雞肋 easy,謹慎食用 例題 組合數學 習題二 1.求不包含連續 0 的 01 序列個數。設 f n 表示長度為 n 的滿足題意的序列個數。則 f n f f 解析 考慮往合法序列末尾能加的數,只有兩種 1,10.所以分別對應 f f 如果...