前言:我觉得生成函数是一个很玄妙的东西

知识铺垫

我们在这里简单的介绍一下几种为人熟知的数列(给出公式及部分证明):

算术数列,其中的每一项比前一项大一个常数q(等差数列)
几何数列,其中的每一项是前一项的常数q倍(等比数列)

一 . 算术数列

An=A0+nqA_n=A_0+nqAn​=A0​+nq
Sn=(n−1)∗A0+(q∗n∗(n+1))2S_n=( n-1 ) * A_0+{( q * n *(n+1)) \over 2}Sn​=(n−1)∗A0​+2(q∗n∗(n+1))​

二 . 几何数列

An=A0∗qnA_n=A_0*q^nAn​=A0​∗qn
Sn=A0∗qn−1q−1−−−>(q!=1)Sn=A_0*{ q^n-1 \over q-1 } ---> (q!=1)Sn=A0​∗q−1qn−1​−−−>(q!=1)

三 . 斐波那契数列

① f(n)=f(n−1)+f(n−2)(n>=2)f(n)=f(n-1)+f(n-2) (n>=2)f(n)=f(n−1)+f(n−2)(n>=2)
② f(0)=0,f(1)=1f(0)=0,f(1)=1f(0)=0,f(1)=1
③ Sn=f(0)+f(1)+f(2)+...+f(n)=f(n+2)−1S_n=f(0)+f(1)+f(2)+...+f(n)=f(n+2)-1Sn​=f(0)+f(1)+f(2)+...+f(n)=f(n+2)−1

我们简单的用归纳法证明一下:
Sn+1S_{n+1}Sn+1​
=f(0)+f(1)+f(2)+...+f(n)+f(n+1)=f(0)+f(1)+f(2)+...+f(n)+f(n+1)=f(0)+f(1)+f(2)+...+f(n)+f(n+1)
=[f(0)+f(1)+f(2)+...+f(n)]+f(n+1)=[f(0)+f(1)+f(2)+...+f(n)]+f(n+1)=[f(0)+f(1)+f(2)+...+f(n)]+f(n+1)
=f(n+2)−1+f(n+1)=f(n+2)-1+f(n+1)=f(n+2)−1+f(n+1)
=f(n+3)−1=f(n+3)-1=f(n+3)−1

④ 斐波那契数f(n)f(n)f(n)是偶数当且仅当n能被3整除
⑤ 斐波那契数列通项公式:

⑥ 在帕斯卡三角形从左上到右下的对角线上的二项式系数的和是斐波那契数列

生成函数

简单来说,生成函数是数列的一个副产品:


h0,h1,h2,...,hn,...h_0 , h_1 , h_2 , ... , h_n , ...h0​,h1​,h2​,...,hn​,...
是一个无穷数列
ta的生成函数定义为无穷函数:

形式很简单,我们主要通过例题来看一下:

∞ 例一

每一项都是1的无穷数列,ta的生成函数是?

g(x)=1+x+x2+...+xn+....==1/(1−x)g(x)=1+x+x^2+...+x^n+....==1/(1-x)g(x)=1+x+x2+...+xn+....==1/(1−x)

∞ 例二

设mmm是正整数,二项式系数
C(m,0),C(m,1),C(m,2),...,C(m,m)C(m,0),C(m,1),C(m,2),...,C(m,m)C(m,0),C(m,1),C(m,2),...,C(m,m)
的生成函数是?

g(x)=C(m,0)+C(m,1)x+C(m,2)x2+...+C(m,m)xmg(x)=C(m,0)+C(m,1)x+C(m,2)x^2+...+C(m,m)x^mg(x)=C(m,0)+C(m,1)x+C(m,2)x2+...+C(m,m)xm
根据二项式定理:

g(x)=(x+1)mg(x)=(x+1)^mg(x)=(x+1)m

注:实际上mmm为任意实数,都有上式

∞ 例三 (重点)

设kkk为整数,并设数列(h0,h1,h2,h3,...,hn,...)(h_0,h_1,h_2,h_3,...,h_n,...)(h0​,h1​,h2​,h3​,...,hn​,...)由令hn等于方程(e1+e2+e3+...+ek=n)(e_1+e_2+e_3+...+e_k=n)(e1​+e2​+e3​+...+ek​=n)的非负整数解的数目定义?

