拉格朗日反演小记

前言

在尝试做 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 - 博客园(这篇略简略)

相关推荐
AI是这个时代的魔法2 天前
The Action Replay Process
数学·算法·随机决策过程
啊阿狸不会拉杆3 天前
人工智能数学基础(十)—— 图论
人工智能·python·数学·算法·图论
啊阿狸不会拉杆8 天前
人工智能数学基础(五):概率论
人工智能·python·数学·算法·概率论
啊阿狸不会拉杆10 天前
人工智能数学基础(四):线性代数
人工智能·python·数学·算法·机器学习
量子位12 天前
数学家们仍在追赶天才拉马努金
人工智能·数学
是数学系的小孩儿12 天前
数值分析、数值代数之追赶法
数学·matlab·电脑
西电研梦13 天前
学硕热度下降,25西电数学与统计学院(考研录取情况)
考研·数学·统计学·西安电子科技大学·应用经济
所以遗憾是什么呢?22 天前
扩展欧几里得算法【Exgcd】的内容与题目应用
数学·算法·数论·扩展欧几里得·exgcd
lskkkkkkkkkkkk23 天前
强化学习的数学原理(六) Stochastic Approximation & Stochastic Grandient Descent
数学·算法·强化学习