生成函数

本文深入探讨了生成函数在组合数学中的应用,包括普通生成函数和指数生成函数的定义及计算方法,通过实例讲解了如何利用生成函数解决复杂的组合计数问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

f(x)=a0+a1x+a2x2+a3x3+...f(x)=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}+...f(x)=a0+a1x+a2x2+a3x3+...f(x)f(x)f(x)是序列a0,a1,a2,a3...a_{0},a_{1},a_{2},a_{3}...a0,a1,a2,a3...的生成函数

题目

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

  • 111111克砝码可以看成1+x11+x^{1}1+x1,1表示不取,x1x^{1}x1表示取一个重量为111
  • 1个2克砝码可以看成1+x21+x^{2}1+x2,…
  • 1个3克砝码可以看成1+x31+x^{3}1+x3,…
  • 1个4克砝码可以看成1+x41+x^{4}1+x4,…
  • 那么生成函数就是
    f(x)=(1+x1)(1+x2)(1+x3)(1+x4)f(x)=(1+x^{1})(1+x^{2})(1+x^{3})(1+x^{4})f(x)=(1+x1)(1+x2)(1+x3)(1+x4)
    f(x)=1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10f(x)=1+x+x^{2}+2x^{3}+2x^{4}+2x^{5}+2x^{6}+2x^{7}+x^{8}+x^{9}+x^{10}f(x)=1+x+x2+2x3+2x4+2x5+2x6+2x7+x8+x9+x10
  • 这个函数中可以看出重量为3克的方案有两种,重量为7的方案有两种,重量为10的有1种。
  • 不难发现指数表示重量,系数表示方案数。

特殊情况

aaa = {1,1,1,..11,1,1,..11,1,1,..1}时,f(x)=1+x+x2+x3+x4+...=11−xf(x)=1+x+x^{2}+x^{3}+x^{4}+...=\frac{1}{1-x}f(x)=1+x+x2+x3+x4+...=1x1
推广 1(1−x)k=∑i=0∞Ci+k−1k−1xi=fk(x)\frac{1}{(1-x)^{k}}=\sum_{i=0}^{\infty}C_{i+k-1}^{k-1}x^{i}=f^{k}(x)(1x)k1=i=0Ci+k1k1xi=fk(x)(相当于从k个[x0,xi][x^{0},x^{i}][x0,xi]的集合中选择一些数,使得选出数的指数和为k的方案数)

斐波那契数列通项公式

f(x)=x+x2+2x3+3x4+...f(x)=x+x^{2}+2x^{3}+3x^{4}+...f(x)=x+x2+2x3+3x4+...
x⋅f(x)=x2+x3+2x4+3x4+...x\cdot f(x)=x^{2}+x^{3}+2x^{4}+3x^{4}+...xf(x)=x2+x3+2x4+3x4+...
f(x)−x⋅f(x)=x+x3+x4+...=x+x2⋅f(x)f(x)-x\cdot f(x)=x+x^{3}+x^{4}+...=x+x^{2}\cdot f(x)f(x)xf(x)=x+x3+x4+...=x+x2f(x)
f(x)=11−x−x2=x(1−1−52x)(1−1+52x)=−1511−1−52x+1511−1+52xf(x)=\frac{1}{1-x-x^{2}}=\frac{x}{(1-\frac{1-\sqrt{5}}{2}x)(1-\frac{1+\sqrt{5}}{2}x)}=-\frac{1}{\sqrt{5}}\frac{1}{1-\frac{1-\sqrt{5}}{2}x}+\frac{1}{\sqrt{5}}\frac{1}{1-\frac{1+\sqrt{5}}{2}x}f(x)=1xx21=(1215x)(121+5x)x=511215x1+51121+5x1
an=−15(1−52)n+15(1+52)na_{n}=-\frac{1}{\sqrt{5}}(\frac{1-\sqrt{5}}{2})^{n}+\frac{1}{\sqrt{5}}(\frac{1+\sqrt{5}}{2})^{n}an=51(215)n+51(21+5)n

指数生成函数

ex=∑n=0∞xnn!=1+x+x22!+...+xnn!+...e^{x}=\sum_{n=0}^{\infty}\frac{x^{n}}{n!}=1+x+\frac{x^{2}}{2!}+...+\frac{x^{n}}{n!}+...ex=n=0n!xn=1+x+2!x2+...+n!xn+...
数列h0,h1,h2,...,hnh_{0},h_{1},h_{2},...,h_{n}h0,h1,h2,...,hn的指数型生成函数为
g(e)(x)=∑n=0∞hnxnn!=h0+h1x+h2x22!+...+hnxnn!+...g^{(e)}(x)=\sum_{n=0}^{\infty}h_{n}\frac{x^{n}}{n!}=h_{0}+h_{1}x+h_{2}\frac{x^{2}}{2!}+...+h_{n}\frac{x^{n}}{n!}+...g(e)(x)=n=0hnn!xn=h0+h1x+h22!x2+...+hnn!xn+...

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

