生成函数(母函数)

生成函数(母函数)

定义

生成函数(Generating Function)又称母函数,是处理组合数学问题的一大利器。
它是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。
生成函数有许多不同的种类,但大多可以表示为单一的形式:F(x)=nankn(x)
其中 kn(x) 被称为核函数。不同的核函数会导出不同的生成函数,拥有不同的性质:

  • 普通生成函数:kn(x)=xn;
  • 指数生成函数:kn(x)=xnn!
  • 狄利克雷生成函数:kn(x)=1nx

同形式幂级数,我们常用 [kn(x)]F(x) 来表示它的第 n 项的核函数对应的系数,也就是 an.

一些可能会用到得公式

  • (1+x)n=Cn0+Cn1x++Cnrxr++Cnnxn.
  • 11x=1+x+x2++xk+
  • (1x)n=k=0Cn+k1kxk
  • (a+b)n=i=0nCniaibni

普通生成函数

普通型母函数的特色是标志函数 fk(x)=xk
常用来解决无标号有序的计数问题。

一、定义

对于序列 a0,a1,a2+ 的普通生成函数为形式幂级数 F(x)=i0fixi,
若已知序列 a0,a1,a2+

三、示例

例1

有1克、2克、3克、4克的砝码各一枚,能称出哪几种重量?每种重量各有几种可能方案?

11克砝码可以看成1+x11表示不取,x1表示取一个,以下同理。
12克砝码可以看成1+x2
13克砝码可以看成1+x3
14克砝码可以看成1+x4
构造母函数 G(x)=(1+x)(1+x2)(1+x3(1+x4) =1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10
在这个函数中,若指数表示可称出重量,系数表示方案数,则可以看出重量为3克、4克、5克、6克、7克的方案数均有两种,而重量为1克、2克、8克、9克、10克的方案只有1种。

例2

食物

在许多不同种类的食物中选出 n 个,每种食物的限制如下:
承德汉堡:偶数个
可乐:0 个或 1
鸡腿:0 个,1 个或 2
蜜桃多:奇数个
鸡块:4 的倍数个
包子:0 个,1 个,2 个或 3
土豆片炒肉:不超过一个
面包:3 的倍数个
每种食物都是以「个」为单位,只要总数加起来是 n 就算一种方案。对于给出的 n 你需要计算出方案数,对 10007 取模。

对于每种食物的生成函数:

  • 承德汉堡:1+x2+x4+=11x2
  • 可乐:1+x
  • 鸡腿:1+x+x2=1x31x
  • 蜜桃多:x+x3+x5+=x(1+x2+x4+)=x1x2
  • 鸡块:1+x4+x8+=11x4
  • 包子:1+x+x2+x3=1x41x
  • 土豆片炒肉:1+x
  • 面包:1+x3+x6+=11x3

全部乘起来得到 x(1x)4

x(n=0Cn+41n×xn)

=n=0Cn+3n×xn+1

=n=1Cn+2n1xn

=n=1Cn+23xn

所以答案为 Cn+23=(n+2)×(n+1)×n6

例3

求斐波那契数列通项,已知 fn={1n1fn1+fn2n>1

对于其母函数T有:

F(x)=i0fixi

=f0+f1x+i2fixi

=x+i2(fi2+fi1)xi

=x+x2+i2fi2xi2+xi2fi1xi1

=x+x2F(x)+xF(x)

解得 F(x)=x1xx2
x1xx2 化开得

F(x)=x(1152x)(11+52x)

=15111+52x1511152x

所以 fn=15(1+52)n15(152)n

指数生成函数

常用来解决有标号有序的计数问题
未完······

posted @   kroyosh  阅读(111)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示