生成函数(TBC)

生成函数

生成函数 (Generating Function) 的应用简单来说在于研究未知(通项)数列规律,用这种方法在给出递推式的情况下求出数列的通项。

对于一个数列 a a a,称 f ( x ) = ∑ i = 0 n a i x i f(x)=\sum_{i=0}^{n}{a_ix^i} f(x)=i=0naixi是数列 a a a普通生成函数 (OGF) g ( x ) = ∑ i = 0 n a i × x i i ! g(x)=\sum_{i=0}^{n}{a_i\times\frac{x^i}{i!}} g(x)=i=0nai×i!xi是数列 a a a指数生成函数 (EGF)

我们总是认为生成函数是收敛的

本局对战的剩余时间内,所有未加上标的求和符号,上标均为 ∞ ∞

常见的普通生成函数

  1. ∀ n ∈ N ∗ \forall n\in\N^* nN ∑ i = 0 n x i = 1 − x n + 1 1 − x \sum_{i=0}^{n}{x^i}=\frac{1-x^{n+1}}{1-x} i=0nxi=1x1xn+1

证明: S = ∑ i = 0 n x i S=\sum_{i=0}^{n}{x^i} S=i=0nxi x S = ∑ i = 1 n + 1 x i xS=\sum_{i=1}^{n+1}{x^i} xS=i=1n+1xi所以 ( x − 1 ) S = x n + 1 − 1 S = x n + 1 − 1 x − 1 = 1 − x n + 1 1 − x \begin{aligned}(x-1)S&=x^{n+1}-1\\ S&=\frac{x^{n+1}-1}{x-1}\\ &=\frac{1-x^{n+1}}{1-x}\end{aligned} (x1)SS=xn+11=x1xn+11=1x1xn+1
得证。

  1. ∑ i = 0 x i = 1 1 − x \sum_{i=0}^{}{x^i}=\frac{1}{1-x} i=0xi=1x1

证明: S = ∑ i = 0 x i S=\sum_{i=0}{x^i} S=i=0xi x S = ∑ i = 1 x i xS=\sum_{i=1}{x^i} xS=i=1xi所以 ( 1 − x ) S = 1 S = 1 1 − x \begin{aligned}(1-x)S&=1\\ S&=\frac{1}{1-x}\end{aligned} (1x)SS=1=1x1
得证。

  1. ∑ i = 0 ( i + 1 ) x i = ( ∑ i = 0 x i ) 2 = 1 ( 1 − x ) 2 \sum_{i=0}^{}{(i+1)x^i}=(\sum_{i=0}^{}{x^i})^2=\frac{1}{(1-x)^2} i=0(i+1)xi=(i=0xi)2=(1x)21

证明: 先证明 ∀ n ∈ N ∗ \forall n\in\N^* nN ( ∑ i = 0 n x i ) 2 = ( ∑ i = 0 n ( i + 1 ) x i ) + S . . . ( ∗ ) (\sum_{i=0}^{n}{x^i})^2=(\sum_{i=0}^{n}{(i+1)x^i})+S\quad...(*) (i=0nxi)2=(i=0n(i+1)xi)+S...()其中 S = ( ∑ i = 0 n − 1 ( n − i ) x n + i + 1 ) S=(\sum_{i=0}^{n-1}{(n-i)x^{n+i+1}}) S=(i=0n1(ni)xn+i+1)

f ( x ) = ∑ i = 0 x i f(x)=\sum_{i=0}{x^i} f(x)=i=0xi [ x n ] f ( n ) [x^n]f(n) [xn]f(n) 表示多项式 f ( n ) f(n) f(n) x n x^n xn 项之系数。则 ( ∑ i = 0 n x i ) 2 = ( ∑ i = 0 n x i ) ⋅ ( ∑ i = 0 n x i ) = [ ∑ i = 0 n ⋅ ( ∑ j , i − j ∈ [ 0 , i ] [ x j ] [ x i − j ] ) ⋅ x i ] + S . . . ( 1 ) \begin{aligned}(\sum_{i=0}^{n}{x^i})^2&=(\sum_{i=0}^{n}{x^i})·(\sum_{i=0}^{n}{x^i})\\ &=[\sum_{i=0}^{n}·(\sum_{j,i-j\in[0,i]}{[x^j][x^{i-j}]})·x^i]+S\quad...(1)\end{aligned} (i=0nxi)2=(i=0nxi)(i=0nxi)=[i=0n(j,ij[0,i][xj][xij])xi]+S...(1)
因为 i ≤ n i\leq n in,所以有且仅有 i + 1 i+1 i+1 j ∈ [ 0 , n ] j\in[0,n] j[0,n] 使 j , i − j ∈ [ 0 , i ] j,i-j\in[0,i] j,ij[0,i]

