【生成函数学习笔记】

P.s. 本文是菜鸡笔者整理知识点以及做书上例题搞的 可能偏鸡肋/easy,谨慎食用)

例题:(《组合数学》习题二)

1.求不包含连续\(0\)\(01\)序列个数。

\(f_n\)表示长度为\(n\)的满足题意的序列个数。则\(f_n=f_{n-1}+f_{n-2}.\)

解析:考虑往合法序列末尾能加的数,只有两种:\(1,10.\)所以分别对应\(f_{n-1},f_{n-2}.\)如果加\(01,\)相当于对\(f_n\)后面加\(1,\)所以没有遗漏。

2.问由\(X,Y,Z,U\)组成的字符串且满足\(U\)的个数为偶数的长度为\(n\)的字符串有多少个。

\(F(x)\)为答案的指数型生成函数,对于\(X,Y,Z\)来讲,它们的生成函数都是\(e^x,\)对于\(U\)来说,它的生成函数是\(\frac{e^{-x}+e^{x}}{2}\)

所以:

\[F(x)=e^{3x}\cdot \frac{e^{-x}+e^{x}}{2}=\frac{e^{2x}+e^{4x}}{2} \]

展开一下就是:

\[F(x)=\sum_{i=0}^\infty (2^{i-1}+2^{2i-1})x^i\cdot \frac{1}{i!} \]

故而\(f_n=2^{n-1}+2^{2n-1}.\)

这里注意一点:普通型生成函数求的是 多重组合数 ,而指数型生成函数求的是 多重排列数。也就是说,指数型生成函数把同一种元素不同选法的差异给去除了。

关于多重排列数与多重组合数:

观察到上述例2中,\(f_n=n![x^n]F(x),\)这里就是“指数型生成函数求的是多重排列数”的意义所在,对于一种“组合”,把它化为排列需要乘以一个\(n!.\)

例题2考虑的并不只是选法,它还考察了对于一种字母搭配,它有多少种排列,这就是这题选择指数型生成函数的原因。

3.给定方程\(\sum_ {i=1}^4 x_i =r,x_1\in [0,4],x_2\in \left\{ 1,3,5,7\right\},x_3,x_4 \in even<10\)

显然它们的生成函数是\(F(x)=(1+x+x^2+x^3+x^4)\cdot (x+x^3+x^5+x^7)\cdot (x^2+x^4+x^6+x^8)^2.\)

知识点穿插:

对于形如\(1-x^n\)的展开式,把它看成\((1-x)\cdot (1+x+...+x^{n-1}),\)后者用等比数列求和知道它就是\(\frac{1-x^n}{1-x}.\)

所以上面式子可以重新写成:

\[F(x)=\frac{1-x^5}{1-x}\cdot \frac{1-x^8}{1-x^2}\cdot x\cdot (\frac{1-x^{10}}{1-x^2})^2 \]

posted @ 2021-03-02 20:59  Refined_heart  阅读(230)  评论(0编辑  收藏  举报