(建议多读几遍题)
首先我们要搞清楚hnh_nhn​到底是什么:
实际上我们可以将问题看做:有nnn个1,把ta们分成k份,每一份中允许不含有任何元素
这是隔板法的经典问题:
hn=C(n+k−1,k−1)h_n=C(n+k-1,k-1)hn​=C(n+k−1,k−1)

那么hnh_nhn​的生成函数就是:

我们在这里先给出结论:

于是我们有:

听说你们想知道1(1−x)n1 \over (1-x)^n(1−x)n1​的证明,百度一下
(x+y)n=∑k=0nC(n,k)xkyn−k(x+y)^n=\sum_{k=0}^{n}C(n,k)x^ky^{n-k}(x+y)n=∑k=0n​C(n,k)xkyn−k
(1+x)n=∑k=0nC(n,k)xk(1+x)^n=\sum_{k=0}^{n}C(n,k)x^k(1+x)n=∑k=0n​C(n,k)xk
考虑到组合数的性质,上式可以改写为
(1+x)n=∑k=0∞C(n,k)xk(1+x)^n=\sum_{k=0}^{∞}C(n,k)x^k(1+x)n=k=0∑∞​C(n,k)xk

如果指数是负数,则有
(1+x)−n=∑k=0∞C(−n,k)xk=∑k=0∞(−1)kC(n+k−1,k)xk(1+x)^{-n}=\sum_{k=0}^{∞}C(-n,k)x^k=\sum_{k=0}^{∞}(-1)^kC(n+k-1,k)x^k(1+x)−n=k=0∑∞​C(−n,k)xk=k=0∑∞​(−1)kC(n+k−1,k)xk

我们把xxx换成−x-x−x
(1+(−x))−n=∑k=0∞(−1)kC(n+k−1,k)(−x)k(1+(-x))^{-n}=\sum_{k=0}^{∞}(-1)^kC(n+k-1,k)(-x)^k(1+(−x))−n=k=0∑∞​(−1)kC(n+k−1,k)(−x)k

=∑k=0∞(−1)kC(n+k−1,k)(−1)kxk=∑k=0∞C(n+k−1,k)xk=\sum_{k=0}^{∞}(-1)^kC(n+k-1,k)(-1)^kx^k=\sum_{k=0}^{∞}C(n+k-1,k)x^k=k=0∑∞​(−1)kC(n+k−1,k)(−1)kxk=k=0∑∞​C(n+k−1,k)xk

(1−x)−n=∑k=0∞C(n+k−1,k)xk=∑k=0∞C(n+k−1,n−1)xk(1-x)^{-n}=\sum_{k=0}^{∞}C(n+k-1,k)x^k=\sum_{k=0}^{∞}C(n+k-1,n-1)x^k(1−x)−n=k=0∑∞​C(n+k−1,k)xk=k=0∑∞​C(n+k−1,n−1)xk

把nnn和kkk交换一下:
(1−x)−k=∑n=0∞C(k+n−1,k−1)xn{(1-x)}^{-k}=\sum_{n=0}^{∞}C(k+n-1,k-1)x^n(1−x)−k=n=0∑∞​C(k+n−1,k−1)xn

在上面的记法中,xeix^{e_i}xei​是第i个因子的代表项,于是我们由题意得:
xe1∗xe2∗...xek=xnx^{e_1}*x^{e_2}*...x^{e_k}=x^nxe1​∗xe2​∗...xek​=xn
e1+e2+...+ek=ne_1+e_2+...+e_k=ne1​+e2​+...+ek​=n
这样,此生成函数**xnx^nxn的系数**就是n对应的答案

∞ 例四

什么样的数列的生成函数如下式?
(1+x+x2+x3+x4+x5)(1+x+x2)(1+x+x2+x3+x4)(1+x+x^2+x^3+x^4+x^5)(1+x+x^2)(1+x+x^2+x^3+x^4)(1+x+x2+x3+x4+x5)(1+x+x2)(1+x+x2+x3+x4)

设xe1(0<=e1<=5),xe2(0<=e2<=2),xe3(0<=e3<=4)x^{e_1}(0<=e_1<=5) , x^{e_2}(0<=e_2<=2) , x^{e_3}(0<=e_3<=4)xe1​(0<=e1​<=5),xe2​(0<=e2​<=2),xe3​(0<=e3​<=4) 分别表示第一个因子,第二个因子,第三个因子的代表项
假设:e1+e2+e3=ne_1+e_2+e_3=ne1​+e2​+e3​=n
则:xe1∗xe2∗xe3=xnx^{e_1} * x^{e_2} * x^{e_3}=x^nxe1​∗xe2​∗xe3​=xn