所以 ( ∑ i = 0 n x i ) 2 = [ ∑ i = 0 n ( i + 1 ) x i ] + S \begin{aligned}(\sum_{i=0}^{n}{x^i})^2&=[\sum_{i=0}^{n}{(i+1)x^i}]+S\end{aligned} (i=0nxi)2=[i=0n(i+1)xi]+S
( ∗ ) (*) () 式得证。
n → ∞ n\rightarrow\infty n 使原命题得证。

  1. ∑ i = 0 ( − x ) i = 1 1 + x \sum_{i=0}^{}{(-x)^i}=\frac{1}{1+x} i=0(x)i=1+x1

证明: x = − x x=-x x=x 并将原式代入 命题2 即可。

  1. ∀ m ∈ N ∗ \forall m\in\N^* mN 1 ( 1 − x ) m = ∑ n = 0 C n + m − 1 m − 1 x n \frac{1}{(1-x)^m}=\sum_{n=0}^{}{C_{n+m-1}^{m-1}x^n} (1x)m1=n=0Cn+m1m1xn

证明: 易知 ∀ m ∈ N ∗ \forall m\in\N^* mN ( ∑ i = 0 m x i ) m = 1 ( 1 − x ) m (\sum_{i=0}^{m}{x^i})^m=\frac{1}{(1-x)^m} (i=0mxi)m=(1x)m1

推广 ( 1 ) (1) (1),得 ( ∑ i = 0 n x i ) m = [ ∑ i = 0 n ⋅ ( ∑ { a j } ∈ [ 0 , n ] , j ∈ [ 1 , m ] , ∑ a j = i ∏ k = 0 j [ x a k ] ) ] + S (\sum_{i=0}^{n}{x^i})^m=[\sum_{i=0}^{n}·(\sum_{\{a_j\}\in[0,n],j\in[1,m],\sum{a_j}=i}{\prod_{k=0}^{j}{[x^{a_k}]}})]+S (i=0nxi)m=[i=0n({aj}[0,n],j[1,m],aj=ik=0j[xak])]+S
∀ j , k \forall j,k j,k 都有 [ a j k ] = 1 [a_j^k]=1 [ajk]=1,所以只需证明 有且仅有 C i + m − 1 m − 1 C_{i+m-1}^{m-1} Ci+m1m1 { a i } \{a_i\} {ai} 使 ∑ a j = i \sum a_j=i aj=i

考虑连续的一行 i i i 个小球,你需要在 m − 1 m-1 m1 组相邻两个球之间各放一个隔板,将这 i i i 个小球分成 m m m 份(第 j j j 份即为 a j a_j aj)。因为 a j a_j aj 可能为零,也就是说隔板可能重叠。所以方案数为 C i + m − 1 m − 1 C_{i+m-1}^{m-1} Ci+m1m1。这样我们就证明了有且仅有 C i + m − 1 m − 1 C_{i+m-1}^{m-1} Ci+m1m1 { a i } \{a_i\} {ai} 使 ∑ a j = i \sum a_j=i aj=i。原命题得证。

例 1

今有 a a a 1 1 1 元硬币, b b b 2 2 2 元硬币, c c c 5 5 5 元硬币。求一个最小的、不能用这些硬币拼出的面值。 1 ≤ a , b , c ≤ 1 0 3 1\leq a,b,c\leq 10^3 1a,b,c103


f ( x ) = ∑ i = 0 a x i g ( x ) = ∑ i = 0 b x 2 i h ( x ) = ∑ i = 0 c x 5 i \begin{aligned}f(x)&=\sum_{i=0}^{a}{x^i}\\ g(x)&=\sum_{i=0}^{b}{x^{2i}}\\ h(x)&=\sum_{i=0}^{c}{x^{5i}}\end{aligned} f(x)g(x)h(x)=i=0axi=i=0bx2i=i=0cx5i f ( x ) ∗ g ( x ) ∗ h ( x ) f(x)*g(x)*h(x) f(x)g(x)h(x) 各个位的系数就表示拼出这个面值的方案数,答案就是这个卷积的系数为零的最低位。

例 2

