前言
在尝试做 P7439 的时候被控到死,于是学习了拉格朗日反演。因为笔者非常弱,所以这篇博客大多都是复述别人的话(?)讲的内容可能有很多谬误而且可能不深刻,请谨慎食用。
复合
记 \((F\circ G)(x)\) 表示 \(F(G(x))\),\(f_i=[x^i]F(x),g_i=[x^i]G(x)\)。将 \(F(G(x))\) 写开就是:
\[\sum f_iG^i(x) \]
复合的运算满足结合律但不一定满足交换律,即:
\[(F\circ G)\circ H=F\circ (G\circ H) \]
然后说一下复合问题的解法。一般的做法是根号分治,然后预处理每个块内相对位置的值和每个块第一个位置的值,然后就可以做了。时间复杂度 \(O(n^2+n\sqrt n\log n)\)。
其实还有 \(O(n\log^2n)\) 的科技解法,这是一位来自 japan 的大神提出的,又有大神在洛谷题解里说明了此做法。但是笔者不是很清楚,就不误人子弟了,放个链接在此,有兴趣可前去研究。
组合意义
我们可以把 \(G\) 看成将一个组合类排成长度为 \(n\) 的序列。如果是 \(\text{EGF}\) 的话,除以 \(n!\) 就相当于取出一个大小为 \(n\) 的集合,而外层的 \(F\) 就是将这 \(n\) 个元素组合成新对象的方案数。这就是 \(\text{Substitution}\) 构造。
接下来给出一些基础(?)的复合。
右复合
-
复合 \(cx\):通过定义可以将常数直接提出来,\(f_n:=f_nc^n\)。
-
复合 \(x^a\):当 \(a\) 为正有理数的时候,令 \(a={p\over q}\),如果所有 \(q\mid i,f_i\neq0\),就将 \(f_i\) 移到 \(f_{ia}\);否则,一般没有有效处理。
-
复合 \(x+c\):直接用二项式定理拆:
\[\begin{aligned} F(x+c) &= \sum_{i\ge0}f_i(x+c)^i\\ &= \sum_{i\ge0}f_i\sum_{j=0}^i{i\choose j}x^jc^{i-j}\\ &= \sum_{j\ge0}x^j\sum_{i\ge0}{i\choose j}f_ic^{i-j}\\ \end{aligned} \]
可以写成卷积形式解决。
-
复合 \(\sqrt{x+1}\):可以分奇偶讨论。对偶数次的系数,可以单独提取出来分步复合;对奇数次的系数有:
\[\begin{aligned} (x+1)^{n+{1\over2}} &= \sum_{i\ge0}{n+{1\over2}\choose i}x^i\\ &= \sum_{i\ge0}x^i{(n+{1\over2})(n-{1\over2})\cdots(n-i+{3\over2})\over i!}\\ &= \sum_{i\ge0}x^i{(2n+1)(2n-1)\cdots(2n-2i+3)\over i!2^i}\\ &= \sum_{i\ge0}x^i{(2n+1)!!\over i!2^i(2n-2i+1)!!}\\ \end{aligned} \]
在一些复合中如果所有幂存在简单递推可以用分治 \(\text{NTT}\) 做。
左复合
假设现在需要左复合 \(G(x)\),并且我们知道关于 \(x,G,G'\dots\) 的方程。设 \(H(x)=G(F(x))\),我们就可以用 \(H,G\) 等表示 \(G^{(k)}\)。然后就这样不停代换,最后得到只有 \(H\) 和 \(G\) 的微分方程就可以做了。
复合逆
对于复合运算,若令 \(H=F\circ G\),有:
\[H(x)=x \]
我们称 \(G\) 是 \(F\) 的复合逆。
对于复合逆,其实常数项可能非 0,但是为了方便,我们规定常数项为 0,而一次项系数非零。注意复合逆的确定方式可类比乘法逆,我们将 \(F\) 和 \(G\) 都写开就可以得到:
\[\sum_{i\ge0} f_i\left(\sum_{j>0} g_jx^j\right)^i=x \]
我们把左式 \(x\) 每项的系数都提取出来就可以得到一些等式,然后又知道 \(f_i\),就可以从低次到高次得到 \(g_i\)。
形式洛朗级数
许多形式幂级数操作即使推广到负指数的情况下依旧是成立的。对于一个常数项非零的形式幂级数,我们乘上一个偏移量 \(x^{n_0},n_0\in\mathbb {Z},a_{n_0}\neq0\),得到一个下标从 \(n_0\) 开始向正无穷延伸的幂级数,称为形式洛朗级数。
写出来是这个样子的:
\[F(x)=x^{n_0}\left(\sum_{i\ge0}a_{i+n_0}x^i\right) \]
其中 \(a_{n_0}\neq0\)。
可以发现任意一个非零形式洛朗级数都有乘法逆。所以其实形式洛朗级数的四则运算与普通形式幂级数一样,所以为什么要把幂次搞成负数呢?
在开始之前我们先介绍一下它的形式除法。对洛朗级数 \(A,B\),设其 \(n_0\) 分别为 \(n_a,n_b\),定义 \(A\over B\) 是一个洛朗级数 \(C\),
\[C(x)=x^{n_a-n_b}{\sum_{i\ge0}a_{i+n_0}x^i\over\sum_{j\ge0}b_{j+n_0}x^j} \]
因为右边那坨分式是两个普通幂级数的除法,左边是新的 \(n_0\),所以 \(C\) 也是一个形式洛朗级数。
我们将 \(F\) 求导,按理来说对于 \(\forall i, x^i\) 的系数都会传给 \(x^{i-1}\),但是当 \(i=0\) 的时候系数是不会传递的,于是 \(x^{-1}\) 的系数就变成了 0。这是一个特殊的"点",我们称其为洛朗级数的形式留数 。下面请看 \(\text{VCR}\)。
引理:对于幂级数 \(F(x)\) 满足 \(n_0=1\),那么对于 \(k\in\mathbb Z\),有:
\[[x^{-1}]F'F^k=[k=-1] \]
证明考虑 \(k\neq-1\) 时,对左式逆用形式链式求导得到:
\[[x^{-1}]\left({1\over1+k}F^{k+1}\right)' \]
根据形式留数的定义可发现这个是 0。
若 \(k=-1\),有:
\[{F'\over F}=x^{-1}{1+2{a_2\over a_1}x+3{a_3\over a_1}x^2\cdots\over1+{a_2\over a_1}x+{a_3\over a_1}x^2\cdots} \]
这个东西其实就是 \(n_0=-1,a_{n_0}=1\) 的形式洛朗级数,证毕。
至此,万事俱备,只欠东风!
拉格朗日反演
终于到本体了。
对于幂级数 \(F(x)\) 满足 \(n_0=1,G(F(x))=x\) 是其复合逆,那么对于 \(n,k\in\mathbb Z\),有
\[n[x^n]F^k=k[x^{-k}]G^{-n} \]
下面开始证明:
先求导,然后拆开 \(F\),有
\[\begin{aligned} F^k(G(x)) &= x^k \\ (F^k)'(G)G' &= kx^{k-1} \\ \sum_ii\left([x^i]F^k\right)G^{i-1}G' &= kx^{k-1} \\ \sum_ii\left([x^i]F^k\right)G^{i-1-n}G' &= kx^{k-1}G^{-n} \\ \end{aligned} \]
提取 \(x^{-1}\) 的系数,有:
\[[x^{-1}]\sum_ii\left([x^i]F^k\right)G^{i-1-n}G' = [x^{-1}]kx^{k-1}G^{-n} \]
现在我们将左边的式子换一下位置,看好了,
\[\sum_ii\left([x^i]F^k\right){\color{blue}[x^{-1}]G^{i-1-n}G'} = [x^{-1}]kx^{k-1}G^{-n} \]
蓝色标记的部分就是上文证明的引理,直接用得到:
\[n[x^n]F^k=[x^{-1}]kx^{k-1}G^{-n}=k[x^{-k}]G^{-n} \]
推广到其线性组合有扩展版,这更实用于 OI。
\[[x^n]H(F)={1\over n}[x^{n-1}]H'\left({x\over G}\right)^n \]
另类拉格朗日反演
在一些情况下纯粹利用拉格朗日反演并不一定能帮助我们求算系数,根据需要又有了另类拉格朗日反演。
对于幂级数 \(F(x)\) 满足 \(n_0=1,G(F(x))=x\) 是其复合逆,那么对于 \(n,k\in\mathbb Z\),有
\[[x^n]F^k=[x^{-k-1}]G'G^{-n-1} \]
证明:
\[\begin{aligned} F^k(G(x)) &= x^k \\ F^k(G(x))G'G^{-n-1} &= x^kG'G^{-n-1} \\ [x^{-1}]\sum_i\left([x^i]F^k\right)G'G^{i-n-1} &= [x^{-1}]x^kG'G^{-n-1} \\ [x^n]F^k &= [x^{-1}]x^kG'G^{-n-1} \\ &= [x^{-k-1}]G'G^{-n-1} \end{aligned} \]
类似扩展另类拉格朗日反演的复合形式:
\[[x^n]H(F)=[x^{n}]HG'\left({x\over G}\right)^{n+1} \]
到此,恭喜你通关了拉格朗日反演这个知识点,然后因为一些原因笔者鸽掉了练习题,这里放一个找到的有关题的博客。
后记
这篇博客告诉了我们不要随意去开多项式工业,不然你就会陷入很深但又永不循环的沼泽,会浪费掉大量时间(?)
还是希望等笔者有了一定的数学能力后能写出更多优质的博客吧()
参考资料
浅谈多项式复合和拉格朗日反演 - 洛谷专栏(这篇不错)
从多项式到 Laurent 级数:Lagrange 反演入门 - gsj_z - 博客园(这篇有点晦涩难懂)
拉格朗日反演 - yyyyxh - 博客园(这篇略简略)