生成函数学习笔记&心得

生成函数生成果,生成数下你和我。
生成函数太美妙,蒟蒻一看被难倒。
B y — — C h a l o t t o \qquad\qquad\quad\mathscr{By——Chalotto} ByChalotto


目录

  • 生成函数
    • 概念
    • 普通型生成函数
    • 指数型生成函数
    • 例子
    • 经典题目
      • 1、求 Fibonacci 通项公式


生成函数

概念

*度娘定义:

生成函数又叫 母函数 ( 个人不太喜欢这个叫法 ),是组合数学中尤其是计数方面的一个重要理论和工具。
生成函数分为 普通型生成函数指数型生成函数 两种,前者使用较多。形式上说,普通型生成函数用于解决多重集的组合问题,而指数型母函数用于解决多重集的排列问题。

生成函数的应用简单来说在于研究未知(通项)数列规律,用这种方法在给出递推式的情况下求出数列的通项,生成函数是推导 F i b o n a c c i Fibonacci Fibonacci 数列的通项公式方法之一,另外组合数学中的 C a t a l a n Catalan Catalan 数也可以通过生成函数的方法得到。

另外生成函数也广泛应用于编程与算法设计、分析上,运用这种数学方法往往对程序效率与速度有很大改进。

普通型生成函数

定义:

对于任意数列 a 0 , a 1 , a 2 , … , a n a_0,a_1,a_2,\dots ,a_n a0,a1,a2,,an 用下面这个函数来表示这个数列: G ( x ) = ∑ i = 0 ∞ a i x i = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + ⋯ + a n x n … G(x)=\sum_{i=0}^{\infty}a_ix^i=a_0+a_1x+a_2x^2+a_3x^3+\dots+a_nx^n\dots G(x)=i=0aixi=a0+a1x+a2x2+a3x3++anxn这个函数就叫做数列的 生成函数 ( g e n e r a t i n g   f u n c t i o n generating\ function generating function ) 。

指数型生成函数

定义:

对于任意数列 h 0 , h 1 , h 2 , … , h n h_0,h_1,h_2,\dots,h_n h0,h1,h2,,hn 用下面这个函数来表示这个数列: G ( x ) = ∑ i = 0 ∞ h i x i i ! = h 0 + h 1 + h 2 x + h 3 x 2 2 ! + ⋯ + h n x n n ! + … G(x)=\sum_{i=0}^{\infty}h_i\frac{x^i}{i!}=h_0+h_1+h_2x+h_3\frac{x^2}{2!}+\dots+h_n\frac{x^n}{n!}+\dots G(x)=i=0hii!xi=h0+h1+h2x+h32!x2++hnn!xn+

T i p s : \mathscr{Tips:} Tips:在研究生成函数时,我们都假设级数收敛,因为生成函数中的 x x x 没有实际意义。

例子

我们先来考虑这样的一个问题:一个班上有四个 M M MM MM ,现在要从其中选出 n n n 个做自己的老婆,请问有多少种选法? 答案很简单, ( 4 n ) \binom{4}{n} (n4) 对吧。也就是说从 i = 0 i=0 i=0 开始, 问题的答案分别是 1 , 4 , 6 , 4 , 1 , 0 , 0 , 0 , … 1,4,6,4,1,0,0,0,\dots 1,4,6,4,1,0,0,0, 那么它的生成函数应该为 G ( x ) = 1 + 4 x + 6 x 2 + 4 x 3 + x 4 G(x)=1+4x+6x^2+4x^3+x^4 G(x)=1+4x+6x2+4x3+x4 。诶,这不就是二项式展开吗? 于是就有 G ( x ) = ( 1 + x ) 4 G(x)=(1+x)^4 G(x)=(1+x)4

这里有个广义的推论: ( 1 + x ) k = ( k 0 ) x 0 + ( k 1 ) x 1 + ⋯ + ( k k ) x k + … (1+x)^k=\binom k 0x^0+\binom k 1x^1+\dots+\binom k kx^k+\dots (1+x)k=(0k)x0+(1k)x1++(kk)xk+ ,其中,广义的组合数 ( k i ) = k ( k − 1 ) ( k − 2 ) … ( k − i + 1 ) i ! \binom k i=\frac{k(k-1)(k-2)\dots(k-i+1)}{i!} (ik)=i!k(k1)(k2)(ki+1) k k k实数
举个例子: ( 4 6 ) = 4 × 3 × 2 × 1 × 0 × ( − 1 ) 6 ! = 0 , ( − 1.4 2 ) = ( − 1.4 ) × ( − 2.4 ) 2 ! = 1.68 \binom4 6=\frac{4\times3\times2\times1\times0\times(-1)}{6!}=0,\binom{-1.4}2=\frac{(-1.4)\times(-2.4)}{2!}=1.68 (64)=6!4×3×2×1×0×(1)=0(21.4)=2!(1.4)×(2.4)=1.68
这个推论就是经典的 牛顿二项式定理

接下来我们再来考虑一个更复杂的生成函数: 求出 x 1 + x 2 + ⋯ + x k = n x_1+x_2+\dots+x_k=n x1+x2++xk=n 有多少个非负整数解。这道题在 C h t y _ s y q Chty\_syq Chty_syq 的课件中有详细解答过。

把每组解的每个数加 1 1 1 ,就变成了 x 1 + x 2 + ⋯ + x k = n + k x_1+x_2+\dots+x_k=n+k x1+x2++xk=n+k 的正整数解的个数了,这时候我们就可以用 隔板法 来做: 把 n + k n+k n+k 个东西排成一排,在 n + k − 1 n+k-1 n+k1 个间隔中插入 k − 1 k-1 k1 个 “隔板” ,所以答案就是 ( n + k − 1 k − 1 ) = ( n + k − 1 n ) \binom{n+k-1}{k-1}=\binom{n+k-1}{n} (k1n+k1)=(nn+k1) ,则它关于 n n n 的生成函数是 G ( x ) = ( 1 − x ) − k G(x)=(1-x)^{-k} G(x)=(1x)k

推导:
( 1 − x ) − k (1-x)^{-k} (1x)k 按照牛顿二项式展开后可以得到 x n x^n xn 的系数恰好是 ( n + k − 1 n ) \binom{n+k-1}{n} (nn+k1)
因为展开后第n+1项: ( − k n ) ( − x ) n = [ ( − 1 ) n ( n + k − 1 n ) ] [ ( − 1 ) n x n ] = ( n + k − 1 n ) x n \binom{-k}{n}(-x)^n=[(-1)^n\binom{n+k-1}{n}][(-1)^nx^n]=\binom{n+k-1}{n}x^n (nk)(x)n=[(1)n(nn+k1)][(1)nxn]=(nn+k1)xn

经典题目

1、求 Fibonacci 通项公式


在接下来的讲解之前,我们还需要知道一个公式: ∑ i = 0 ∞ x i = 1 1 − x \sum_{i=0}^\infty x^i=\frac 1{1-x} i=0xi=1x1这个公式在之前我已经证明过了,再证一遍: 已 知 等 比 数 列 求 和 公 式 : ∑ i = 0 n x i = 1 − x n + 1 1 − x ∵ − 1 < x < 1 ∴ lim ⁡ n → ∞ x n + 1 = 0 ∴ ∑ i = 0 ∞ x i = lim ⁡ n → ∞ ∑ i = 0 n x i = lim ⁡ n → ∞ 1 − x n + 1 1 − x = 1 1 − x \begin{aligned}&已知等比数列求和公式:\sum_{i=0}^n x^i=\frac{1-x^{n+1}}{1-x}\\ &\because -1i=0nxi=1x1xn+11<x<1nlimxn+1=0i=0xi=nlimi=0nxi=nlim1x1xn+1=1x1证毕。


已知 F i b o n a c c i Fibonacci Fibonacci 递推数列为: F ( n ) = F ( n − 1 ) + F ( n − 2 ) ( n ⩾ 3 ) F 2 = F 1 = 1 \begin{aligned}&F(n)=F(n-1)+F(n-2)\qquad( n\geqslant 3)\\&F_2=F_1=1\end{aligned} F(n)=F(n1)+F(n2)(n3)F2=F1=1设它的生成函数为 g ( x ) g(x) g(x) ,则 g ( x ) g(x) g(x) 为: g ( x ) = x + x 2 + 2 x 3 + 3 x 4 + … = F 1 + F 2 x 2 + F 3 x 3 + … \begin{aligned}g(x)&=x+x^2+2x^3+3x^4+\dots\\&=F_1+F_2x^2+F_3x^3+\dots\end{aligned} g(x)=x+x2+2x3+3x4+=F1+F2x2+F3x3+两边同时乘以 x x x x ⋅ g ( x ) = x 2 + x 3 + 2 x 4 + 3 x 5 + … x\cdot g(x)=x^2+x^3+2x^4+3x^5+\dots xg(x)=x2+x3+2x4+3x5+用上式减下式可得: g ( x ) − x ⋅ g ( x ) = x + x 3 + x 4 + 2 x 5 + 3 x 6 + ⋯ = x + x 2 ⋅ g ( x ) g(x)-x\cdot g(x)=x+x^3+x^4+2x^5+3x^6+\dots=x+x^2\cdot g(x) g(x)xg(x)=x+x3+x4+2x5+3x6+=x+x2g(x)解得, g ( x ) = x 1 − x − x 2 g(x)=\frac x{1-x-x^2} g(x)=1xx2x

由于这个式子不是之前我们见过的 x x x 成等比关系的式子,再根据这是个分式,于是我们可以把它裂项成等比数列无穷级数求和的式子,将下半部分因式分解可得: g ( x ) = x ( 1 − 1 − 5 2 x ) ( 1 − 1 + 5 2 x ) g(x)=\frac{x}{(1-\frac{1-\sqrt 5}2x)(1-\frac{1+\sqrt 5}2x)} g(x)=(1215 x)(121+5 x)x再转变成和的形式: 设 g ( x ) = x ( 1 − 1 − 5 2 x ) ( 1 − 1 + 5 2 x ) = a ( 1 − 1 − 5 2 x ) + b ( 1 − 1 + 5 2 x ) 通 分 一 下 得 到 , g ( x ) = ( 1 − 1 + 5 2 x ) a + ( 1 − 1 − 5 2 x ) b ( 1 − 1 − 5 2 x ) ( 1 − 1 + 5 2 x ) ∴ ( 1 − 1 + 5 2 x ) a + ( 1 − 1 − 5 2 x ) b = x 又 根 据 g ( x ) = 0 可 以 得 到 方 程 组 : { ( 1 − 1 + 5 2 x ) a + ( 1 − 1 − 5 2 x ) b = x ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ① a + b = 0 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ② 将 ② 带 回 到 ① 中 可 以 得 到 , a = − 1 5 ∴ b = 1 5 ⇒ g ( x ) = 1 5 1 ( 1 − 1 + 5 2 x ) − 1 5 1 ( 1 − 1 − 5 2 x ) 将 其 还 原 成 数 列 展 开 得 , g ( x ) = 1 5 ( 1 + 5 2 x + ( 1 + 5 2 ) 2 x 2 + ⋯ + ( 1 + 5 2 ) n x n + …   ) − 1 5 ( 1 − 5 2 x + ( 1 − 5 2 ) 2 x 2 + ⋯ + ( 1 − 5 2 ) n x n + …   ) g ( x ) = F 1 + F 2 x 2 + F 3 x 3 + ⋯ + F n x n + … 于 是 我 们 可 以 得 到   F i b o n a c c i   的 通 项 公 式 : F n = 1 5 ( 1 + 5 2 ) n − 1 5 ( 1 − 5 2 ) n \begin{aligned}&设g(x)=\frac{x}{(1-\frac{1-\sqrt 5}2x)(1-\frac{1+\sqrt 5}2x)}=\frac a{(1-\frac{1-\sqrt 5}2x)}+\frac b{(1-\frac{1+\sqrt 5}2x)}\\&通分一下得到,\\&g(x)=\frac{(1-\frac{1+\sqrt 5}2x)a+(1-\frac{1-\sqrt 5}2x)b}{(1-\frac{1-\sqrt 5}2x)(1-\frac{1+\sqrt 5}2x)}\\&\therefore (1-\frac{1+\sqrt 5}2x)a+(1-\frac{1-\sqrt 5}2x)b=x\\&又根据g(x)=0可以得到方程组:\\&\begin{cases}(1-\frac{1+\sqrt 5}2x)a+(1-\frac{1-\sqrt 5}2x)b=x&·······①\\a+b=0&·······②\end{cases}\\&将②带回到①中可以得到,a=-\frac 1{\sqrt 5}\\&\therefore b=\frac 1{\sqrt 5}\\&\Rightarrow g(x)=\frac 1{\sqrt 5}\frac 1{(1-\frac{1+\sqrt 5}2x)}-\frac 1{\sqrt 5}\frac 1{(1-\frac{1-\sqrt 5}2x)}\\&将其还原成数列展开得,\\&g(x)=\frac 1{\sqrt 5}(\frac{1+\sqrt 5}2x+(\frac{1+\sqrt 5}2)^2x^2+\dots+(\frac{1+\sqrt 5}2)^nx^n+\dots)-\frac 1{\sqrt 5}(\frac{1-\sqrt 5}2x+(\frac{1-\sqrt 5}2)^2x^2+\dots+(\frac{1-\sqrt 5}2)^nx^n+\dots)\\&g(x)=F_1+F_2x^2+F_3x^3+\dots+F_nx^n+\dots\\&于是我们可以得到\ Fibonacci\ 的通项公式:\\&F_n=\frac{1}{\sqrt{5}}\left(\frac{1+\sqrt{5}}{2}\right)^{n}-\frac{1}{\sqrt{5}}\left(\frac{1-\sqrt{5}}{2}\right)^{n}\end{aligned} g(x)=(1215 x)(121+5 x)x=(1215 x)a+(121+5 x)bg(x)=(1215 x)(121+5 x)(121+5 x)a+(1215 x)b(121+5 x)a+(1215 x)b=xg(x)=0{(121+5 x)a+(1215 x)b=xa+b=0a=5 1b=5 1g(x)=5 1(121+5 x)15 1(1215 x)1g(x)=5 1(21+5 x+(21+5 )2x2++(21+5 )nxn+)5 1(215 x+(215 )2x2++(215 )nxn+)g(x)=F1+F2x2+F3x3++Fnxn+ Fibonacci Fn=5 1(21+5 )n5 1(215 )n哎呦卧槽,这可把我码的累死了!!!

你可能感兴趣的:(学习笔记)