生成函數(母函數)總結
生成函數(母函數)總結
普通型生成函數(\(OGF\))
定義
對於一個序列\(a_0,a_1,a_2,a_3...\),定義\(G(x)=a_0+a_1x^1+a_2x^2+a_3x^3+...\)為序列的母函數。
然後。。。沒了???沒了。
應用
一些常見的生成函數(\(n\in N^+\)):
\(\frac {1}{1-x}=1+x+x^2+x^3+...\)
\(\frac {1}{(1-x)^2}=\frac {1}{1-x}*\frac {1}{1-x}=1+2x+3x^2+...\)
\(\frac {1}{(1-x)^n}=1+nx+\frac {n(n+1)}{2!}x^2+\frac {n(n+1)(n+2)}{3!}x^3+...\)
一個定理
據說是母函數最重要的定理:
設從\(n\)元集合\(S=\lbrace a_1,a_2...a_n\rbrace\)中取出\(k\)個元素的組合是\(b_k\),
若限定元素\(a_i\)出現次數集合為\(M_i(1\leq i\leq n)\),
則該組合數序列的母函數為
\[ \prod_{i=1}^n(\sum_{m\in M_i}x^m) \]
可以看出,它解決的主要是組合問題
\(Eg1\)
斐波那契數列通項。
\(Sol:\)
設斐波那契數列的母函數為
\[ G(x)=0+1\centerdot x^1+1\centerdot x^2+2\centerdot x^3+3\centerdot x^4+... \]
乘一個\(x\)
\[
G^\prime(x)=0+1\centerdot x^2+1\centerdot x^3+2\centerdot x^4+3\centerdot x^5+...
\]
兩個東西減一下:
\[
G(x)-G^\prime(x)=0+0+1\centerdot x^1+0\centerdot x^2+1\centerdot x^3+2\centerdot x^5+...\=x+x^2(0+1\centerdot x^1+1\centerdot x^2+...)\\]
發現上面的東西:
\[ \Leftrightarrow G(x)-G^\prime(x)=x+x^2G(x)\\Leftrightarrow G(x)-xG(x)=x+x^2G(x)\\Leftrightarrow (x^2+x-1)G(x)=-x\\Rightarrow G(x)=\frac {x}{1-x-x^2} \]
\(\because\)
\[1-x-x^2=-(x+\frac{1+\sqrt{5}}{2})(x+\frac{1-\sqrt{5}}{2})=(1-\frac{1-\sqrt{5}}{2}x)(1-\frac{1+\sqrt{5}}{2}x)\]
\(\therefore\)
\[G(x)=\frac 1{\sqrt5}\left(\frac x{1-\frac {1+\sqrt5}{2}x}-\frac x{1-\frac {1-\sqrt5}{2}x}\right)\]
再利用展開式\(\frac {1}{1-x}=1+x+x^2+x^3+...\)
可得\(G(x)=b_1x+b_2x^2+...\)
解得
\[
b_n=\frac{\sqrt 5}{5}\left((\frac{1+\sqrt5}{2})^n-(\frac{1-\sqrt5}{2})^n\right)
\]
又\(a_n=b_n\),所以我們就求出來了。
是不是感覺很麻煩呢?了解一下這種方法
無縫植入
\(Eg2\)
求\(n\)位十進制數中出現偶數個\(5\)的數的個數。
\(Sol:\)
設\(f_i\)表示\(i\)位十進制數中出現偶數個\(5\)的數的個數,
\(g_i\)表示\(i\)位十進制數中出現奇數個\(5\)的數的個數。
則有
\[\begin{cases}
f_i=9f_{i-1}+g_{i-1}\g_i=9g_{i-1}+f_{i-1}
\end{cases}
\tag 0
\]
設序列\(\lbrace f_i\rbrace\),\(\lbrace g_i\rbrace\)的生成函數分別為:
\(F(x)=f_1+f_2x+...+f_nx^n+...\tag1\)
\(G(x)=g_1+g_2x+...+g_nx^n+...\tag2\)
然後:
\((1)\)兩邊同乘\(-9x\):
\(-9xF(x)=-9f_1x-9f_2x^2-9f_3x^3+... \tag3\)
\((2)\)兩邊同乘\(-x\):
\(-xG(x)=-g_1x-g_2x^2-g_3x^3...\tag4\)
\((1)+(3)+(4):\)
\[
F(x)-9xF(x)-xG(x)=\(f_1+f_2x+f_3x^3+...)+(-9f_1x-9f_2x^2-9f_3x^3-...)+(-g_1x-g_2x^2-g_3x^3-...)\=(f_1+g_1x+g_2x^2+g_3x^3+...)+(-g_1x-g_2x^2-g_3x^3-...)\=f_1=8\\]
\(\Leftrightarrow(1-9x)F(x)-xG(x)=8\tag5\)
同理,設\((6)=(2)*(-9x)\),\((7)=(1)*(-x)\)
則\((6)+(7)+(2)\)得:
\[
(1-9x)G(x)-xF(x)=g_1=1 \tag8
\]
由\((5)\)、\((8)\):
\[
F(x)=\frac {(-71x+8)}{(1-8x)(1-10x)}\G(x)=\frac {(1-x)}{(1-8x)(1-10x)}
\]
又
\[
A(x)=\frac{\frac 7{1-8x}+\frac 9{1-10x}}2\=\frac {\sum_{n=0}^{\infty}7*(8x)^n+\sum_{n=0}^{\infty}9*(10x)^n}2\\]
綜上
\[
\therefore a_n=\frac {7*8^{n-1}}2+\frac {9*10^{n-1}}2
\]
指數型母函數(\(EGF\))
定義
指數型母函數由一下定理來描述:
從多重集合\(M=\lbrace\infty*a_1,\infty*a_2,\infty*a_3...\infty*a_n\rbrace\)中選出\(k\)個元素的排列中,
若限定\(a_i\)出現次數為\(M_i(1\leq i\leq n)\),則該組合數序列的母函數為:
\[ \prod_{i=1}^n(\sum_{m\in M_i}\frac {x^m}{m!}) \]
我們發現,普通型母函數標誌函數為\(1,x,x^2...\),而指數型母函數標誌函數為\(1,\frac {x}{1!},\frac {x^2}{2!}...\)
它的意義是什麽呢?
相當於我們在計算排列總數時一個元素\(a_i\)出現了多次,而實際上我們只能算進去一次,所以除去\(i!\)
這個玩意兒的使用過程中,會碰到奇怪的\(e^x\)及泰勒展開式:
\(e^x=\sum_{n=0}^{\infty}\frac {x^n}{n!}=1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+...+\frac{x^n}{n!}+...\)
\(e^{-x}=\sum_{n=0}^{\infty}(-1)^n\frac {x^n}{n!}=1-x+\frac{x^2}{2!}-\frac{x^3}{3!}+...+(-1)^n\frac{x^n}{n!}+...\)
\(\frac {e^x+e^{-x}}2=\sum_{n=0}^{\infty}\frac {x^{2n}}{2n!}=1+\frac {x^2}{2!}+\frac{x^4}{4!}+\frac{x^6}{6!}+...+\frac{x^{2n}}{2n!}+...\)
\(\frac {e^x-e^{-x}}2=\sum_{n=0}^{\infty}\frac {x^{2n+1}}{(2n+1)!}=1+\frac {x^3}{3!}+\frac{x^5}{5!}+\frac{x^7}{7!}+...+\frac{x^{2n+1}}{(2n+1)!}+...\)
指數型母函數應化簡成如下形式:
\[
G_e(x)=b_0+b_1\centerdot(\frac x{1!})+b_2\centerdot(\frac {x^2}{2!})+b_3\centerdot(\frac {x^3}{3!})+...
\]
這裏只有\(b_i\)是我們需要的。
為什麽?看栗子。
應用
\(Eg1\)
有三個數字\(1\),兩個數字\(6\),一個數字\(8\),問能組成多少個四位數。
\(Sol:\)
實際上是多重集排列數問題,顯然多重集\(S=\lbrace3x_1,2x_2,1x_3\rbrace\)
構造指數型生成函數:
\[
G_e(x)=(1+x+\frac {x^2}{2!}+\frac {x^3}{3!})(1+x+\frac {x^2}{2!})(1+x)\=1+3x+8\frac{x^2}{2!}+19\frac{x^3}{3!}+38\frac{x^4}{4!}+60\frac{x^5}{5!}+60\frac{x^6}{6!}
\]
\(\therefore Ans=38\)
\(Eg2\)
求有\(1,2,3,4\)構成,且\(1\)出現\(2-3\)次,\(2\)最多出現\(1\)次,\(4\)出現偶數次的五位數。
\(Sol:\)
四個數分別對應的母函數:
- \(I:\) \(\frac {x^2}{2!}+\frac {x^3}{3!}\)
- \(II:\) \(1+\frac {x}{1!}\)
- \(III:\) \(1+\frac {x}{1!}+\frac {x^2}{2!}+\frac {x^3}{3!}+...\)
- \(IIII:\) \(1+\frac {x^2}{2!}+\frac {x^4}{4!}+\frac {x^6}{6!}+...\)
所以有:
\[
G(x)=(\frac {x^2}{2!}+\frac {x^3}{3!})(1+\frac {x}{1!})(1+\frac {x}{1!}+\frac {x^2}{2!}+\frac {x^3}{3!}+...)(1+\frac {x^2}{2!}+\frac {x^4}{4!}+\frac {x^6}{6!}+...)\= (\frac16*x^2*(3+4x+x^2))*e^x*\frac {e^x+e^{-x}}{2}\= \frac1{12}*x^2*(3+4x+x^2)*(e^{2x}+1)
\]
最後展開\(e^{2x}\),再配一下系數得出:
\(Ans=\frac {1}{12}*5!*(3*\frac {2^3}{3!}+4*\frac {2^2}{2!}+1*\frac {2^1}{1!})=140\)
\(Eg3\)
求由\(1,3,5,7,9\)構成的\(n\)位數的個數,要求\(3,7\)出現次數為偶數。
\(Sol:\)
設滿足條件的\(i\)位數為\(a_i\),
則序列\({a_i}\)的母函數\(G_e(x)\)
\[
=(1+\frac {x^2}{2!}+\frac{x^4}{4!}+\frac{x^6}{6!}+...)^2(1+x+\frac{x^2}{2!}+\frac{x^3}{3!}+...)^3\=\frac 14(e^x+e^{-x})^2*e^{3x}\=\frac 14(e^{5x}+2e^{3x}+e^x)\=\frac 14\sum_{n=0}^{\infty}(5^n+2*3^n+1)*\frac {x^n}{n!}
\]
\(\therefore a_n=\frac 14(5^n+2*3^n+1)\)
生成函數(母函數)總結