因此乘积中xnx^nxn的系数是e1+e2+e3=ne_1+e_2+e_3=ne1​+e2​+e3​=n整数解的个数hnh_nhn​,其中0<=e1<=5,0<=e2<=2,0<=e3<=40<=e_1<=5 , 0<=e_2<=2 , 0<=e_3<=40<=e1​<=5,0<=e2​<=2,0<=e3​<=4 ,当n>5+2+4=11时,hn=0n>5+2+4=11时,h_n=0n>5+2+4=11时,hn​=0

∞ 例五

求装有苹果,香蕉,橘子和梨的果篮的数量hnh_nhn​,
其中在每个果篮中苹果数是偶数,香蕉数是5的倍数,橘子最多拿4个,梨要么不拿,要么只能拿一个

我们要是用组合数学的方法,估计就要光速弃疗了。。。
于是我们用生成函数的角度去考虑:

这样我们就使用代数的方法,解决了组合数学问题!

∞ 例六

设{h_n}为方程:{3e_1+4e_2+2e_3+5e_4=n}
的非负整数解得个数。求h0,h1,...,hn,...h_0,h_1,...,h_n,...h0​,h1​,...,hn​,...的生成函数g(x)g(x)g(x)

我们作如下变量替换:
f1=3∗e1,f2=4∗e2,f3=2∗e3,f4=5∗e4f_1=3*e_1 , f_2=4*e_2 , f_3=2*e_3 , f_4=5*e_4f1​=3∗e1​,f2​=4∗e2​,f3​=2∗e3​,f4​=5∗e4​
则:f1+f2+f3+f4=nf_1+f_2+f_3+f_4=nf1​+f2​+f3​+f4​=n
其中f1f_1f1​是3的倍数,f2f_2f2​是4的倍数,f3f_3f3​是2的倍数,f4f_4f4​是5的倍数
那我们就可以得到这样的式子:


我们在这里提出一个定理

可以评测的例题

指数生成函数

之前我们利用下面的单项式的集合为数列(h0 , h1 , h2 , h3 …)定义了生成函数:
{1,x,x2,x3,...}\{1,x,x^2,x^3,...\}{1,x,x2,x3,...}
这个生成函数特别适用于某些计数数列,特别是那些涉及二项式系数的数列,这是因为ta有二项式定理的形式
然而,对于某些计数排列的项的数列,更有效的是考虑下面单项式集合的生成函数:
{1,x,x22!,x33!,x44!,...}\{1,x,{x^2 \over 2!},{x^3 \over 3!},{x^4 \over 4!},...\}{1,x,2!x2​,3!x3​,4!x4​,...}
这些单项式出现在泰勒级数(e作为数学常数,是自然对数函数的底数):

数列h0,h1,h2,h3,h4,...h_0,h_1,h_2,h_3,h_4,...h0​,h1​,h2​,h3​,h4​,...的指数生成函数定义为:

常用指数生成函数的闭形式

这就是知识介绍,很简单明白,我们还是看一些例题:

∞ 例一

设nnn是正整数,确定下面数列的质数生成函数:
P(n,0),P(n,1),P(n,2),...,P(n,n)P(n,0),P(n,1),P(n,2),...,P(n,n)P(n,0),P(n,1),P(n,2),...,P(n,n)

其中P(n,k)P(n,k)P(n,k)表示nnn元素的kkk排列数目,因此对于k=0,1,...,nk=0,1,...,nk=0,1,...,n,这个排列的数目是n!(n−k)!n! \over (n-k)!(n−k)!n!​,因此指数生成函数是:

仔细一看,这xkx^kxk的系数实际上是C(n,k)C(n,k)C(n,k)
实际上这个生成函数也恰恰是下面数列的普通生成函数:
C(n,0),C(n,1),C(n,2),...,C(n,n)C(n,0),C(n,1),C(n,2),...,C(n,n)C(n,0),C(n,1),C(n,2),...,C(n,n)

∞ 例二

如果a是任意一个实数,则数列
1,a,a2,a3,...1,a,a^2,a^3,...1,a,a2,a3,...
的指数生成函数是:

这个时候,我们提出一个小问题:
对于正整数k,knk,k^nk,kn表示有kkk种不同类型的对象且每一种对象都有无穷重数的多重集合的nnn排列数。因此,这个计数数列的指数生成函数就是ekxe^{kx}ekx


我们在这里提出一个定理

设SSS是多重集合 {n1∗a1,n2∗a2,n3∗a3,...,nk∗ak}\{ n_1*a_1,n_2*a_2,n_3*a_3,...,n_k*a_k \}{n1​∗a1​,n2​∗a2​,n3​∗a3​,...,nk​∗ak​}(第iii种元素aia_iai​有nin_ini​个),其中nin_ini​是非负整数
设hnh_nhn​是SSS的nnn排列数,那么数列(h0,h1,h2,...,hk)(h_0,h_1,h_2,...,h_k)(h0​,h1​,h2​,...,hk​)的指数生成函数由下式给出:

我们简单的证明一下:


是(h0,h1,h2,...,hn,...)(h_0,h_1,h_2,...,h_n,...)(h0​,h1​,h2​,...,hn​,...)的指数生成函数
注意,当n>n1+n2+n3+...+nkn>n_1+n_2+n_3+...+n_kn>n1​+n2​+n3​+...+nk​时hn=0h_n=0hn​=0,所以g(x)g(x)g(x)是有限和

我们把①式展开,对于一个单项式得到的应该是下面的形式:

其中:0<=m1<=n1,0<=m2<=n2,0<=m3<=n3,...,0<=mk<=nk0<=m_1<=n_1,0<=m_2<=n_2,0<=m_3<=n_3,...,0<=m_k<=n_k0<=m1​<=n1​,0<=m2​<=n2​,0<=m3​<=n3​,...,0<=mk​<=nk​
设 n=m1+m2+...+mkn=m_1+m_2+...+m_kn=m1​+m2​+...+mk​,于是上式化为:

因此在①式中xnn!x^n \over n!n!xn​的系数就是这个玩意。。。

其中的求和就是对所有满足下面条件的m1,m2,m3,...,mkm_1,m_2,m_3,...,m_km1​,m2​,m3​,...,mk​的求和
0<=m1<=n1,0<=m2<=n2,0<=m3<=n3,0<=mk<=nk0<=m_1<=n_1,0<=m_2<=n_2,0<=m_3<=n_3,0<=m_k<=n_k0<=m1​<=n1​,0<=m2​<=n2​,0<=m3​<=n3​,0<=mk​<=nk​
m1+m2+m3+...+mk=nm_1+m_2+m_3+...+m_k=nm1​+m2​+m3​+...+mk​=n
对于确定的m1,m2,m3,...,mkm_1,m_2,m_3,...,m_km1​,m2​,m3​,...,mk​,SSS的组合{m1∗a1,m2∗a2,m3∗a3,...,mk∗ak}\{m_1*a_1,m_2*a_2,m_3*a_3,...,m_k*a_k\}{m1​∗a1​,m2​∗a2​,m3​∗a3​,...,mk​∗ak​}的n排列数就是:

显然对于上式的求和,就是原问题的解
原式得证


∞ 例三

设hnh_nhn​表示由数字1,2,3构造的n位数的个数,其中1的个数是偶数,2的个数至少是3,而3的个数至少是4
确定最终的数列(h0,h1,h2,...,hn,....)(h_0,h_1,h_2,...,h_n,....)(h0​,h1​,h2​,...,hn​,....)的指数生成函数

设hi(x)h_i(x)hi​(x)表示对应因子的指数生成函数:

∞ 例四

用红,白,蓝三种颜色给1*n的棋盘着色,要求红色的方格数是偶数,确定给这个棋盘着色的方法数

设hnh_nhn​表示这样的着色数,其中我们定义h0=1h_0=1h0​=1
则hnh_nhn​等于有3种颜色(红,白,蓝)的多重集合的n排列数,其中每一种颜色的重数是无穷
且要求红色出现的次数是偶数
我们能过得到一个生成函数(参见上文的定理):

∞ 例五

确定满足下面条件的n位数的个数hn:每个数字都是奇数且数字1和数字3出现偶数次?

设h0=1h_0=1h0​=1,数hnh_nhn​等于多重集合 { ∞1,∞3,∞5,∞7,∞*9 }的n排列中1,3出现偶数次的n排列个数
我们可以得到生成函数:

∞ 例六

确定用红,黄,蓝三色给1∗n1*n1∗n棋盘着色中,要求红格数是偶数,且至少有一个蓝格的着色方法数

