生成函数(母函数)总结
生成函数(母函数)总结
普通型生成函数(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)\),
则该组合数序列的母函数为
可以看出,它解决的主要是组合问题
\(Eg1\)
斐波那契数列通项。
\(Sol:\)
设斐波那契数列的母函数为
乘一个\(x\)
两个东西减一下:
发现上面的东西:
\(\because\)
\(\therefore\)
再利用展开式\(\frac {1}{1-x}=1+x+x^2+x^3+...\)
可得\(G(x)=b_1x+b_2x^2+...\)
解得
又\(a_n=b_n\),所以我们就求出来了。
是不是感觉很麻烦呢?了解一下这种方法
无缝植入
\(Eg2\)
求\(n\)位十进制数中出现偶数个\(5\)的数的个数。
\(Sol:\)
设\(f_i\)表示\(i\)位十进制数中出现偶数个\(5\)的数的个数,
\(g_i\)表示\(i\)位十进制数中出现奇数个\(5\)的数的个数。
则有
设序列\(\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):\)
\(\Leftrightarrow(1-9x)F(x)-xG(x)=8\tag5\)
同理,设\((6)=(2)*(-9x)\),\((7)=(1)*(-x)\)
则\((6)+(7)+(2)\)得:
由\((5)\)、\((8)\):
又
综上
指数型母函数(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)\),则该组合数序列的母函数为:
我们发现,普通型母函数标志函数为\(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)!}+...\)
指数型母函数应化简成如下形式:
这里只有\(b_i\)是我们需要的。
为什么?看栗子。
应用
\(Eg1\)
有三个数字\(1\),两个数字\(6\),一个数字\(8\),问能组成多少个四位数。
\(Sol:\)
实际上是多重集排列数问题,显然多重集\(S=\lbrace3x_1,2x_2,1x_3\rbrace\)
构造指数型生成函数:
\(\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!}+...\)
所以有:
最后展开\(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)\)
\(\therefore a_n=\frac 14(5^n+2*3^n+1)\)