码迷,mamicode.com
首页 > 其他好文 > 详细

生成函数(母函数)总结

时间:2019-02-10 20:42:52      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:元素   偶数   prime   logs   ref   表示   log   http   是什么   

生成函数(母函数)总结

普通型生成函数(\(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)\)

生成函数(母函数)总结

标签:元素   偶数   prime   logs   ref   表示   log   http   是什么   

原文地址:https://www.cnblogs.com/heyujun/p/10360058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!