可以评测的例题

组合数学之三 —— 生成函数相关推荐

  1. 【组合数学】生成函数 ( 正整数拆分 | 重复有序拆分 | 不重复有序拆分 | 重复有序拆分方案数证明 )

    文章目录 一.重复有序拆分 二.不重复有序拆分 1.无序拆分基本模型 2.全排列 三.重复有序拆分方案数证明 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式 ...

  2. 【组合数学】生成函数 ( 正整数拆分 | 正整数拆分基本模型 | 有限制条件的无序拆分 )

    文章目录 一.正整数拆分基本模型 二.有限制条件的无序拆分 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 ...

  3. 【组合数学】生成函数 ( 正整数拆分 | 无序不重复拆分示例 )

    文章目录 一.正整数拆分总结 二.正整数拆分示例 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多 ...

  4. 【组合数学】生成函数 ( 正整数拆分 | 无序 | 有序 | 允许重复 | 不允许重复 | 无序不重复拆分 | 无序重复拆分 )

    文章目录 一.正整数拆分 二.无序拆分 1.无序拆分 不允许重复 2.无序拆分 允许重复 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与 ...

  5. 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 2 | 扩展到整数解 )

    文章目录 一.使用生成函数求解不定方程解个数示例 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多 ...

  6. 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数示例 )

    文章目录 一.使用生成函数求解不定方程解个数示例 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 | 与多 ...

  7. 【组合数学】生成函数 ( 使用生成函数求解不定方程解个数 )

    文章目录 一.使用生成函数求解不定方程解个数 1.带限制条件 2.带系数 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与 ...

  8. 【组合数学】生成函数 ( 使用生成函数求解多重集 r 组合数 )

    文章目录 一.使用生成函数求解多重集 r 组合数 二.使用生成函数求解多重集 r 组合数 示例 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 ...

  9. 【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )

    文章目录 一.生成函数应用场景 二.使用生成函数求解递推方程 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相 ...

  10. 【组合数学】生成函数 ( 生成函数示例 | 给定通项公式求生成函数 | 给定生成函数求通项公式 )

    文章目录 一.给定级数求生成函数 二.给定生成函数求级数 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相关 ...

最新文章

  1. facebook 分享,遇到的错误
  2. Django MPTT —— 安装
  3. python 字符串去重且相同字符最多出现2次_Python实现计算字符串中出现次数最多的字符示例...
  4. mysql简单创建数据库权限(待修改备注)
  5. 本地计算机上的mysql80服务启动后停止 某些_MySQL服务启动:某些服务在未由其他服务或程序使用时将自动停止...
  6. C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)...
  7. ping 可以ping通,但是dns无法解析,导致ie无法上网问题的解决办法!---winsock2问题[转贴]...
  8. Github上热搜的Java开源商城项目合集,这个是真的好
  9. CMDN Club每周精选(第2期)
  10. html提示版本过低升级,IE8浏览器提示版本过低怎样升级呢?
  11. 鸿蒙生死印作用,逆天邪神:南溟神帝要抢鸿蒙生死印已成事实,但他还有更大作用...
  12. 写论文,这些工具让你少踩坑!
  13. 百趣代谢组学文献分享:间歇性禁食调节糖尿病脑损伤多组学研究
  14. 最近大街上,到处都是X团的地推
  15. 静态库入门(VS2017win10)
  16. 快速调用编辑器来写一条长,复杂或难的命令--用Enki学Linux系列(5)
  17. python2(基本)
  18. 自己做的上海市公积金贷款计算器
  19. 【GA算法】遗传算法原理及其Matlab代码
  20. Centos7 deploy mongoDB Replica set

热门文章

  1. html5 遮罩动画,JavaScript仿flash遮罩动画效果
  2. em算法python代码_EM算法Python实战
  3. Google Chrome(谷歌浏览器)安装方法与使用技巧
  4. 分类网络 resnet
  5. 手动实现直方图匹配(python)
  6. 郝斌 mysql_郝斌–SQL Server2005学习笔记
  7. 服务器系统如何卸载IE,如何卸载ie浏览器,我来教您如何卸载ie浏览器的步骤
  8. 计算机声卡原理,来谈谈声卡的工作原理吧
  9. pantum打印机驱动安装m6506_奔图m6506驱动程序
  10. linux的ib网卡驱动安装,linux安装IB网卡(mellanox)驱动