1+x+x22!+x33!+...=ex1+x+\frac{x^{2}}{2!}+\frac{x^{3}}{3!}+...=e^{x}1+x+2!x2+3!x3+...=ex
1−x+x22!−x33!+...=e−x1-x+\frac{x^{2}}{2!}-\frac{x^{3}}{3!}+...=e^{-x}1x+2!x23!x3+...=ex
1+x22!+x44!+x66!+...=ex+e−x21+\frac{x^{2}}{2!}+\frac{x^{4}}{4!}+\frac{x^{6}}{6!}+...=\frac{e^{x}+e^{-x}}{2}1+2!x2+4!x4+6!x6+...=2ex+ex
x+x33!+x55!+x77!+...=ex−e−x2x+\frac{x^{3}}{3!}+\frac{x^{5}}{5!}+\frac{x^{7}}{7!}+...=\frac{e^{x}-e^{-x}}{2}x+3!x3+5!x5+7!x7+...=2exex

定理

假设有k种元素(元素内不区分),每一种分别有n1,n2,n3,...,nkn_{1},n_{2},n_{3},...,n_{k}n1,n2,n3,...,nk个,hnh_{n}hn表示大小为n的排列有多少种情况,那么数列h0,h1,h2,...,hnh_{0},h_{1},h_{2},...,h{n}h0,h1,h2,...,hn的指数型生成函数为:
g(e)(x)=fn1(x)fn2(x)...fnk(x)g^{(e)}(x)=f_{n_{1}}(x)f_{n_{2}}(x)...f_{n_{k}}(x)g(e)(x)=fn1(x)fn2(x)...fnk(x)
fni(x)=1+x+x22!+x33!+...+xnini!f_{n_{i}}(x)=1+x+\frac{x^{2}}{2!}+\frac{x^{3}}{3!}+...+\frac{x^{n_{i}}}{n_{i}!}fni(x)=1+x+2!x2+3!x3+...+ni!xni
考虑把g(e)(x)g^{(e)}(x)g(e)(x)展开,应该是如下形式:
xm1m1!⋅xm2m2!⋅...⋅xmkmk!=xm1+m2+...+mkm1!⋅m2!⋅...⋅mk!\frac{x^{m_{1}}}{m_{1}!}\cdot \frac{x^{m_{2}}}{m_{2}!}\cdot...\cdot\frac{x^{m_{k}}}{m_{k}!}=\frac{x^{m_{1}+m_{2}+...+m_{k}}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}m1!xm1m2!xm2...mk!xmk=m1!m2!...mk!xm1+m2+...+mk
n=m1+m2+m3+...+mkn=m_{1}+m_{2}+m_{3}+...+m_{k}n=m1+m2+m3+...+mk,则:
xm1+m2+...+mkm1!⋅m2!⋅...⋅mk!=xnm1!⋅m2!⋅...⋅mk!=n!⋅xnm1!⋅m2!⋅...⋅mk!⋅n!=n!m1!⋅m2!⋅...⋅mk!xnn!\frac{x^{m_{1}+m_{2}+...+m_{k}}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}=\frac{x^{n}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}=\frac{n!\cdot x^{n}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!\cdot n!}=\frac{{n!}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}\frac{x^{n}}{n!}m1!m2!...mk!xm1+m2+...+mk=m1!m2!...mk!xn=m1!m2!...mk!n!n!xn=m1!m2!...mk!n!n!xn
对于n=m1+m2+m3+...+mkn=m_{1}+m_{2}+m_{3}+...+m_{k}n=m1+m2+m3+...+mk,大小为nnn的排列数就为:
∑n!m1!⋅m2!⋅...⋅mk!\sum \frac{{n!}}{m_{1}!\cdot m_{2}!\cdot ... \cdot m_{k}!}m1!m2!...mk!n!
证毕

指数生成函数例题

用红,白,蓝三种颜色给1∗n1*n1n的棋盘着色,要求红色的方格数是偶数,确定给这个棋盘着色的方法数
hnh_{n}hn表示这样的着色数,其中我们定义h0=1h_{0}=1h0=1

  • hnh_{n}hn为有3种颜色(红,白,蓝)的多重集合的n排列数,其中每一种颜色可以使用∞\infty次,且要求红色出现的次数是偶数。
  • 我们能过得到一个生成函数:
    g(e)(x)=(1+x22!+x44!+...)(1+x11!+x22!+...)(1+x11!+x22!+...)g^{(e)}(x)=(1+\frac{x^{2}}{2!}+\frac{x^{4}}{4!}+...)(1+\frac{x^{1}}{1!}+\frac{x^2}{2!}+...)(1+\frac{x^{1}}{1!}+\frac{x^2}{2!}+...)g(e)(x)=(1+2!x2+4!x4+...)(1+1!x1+2!x2+...)(1+1!x1+2!x2+...)
    g(e)(x)=12(ex+e−x)⋅e2x=12(e3x+ex)g^{(e)}(x)=\frac{1}{2}(e^{x}+e^{-x})\cdot e^{2x}=\frac{1}{2}(e^{3x}+e^{x})g(e)(x)=21(ex+ex)e2x=21(e3x+ex)
    g(e)(x)=12(∑n=0∞3nxnn!+∑n=0∞xnn!)=12∑n=0∞(3n+1)xnn!g^{(e)}(x)=\frac{1}{2}(\sum_{n=0}^{\infty}3^{n}\frac{x^{n}}{n!}+\sum_{n=0}^{\infty}\frac{x^{n}}{n!})=\frac{1}{2}\sum_{n=0}^{\infty}(3^{n}+1)\frac{x^{n}}{n!}g(e)(x)=21(n=03nn!xn+n=0n!xn)=21n=0(3n+1)n!xn
    hn=3n+12h_{n}=\frac{3^{n}+1}{2}hn=23n+1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值