[正睿集训2021] 生成函数

导数

这里补充一些基础知识,先介绍一下所谓链式法则,也就是复合函数的求导:

\[f(g(x))'=f'(g(x))g'(x) \]

\[f(g(x+dx))=f(g(x)+dx\times g'(x))=f(g(x))+dx\times g'(x)\times f'(d(x)) \]

然后根据导数的基本定义就可以证明这个法则了,还有一个可以证明的分部法则:

\[(uv)'=u'v+uv' \]

再讲一个东西 \(ln(x)\) 怎么求导:

\[\frac{ln(x+dx)-ln(x)}{dx}=ln((1+\frac{dx}{x})^{\frac{1}{dx}})=\frac{1}{x}ln((1+\frac{dx}{x})^{\frac{x}{dx}}) \]

然后 \(ln\) 里面就是这个东西:\(\lim_{n\to\infty} (1+\frac{1}{n})^n=e\),所以 \(ln(x)'=\frac{1}{x}\)

譬如对于 \((1-x)^{-1}\) 求导,就不要乱用结论了,老实通分去算就行了。

泰勒展开

在生成函数中常用,取一个点 \(x_0\) 来逼近原函数的方法:

\[f(x)=\sum_{i=0}^{n}\frac{f^{(i)}(x_0)}{i!}(x-x_0)^i \]

生成函数推通项

这个东西还是很常用的,思路就是我们先把原函数乘几下,然后相减只剩下低次项,就可以得到原函数的闭形式,再把闭形式展开就可以得到通项式了。

例1

首先我们来推一下 斐波那契数列的通项公式

\[A=a_0+a_1x+a_2x^2+a_3x^3... \]

\[xA=0+a_0x+a_1x^2+a_2x^3... \]

\[x^2A=0+0+a_0x^2+a_1x^3... \]

\[(1-x-x^2)A=1 \]

\[A=\frac{1}{1-x-x^2} \]

上面的等式是可以展开了,先用求根公式把它化成两个闭形式相乘,然后两个闭形式分别展开,就可以得到斐波那契数列的通项公式了。

例2

下面我们来推一下 卡特兰数的通项公式 ,设 \(G(x)\) 表示卡特兰数的生成函数。

\[c_n=\sum_{i=0}^{n-1}c_ic_{n-i-1} \]

\[G(x)^2=\sum_{n=0}^\infty\sum_{m=0}^nc_mc_{n-m}=\sum_{n=0}^\infty c_{n+1}x^n \]

那么不难建立 \(G(x)\)\(G(x)^2\) 的等式关系:

\[G(x)=1+xG(x)^2 \]

\[G(x)=\frac{1\pm\sqrt{1-4x}}{2x} \]

这里解出了两种闭形式,但有一种需要舍去,当 \(G(x)=\frac{1+\sqrt{1-4x}}{2x}\) 时,则 \(\lim_{x\to0}G(x)=\infty\),这与 \(G(x)\) 的常数项为 \(1\) 矛盾。那么 \(G(x)=\frac{1-\sqrt{1-4x}}{2x}\),现在的问题变成了把这个闭形式展开。

先搞 \(\sqrt{1-4x}\),可以用泰勒展开,我们在 \(x=0\) 处展开它,求几次导就发现展开的结果是:

\[-\sqrt{1-4x}=-(1-4x)^{\frac{1}{2}} \]

\[\frac{1-\sqrt{1-4x}}{2x}=\frac{1}{2x}\sum_{k=1}^\infty \frac{1\cdot 3\cdot\cdot\cdot(2k-3)}{2^k}\frac{(4x)^k}{k!} \]

\(c_k=\frac{1}{2}\frac{1\cdot 3\cdot\cdot\cdot(2k-1)}{2^{k+1}}\frac{4^{k+1}}{(k+1)!}=\frac{(2k)!}{(k+1)!k!}=\frac{1}{k+1}{2k\choose k}\)

例3

下面我们来推一下 杨辉三角里对角线和的通项公式 ,即 \(a_n=\sum_{i=0}^n{n+i\choose2i}\)

\[A(x)=\sum_{n=0}^\infty a_nx^n \]

\[A(x)=\sum_{n=0}^\infty x^n\sum_{i=0}^n{n+i\choose 2i} \]

\[A(x)=\sum_{n=0}^\infty\sum_{i=0}^n{n-i+2i\choose2i}x^{n-i}(\sqrt x)^{2i} \]

\[A(x)=\sum_{a=0}^\infty\sum_{2|b}{a+b\choose b}x^a(\sqrt x)^b \]

发现上面的柿子很像二项式展开的形式,但是 \(b\) 是偶数这个要求很烦人,如果 \(b\) 是奇数那他的结果就不会计入 \(x\) 的整数次方了,所以有这些项也不用管,那么就可以写成下面的形式:

\[A(x)=\sum_{a=0}^\infty\sum_{b=0}^\infty{a+b\choose b}x^a(\sqrt x)^b \]

\[A(x)=\sum_{i=0}^\infty(x+\sqrt x)^i \]

\[A(x)=\frac{1}{1-\sqrt x-x} \]

\(F(x)=\frac{1}{1-x-x^2}\) 是斐波那契数列的母函数,那么 \(A(x^2)=F(x)\)

对应一下系数就会发现 \(a_n=fib(2n)\)

求母函数的闭形式

例1

求序列 \(<1,3,5...2n-1...>\) 作为系数的母函数闭形式:

\[F(x)=\sum_{i=0}^\infty(2i+1)x^i \]

\[F(x)=2\sum_{i=0}^\infty(i+1)x^i-\sum_{i=0}^\infty x^i \]

这个 \((i+1)\) 可以通过求导消去,这样就好写闭形式了,对母函数求导等价于对闭形式求导:

\[F(x)=2\sum_{i=0}^\infty(x^{i+1})'-\sum_{i=0}^\infty x_i \]

\[F(x)=2(\frac{x}{1-x})'-\frac{1}{1-x}=\frac{1+x}{(1-x)^2} \]

例2

求圆排列 \(c_n=(n-1)!\) 的指数型母函数:

\[\hat C(x)=\sum_{n=1}^\infty \frac{x^n}{n} \]

你可能觉得上面的东西化不动了,你要知道 \(ln(1+x)\)\(0\) 处的泰勒展开是这样的:

\[ln(1+x)=\frac{x}{1}-\frac{x^2}{2}+\frac{x^3}{3}...+(-1)^{n+1}\frac{x^n}{n} \]

同理,我们把 \(x\) 换成 \(-x\) 就可以得到:

\[ln(1-x)=-(\frac{x}{1}+\frac{x^2}{2}+\frac{x^3}{3}...) \]

那么原式又可以化简了。

\[\hat C(x)=-ln(1-x)=ln(\frac{1}{1-x}) \]

还有一个梦幻联动,设 \(\hat P(x)\) 是全排列代表的指数型母函数:

\[\hat P(x)=e^{\hat C(x)} \]

剩下还有两个例题是真的肝不动了,康康oneindark的博客吧。

大朋友和多叉树

题目描述

定义一棵树是合法的,当且仅当每个节点的孩子个数都在给定集合 \(D\) 中,求有多少棵不同的,叶节点个数为 \(s\) 的合法树。

\(s\leq 1e5,|D|\leq 1e5\)\(2\leq d[i]\leq s\)

解法

\(f(i)\) 为根节点权值为 \(i\) 的树有多少个,\(F(x)\) 表示其生成函数,如果我们枚举孩子的个数,就能得到这样的方程:

\[F(x)=x+\sum_{j\in D}F(x)^j \]

其中单个的 \(x\) 表示是叶子的情况,这种情况不能被转移到所以要加上,改下写法可以用 拉格朗日反演 :

\[F(x)-\sum_{j\in D}F(x)^j=x \]

\(G(x)=x-\sum_{j\in D}x^j\),还有 \(G(F(x))=1\),由于知道了 \(G(x)\) 可以反演出 \(F(x)\) 的任意一项:

\[[x^n]F(x)=[x^{-1}]\frac{1}{G(x)^n} \]

然后考虑怎么求这个柿子,因为 \(G(x)\) 的常数项为 \(0\) 所以不能直接求逆元,因为 \(G(x)\) 有一次项所以我们把他左移一格就行了,设左移之后的生成函数是 \(G'(x)\),求 \(G'(x)\) 在模 \(x^n\) 意义下的逆元即可,体现在式子上是这样的:

\[[x^n]F(x)=[x^{n-1}](\frac{x}{G(x)})^n=[x^{n-1}](\frac{1}{G'(x)})^n \]

类似地,如果最低位是 \(k\) 次项那么左移 \(k\) 就行了。

[TJOI2015] 概率论

题目描述

点此看题

解法

因为 \(n\) 个节点的二叉树个数就是卡特兰数 \(g(n)\),那么我们算出各种情况的总叶子个数就行了,设 \(f(n)\) 表示总叶子个数,那么转移:

\[f(n)=2\sum_{i=0}^{n-1}f(i)\times g(n-i-1) \]

\(G(x)\) 是卡特兰数的生成函数,\(F(x)\) 是答案的生成函数,那么有:

\[F(x)=2xG(x)F(x)+x \]

那么带入 \(G(x)=\frac{1-\sqrt{1-4x}}{2x}\) 就可以得到 \(F(x)=\frac{x}{\sqrt{1-4x}}\),因为我们知道 \(g(n)=\frac{1}{n+1}{2n\choose n}\),看看能不能把 \(f(n)\) 也找出通项公式来。由于两者的生成函数是很相像的,可以借助卡特兰数来得到通项公式:

\[(xG(x))'=\frac{1}{\sqrt {1-4x}}=\frac{F(x)}{x} \]

所以对于单个的项来说:\(f_{n+1}=(n+1)g_n\),那么答案就是 \(\frac{ng_{n-1}}{g_n}=\frac{n(n+1)}{2(2n-1)}\)

posted @ 2021-02-18 22:14  C202044zxy  阅读(184)  评论(0编辑  收藏  举报