今有 A、B 两个超市,价格为 i i i 的商品各有 i i i 件。求从两个超市各买一个商品,恰好花 n n n 元的方案数。


生成函数 f ( x ) = ( ∑ i = 1 i x i ) 2 = x 2 ⋅ ( ∑ i = 0 ( i + 1 ) x i ) 2 = x 2 ( 1 − x ) 4 = x 2 ⋅ ∑ i = 0 C i + 3 3 x i \begin{aligned}f(x)&=(\sum_{i=1}{ix^i})^2\\ &=x^2·(\sum_{i=0}{(i+1)x^i})^2\\ &=\frac{x^2}{(1-x)^4}\\ &=x^2·\sum_{i=0}{C_{i+3}^{3}{x^i}}\end{aligned} f(x)=(i=1ixi)2=x2(i=0(i+1)xi)2=(1x)4x2=x2i=0Ci+33xi

所以, [ x n − 2 ] ( ∑ i = 0 C i + 3 3 x i ) = C n + 1 3 [x^{n-2}](\sum_{i=0}{C_{i+3}^{3}{x^i}})=C_{n+1}^{3} [xn2](i=0Ci+33xi)=Cn+13。此即为答案。

例 3

求函数 f ( x ) = ∑ i = 0 i 2 x i f(x)=\sum_{i=0}{i^2x^i} f(x)=i=0i2xi的生成函数。


∀ n ∈ N ∗ \forall n\in\N^* nN n 2 = ∑ i = 1 n ( 2 i − 1 ) n^2=\sum_{i=1}^{n}{(2i-1)} n2=i=1n(2i1)
f ( x ) = ∑ i = 0 i 2 x i = ∑ i = 1 ∑ j = i ( 2 i − 1 ) x j = ∑ i = 1 ∑ j = i + 1 ( 2 i − 1 ) x j + [ ∑ i = 1 ( 2 i − 1 ) x i ] = ∑ i = 1 ∑ j = i + 1 ( 2 i − 1 ) x j + [ 2 × x ( 1 − x ) 2 − 1 1 − x + 1 ] \begin{aligned}f(x)&=\sum_{i=0}{i^2x^i}\\ &=\sum_{i=1}\sum_{j=i}(2i-1)x^j\\ &=\sum_{i=1}\sum_{j=i+1}(2i-1)x^j+[\sum_{i=1}(2i-1)x^i]\\ &=\sum_{i=1}\sum_{j=i+1}(2i-1)x^j+[2\times\frac{x}{(1-x)^2}-\frac{1}{1-x}+1]\end{aligned} f(x)=i=0i2xi=i=1j=i(2i1)xj=i=1j=i+1(2i1)xj+[i=1(2i1)xi]=i=1j=i+1(2i1)xj+[2×(1x)2x1x1+1]
S = 2 × x ( 1 − x ) 2 − 1 1 − x + 1 = x 2 + x ( 1 − x ) 2 \begin{aligned}S&=2\times\frac{x}{(1-x)^2}-\frac{1}{1-x}+1\\ &=\frac{x^2+x}{(1-x)^2}\end{aligned} S=2×(1x)2x1x1+1=(1x)2x2+x f ( x ) = ∑ i = 1 ∑ j = i + 1 ( 2 i − 1 ) x j + S = ∑ i = 1 ( 2 i − 1 ) ( ∑ j = 1 x j − ∑ j = 1 i x j ) + S = ∑ i = 1 ( 2 i − 1 ) ( 1 1 − x − 1 − x i + 1 − x x − 1 ) + S = ∑ i = 1 ( 2 i − 1 ) ⋅ x i + 1 1 − x + S = 1 1 − x ( 2 × ∑ i = 1 i ⋅ x i + 1 − ∑ i = 1 x i + 1 ) + S \begin{aligned}f(x)&=\sum_{i=1}\sum_{j=i+1}(2i-1)x^j+S\\ &=\sum_{i=1}(2i-1)(\sum_{j=1}x^j-\sum_{j=1}^{i}x^j)+S\\ &=\sum_{i=1}(2i-1)(\frac{1}{1-x}-1-\frac{x^{i+1}-x}{x-1})+S\\ &=\sum_{i=1}(2i-1)·\frac{x^{i+1}}{1-x}+S\\ &=\frac{1}{1-x}(2\times\sum_{i=1}i·x^{i+1}-\sum_{i=1}x^{i+1})+S\end{aligned} f(x)=i=1j=i+1(2i1)xj+S=i=1(2i1)(j=1xjj=1ixj)+S=i=1(2i1)(1x11x1xi+1x)+S=i=1(2i1)1xxi+1+S=1x1(2×i=1ixi+1i=1xi+1)+S
∑ i = 1 i ⋅ x i + 1 = ∑ i = 1 ( i + 1 ) ⋅ x i − 2 ∑ i = 1 x i = 1 ( 1 − x ) 2 − 1 − 2 × x 1 − x = x 2 ( 1 − x ) 2 ∑ i = 1 x i + 1 = 1 1 − x − 1 − x = x 2 1 − x \begin{aligned}\sum_{i=1}{i·x^{i+1}}&=\sum_{i=1}{(i+1)·x^i}-2\sum_{i=1}x^i\\ &=\frac{1}{(1-x)^2}-1-2\times\frac{x}{1-x}\\ &=\frac{x^2}{(1-x)^2}\\ \sum_{i=1}x^{i+1}&=\frac{1}{1-x}-1-x\\ &=\frac{x^2}{1-x}\end{aligned} i=1ixi+1i=1xi+1=i=1(i+1)xi2i=1xi=(1x)2112×1xx=(1x)2x2=1x11x=1xx2
所以 f ( x ) = 1 1 − x ( 2 × x 2 ( 1 − x ) 2 − x 2 1 − x ) + S = x 2 + x ( 1 − x ) 3 \begin{aligned}f(x)&=\frac{1}{1-x}(2\times\frac{x^2}{(1-x)^2}-\frac{x^2}{1-x})+S\\ &=\frac{x^2+x}{(1-x)^3}\end{aligned} f(x)=1x1(2×(1x)2x21xx2)+S=(1x)3x2+x

Catalan (卡特兰)数

h ( 0 ) = 0 , h ( 1 ) = 1 , h ( n ) = ∑ i = 0 n − 1 h ( i ) ⋅ h ( n − i − 1 ) ( n ≥ 2 ) h(0)=0,h(1)=1,\\ h(n)=\sum_{i=0}^{n-1}{h(i)·h(n-i-1)}\quad(n\geq2) h(0)=0,h(1)=1,h(n)=i=0n1h(i)h(ni1)(n2) h h hCatalan 数

尝试用生成函数推导 Catalan 数的通项公式。

h ( x ) h(x) h(x) 的生成函数为 f ( x ) f(x) f(x)。则 f ( x ) = ∑ i = 0 ( ∑ j = 0 f ( j ) ⋅ f ( i − j − 1 ) ) x i + 1 = 1 + x ∑ i = 0 ∑ j = 0 i − 1 f ( j ) ⋅ f ( i − j − 1 ) x n − 1 = 1 + x ⋅ f 2 ( x ) \begin{aligned}f(x)&=\sum_{i=0}{(\sum_{j=0}f(j)·f(i-j-1))x^i}+1\\ &=1+x\sum_{i=0}{\sum_{j=0}^{i-1}{f(j)·f(i-j-1)x^{n-1}}}\\ &=1+x·f^2(x)\end{aligned} f(x)=i=0(j=0f(j)f(ij1))xi+1=1+xi=0j=0i1f(j)f(ij1)xn1=1+xf2(x)
也就是说 f ( x ) = 1 + x ⋅ f 2 ( x ) f(x)=1+x·f^2(x) f(x)=1+xf2(x) f ( x ) = 1 ± 1 − 4 x 2 x f(x)=\frac{1±\sqrt{1-4x}}{2x} f(x)=2x1±14x f ( 0 ) = 1 f(0)=1 f(0)=1 舍去+号,所以 f ( x ) = 1 − 1 − 4 x 2 x f(x)=\frac{1-\sqrt{1-4x}}{2x} f(x)=2x114x
因为 1 − 4 x = ( 1 − 4 x ) 1 2 \sqrt{1-4x}=(1-4x)^{\frac12} 14x =(14x)21,由 广义二项式定理 1 − 4 x = ∑ i = 0 C i 1 2 ( − 4 x ) i \sqrt{1-4x}=\sum_{i=0}{C_{i}^{\frac12}(-4x)^i} 14x =i=0Ci21(4x)i
C n 1 2 = 1 2 ( 1 2 − 1 ) ⋅ ⋅ ⋅ ( 1 2 − n + 1 ) n ! = ( − 1 ) n − 1 × 1 × 1 × 3 × ⋅ ⋅ ⋅ × ( 2 n − 3 ) 2 n n ! = ( − 1 ) n − 1 ( 2 n − 2 ) ! 2 2 n − 1 n ! ( n − 1 ) ! 1 − 4 x = − 2 ∑ i = 0 ( 2 i − 2 ) ! i ! ( i − 1 ) ! x i f ( x ) = ∑ i = 0 ( 2 i ) ! i ! ( i + 1 ) ! x i \begin{aligned}C_{n}^{\frac12}&=\frac{\frac12(\frac12-1)···(\frac12-n+1)}{n!}\\ &=(-1)^{n-1}\times\frac{1\times1\times3\times···\times(2n-3)}{2^nn!}\\ &=\frac{(-1)^{n-1}(2n-2)!}{2^{2n-1}n!(n-1)!}\\ \sqrt{1-4x}&=-2\sum_{i=0}{\frac{(2i-2)!}{i!(i-1)!}x^i}\\ f(x)&=\sum_{i=0}{\frac{(2i)!}{i!(i+1)!}x^i}\end{aligned} Cn2114x f(x)=n!21(211)(21n+1)=(1)n1×2nn!1×1×3××(2n3)=22n1n!(n1)!(1)n1(2n2)!=2i=0i!(i1)!(2i2)!xi=i=0i!(i+1)!(2i)!xi
所以 h ( n ) = ( 2 n ) ! n ! ( n + 1 ) ! h(n)=\frac{(2n)!}{n!(n+1)!} h(n)=n!(n+1)!(2n)!

常见的指数生成函数

  1. ∑ i = 0 x i i ! = e x \sum_{i=0}{\frac{x^i}{i!}}=e^x i=0i!xi=ex
  2. 偶数项求和。 ∑ i = 0 x 2 i ( 2 i ) ! = e x + e − x 2 \sum_{i=0}{\frac{x^{2i}}{(2i)!}}=\frac{e^x+e^{-x}}2 i=0(2i)!x2i=2ex+ex
  3. 奇数项求和。 ∑ i = 0 x 2 i + 1 ( 2 i + 1 ) ! = e x − e − x 2 \sum_{i=0}{\frac{x^{2i+1}}{(2i+1)!}}=\frac{e^x-e^{-x}}2 i=0(2i+1)!x2i+1=2exex

可以发现,它们与 OGF 最大的区别在于阶乘。所以,EGF 常用于解决与排列有关的问题。

例 4

1 , 2 , 3 , 4 1,2,3,4 1,2,3,4 n n n 个方块染色,求 1 , 2 1,2 1,2 颜色染的方块数为偶数的方案数。

写出 1 , 2 1,2 1,2 的生成函数 f ( x ) = ∑ i = 0 x 2 i ( 2 i ) ! f(x)=\sum_{i=0}{\frac{x^{2i}}{(2i)!}} f(x)=i=0(2i)!x2i
3 , 4 3,4 3,4 的生成函数 g ( x ) = ∑ i = 0 x i i ! g(x)=\sum_{i=0}{\frac{x^i}{i!}} g(x)=i=0i!xi
h ( x ) = f 2 ( x ) ∗ g 2 ( x ) = ( ∑ i = 0 x 2 i ( 2 i ) ! ) 2 ⋅ ( ∑ i = 0 x i i ! ) 2 = ( e x + e − x 2 ) 2 ⋅ e 2 x = e 4 x + 2 e 2 x + 1 4 = 1 4 + ∑ i = 0 ( 4 i + 2 n + 1 4 ) x i i ! \begin{aligned}h(x)&=f^2(x)*g^2(x)\\ &=(\sum_{i=0}{\frac{x^{2i}}{(2i)!}})^2·(\sum_{i=0}{\frac{x^i}{i!}})^2\\ &=(\frac{e^x+e^{-x}}2)^2·e^{2x}\\ &=\frac{e^{4x}+2e^{2x}+1}4\\ &=\frac14+\sum_{i=0}(\frac{4^i+2^{n+1}}4)\frac{x^{i}}{i!}\end{aligned} h(x)=f2(x)g2(x)=(i=0(2i)!x2i)2(i=0i!xi)2=(2ex+ex)2e2x=4e4x+2e2x+1=41+i=0(44i+2n+1)i!xi
所以 [ x n ] h ( x ) = 4 n + 2 n + 1 4 [x^n]h(x)=\frac{4^n+2^{n+1}}4 [xn]h(x)=44n+2n+1
(To Be Continued)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值