指数型生成函数 及 多项式求ln

指数型生成函数

我们知道普通型生成函数解决的是组合问题,而指数型生成函数解决的是排列问题

对于数列\(\{a_n\}\),我们定义其指数型生成函数为

\[G(x) = a_0 + a_1x + a_2\frac{x^2}{2!} + a_3\frac{x^3}{3!} + a_4\frac{x^4}{4!} + \dots = \sum\limits_{i = 0}^{\infty} a_i\frac{x^i}{i!} \]

那么对于两个数列\(\{a_n\}\)\(\{b_n\}\),其对应成生成函数为

\[G(x) = \sum\limits_{i = 0}^{\infty} a_i\frac{x^i}{i!} \]

\[F(x) = \sum\limits_{i = 0}^{\infty} b_i\frac{x^i}{i!} \]

那么

\[\begin{aligned} F(x) \centerdot G(x) &= (\sum\limits_{i = 0}^{\infty} a_i \frac{x^i}{i!})(\sum\limits_{i = 0}^{\infty} b_i \frac{x^i}{i!}) \\ &= \sum\limits_{n = 0}^{\infty} (\sum\limits_{i = 0}^{\infty} \frac{a_ix^i}{i!} \centerdot \frac{b_{n - i}x^{n - i}}{(n - i)!})x^n \\ &= \sum\limits_{n = 0}^{\infty} (\sum\limits_{i = 0}^{\infty} {n \choose i} a_i b_{n - i}) \frac{x^n}{n!} \end{aligned} \]

由此可见两个指数型生成函数相乘,如果\(x^i\)的系数表示的是选择\(i\)个该物品的方案数,那么\(F(x) \centerdot G(x)\)\(x^i\)的系数表示的就是从\(a\)\(b\)中选出\(i\)个物品的排列数

一般地,对于多重集合\(M\),从中选取\(k\)个元素的排列数,若限定元素\(a_i\)出现的次数集合为\(M_i\),则该组合数序列的生成函数为

\[\prod\limits_{i = 1}^{n}(\sum\limits_{m \in M_i} \frac{x^m}{m!}) \]

泰勒展开式

通常,在指数型生成函数的使用过程中,一般都会用到泰勒展开式:

\[e^{x} = \sum\limits_{i = 0}^{\infty} \frac{x^i}{i!} = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \frac{x^4}{4!} + \dots + \frac{x^n}{n!} + \dots \]

扩展的一些式子:

\[\frac{e^x + e^{-x}}{2} = \sum\limits_{i = 0}^{\infty} \frac{x^{2i}}{(2i)!} \]

\[\frac{e^x - e^{-x}}{2} = \sum\limits_{i = 0}^{\infty} \frac{x^{2i + 1}}{(2i + 1)!} \]

还有一些比较有用的公式:

\[\frac{1}{1 - x} = \sum\limits_{i = 0}^{\infty} x^i \]

\[ln(1 + x) = \sum\limits_{i = 0}^{\infty} (-1)^{i} \frac{x^{i + 1}}{i + 1} \]

\[(1 + x)^{a} = \sum\limits_{i = 0}^{\infty} a^{\underline{i}}\frac{x^i}{i!} \]

\[sin(x) = \sum\limits_{i = 0}^{\infty} (-1)^{i}\frac{x^{2i + 1}}{(2i + 1)!} \]

\[cos(x) = \sum\limits_{i = 0}^{\infty} (-1)^{i}\frac{x^{2i}}{(2i)!} \]

多项式求\(ln\)

意义?
我们要求将一个集合大小为\(n\)的方案数,逆向思考
假如我们求出了生成函数\(F(x)\),其中\(x^i\)项的系数表示集合大小为\(i\)的方案数
我们构造一个函数

\[G(x) = \frac{F(x)}{1!} + \frac{F^2(x)}{2!} + \frac{F^3(x)}{3!} + \dots \]

观察式子发现\(G(x)\)\(x^i\)的系数实际上就是选出若干集合大小刚好为\(i\)的方案数
假设这个方案数很好求,我们能很快构造出\(G(x)\),我们现在要求\(F(x)\)的话就要使用多项式求\(ln\)
观察

\[G(x) = \frac{F(x)}{1!} + \frac{F^2(x)}{2!} + \frac{F^3(x)}{3!} + \dots = e^{F(x)} \]

\[F(x) = lnG(x) \]

求法

假如我们要求\(G(x) = lnF(x)\)
求导得

\[G'(x) = \frac{F'(x)}{F(x)} \]

\[G(x) = \int \frac{F'(x)}{F(x)} dx \]

所以我们只需多项式求导,多项式求逆,多项式乘法,多项式积分
复杂度\(O(nlogn)\)

例题BZOJ3456城市规划

posted @ 2018-06-15 16:11  Mychael  阅读(4537)  评论(0编辑  收藏  举报