【生成函数学习笔记】
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_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}.\)
所以上面式子可以重新写成: