首页 > 其他 > 详细

生成函数简介

时间:2021-04-14 23:43:16      阅读:20      评论:0      收藏:0      [点我收藏+]

定义

序列 \(A\) 的生成函数(又称母函数,generating function),是一种形式幂级数,其每一项的系数都可以提供关于 \(A\) 的信息。

形式幂是指,无论函数的自变量的取值是多少,都不影响原序列的信息。

常用的有普通生成函数指数生成函数

生成函数经常被用于处理组合/排列问题。

普通生成函数

开放形式

我们看这样一个模型:

有三堆颜色不同的球,分别为 \(A,B,C\)。其中,\(A\) 有 3 个,\(B\) 有 4 个,\(C\) 有 2 个。问从中取出 4 个球进行组合的方案数是多少?

我们定义多项式 \(A(x)=1+x+x^2\),系数表示 1 种方案,指数表示取几个。\(B,C\) 同理。

那么最后的答案即为 \((A*B*C)(x)\) 的第 4 项上的系数。因为第 4 项的系数表示取 4 个的方案数。

可以乘起来的原因是多项式乘法的本质是乘法分配律后同阶相加。

我们称形如 \(F(x)=\sum_{i=0}^n a_ix^i\) 为序列 \([a_1,a_2,\dots,a_n]\) 的普通生成函数。

再来一个例子:

若有面值为 \(1,2,3,4\) 的钱币各 1 枚,请问一共能凑出多少种面值?

\((1+x)(1+x^2)(1+x^3)(1+x^4)\) 的项数即为答案。如果至少去一个就去掉常数项。

封闭形式

我们在实际运用中,直接做形式幂级数的形式十分不方便。我们可不可以找到一个简洁的形式使其脱离多项式,尤其是项数 \(\rightarrow \infty\) 的时候。

我们拿 \([1,1,1,\dots]\) 的生成函数 \(F(x)=\sum_{i\geqslant0}x^i\) 来举例:

\[\begin{aligned} F(x)x+1 &= F(x) \F(x) &= \frac{1}{1-x} \end{aligned} \]

亦或者等比数列 \([1,a,a^2,a^3,\dots]\) 的生成函数 \(F(x)=\sum_{i\geqslant0}a^ix^i\)

\[\begin{aligned} F(x)ax+1 &= F(x) \F(x) &= \frac{1}{1-ax} \end{aligned} \]

这里列举一些:

\[\begin{aligned} &\sum_{i\geqslant0}x^i=\frac{1}{1-x}\&\sum_{i\geqslant0}a^ix^i=\frac{1}{1-ax}\&\sum_{i\geqslant0}x^{2i}=\frac{1}{1-x^2}\&\sum_{i\geqslant0}(i+1)x^i=\frac{1}{(1-x^2)} \end{aligned} \]

我们一般先将初始的几个函数转成封闭形式,乘起来后再转回开放形式得到答案。

生成函数简介

原文:https://www.cnblogs.com/Lewis-Li/p/generating_function.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!