拉格朗日反演学习笔记
拉格朗日反演
复合
定义形式幂级数 \(F(x),G(x)\) 的复合为:\(F\circ G=F(G(x))=\sum_{i=0}([x^i]F(x))G(x)^i\)。
上式有定义(收敛)当且仅当 \(F\) 有限(多项式)或者 \(G\) 的常数项为 \(0\)。
【模板】多项式复合函数
存在厉害的 \(O((n\log n)^{1.5})\) 做法。
但是更为简单的做法是 \(O(n^2+n\sqrt n \log n)\) 的分块暴力(跑得据说比实现不精细的 \(O((n\log n)^{1.5})\) 快)。
复合逆
形式幂级数 \(F(x),G(x)\) 常数项均为 \(0\),且一次项不为 \(0\),
若 \(G\circ F=x\),则有 \(F\circ G=x\),称 \(F,G\) 互为复合逆
若 \(G\circ F=x\),则 \(F\circ G=x\)
证明:
首先,满足 \(F\circ H=x\) 且常数项为 \(0\),一次项不为 \(0\) 的多项式 \(H\) 一定存在。
那么 \(G(F(x))=x,F(H(x))=x\)。
则 \(G(F(H(x)))=G(x),G(F(H(x)))=H(x)\)。
故 \(G(x)=H(x)\),证毕。
事实上,常数项均为 \(0\),且一次项不为 \(0\) 的多项式构成群。
拉格朗日反演的多种形式
若幂级数 \(F(x),G(x)\) 常数项均为 \(0\),一次项不为 \(0\),且 \(F,G\) 互为复合逆,\(n,k\in \Z\)。
最初的形式:
进行简单的变换,一般使用的形式:
\(H\) 是一个一般的形式幂级数,将形式 2 线性组合起来,得到扩展拉格朗日反演:
以及 EI 提出规避求 \(n\) 的逆与对 \(H\) 求导的另类拉反:
证明
手动求解复合逆
对于一个封闭形式的幂级数,例如 \(\ln(1+2x)\),我们直接复合上复合逆解方程就行。
对于我们仅有一个方程(不含微分)的幂级数,我们在方程的一边留下一个单项 \(x\),另一边所有的 \(F\) 换成 \(x\) 即为其复合逆。
小试牛刀
求 \(n\) 个点有标号无根树数量。是的,是 \(n^{n-2}\),请使用拉反解决好吗。
记 \(F(x)\) 表示答案的 EGF,那么有 \(F(x)=x\exp(F(x))\)。
\(F(x)\) 的复合逆即为 \(G(x)=\dfrac{x}{e^x}\)。
直接使用拉反:
得到答案 \(n^{n-2}\)。
求解 \([x^n]C^k(x)\),其中 \(C(x)\) 为卡特兰数。
考虑卡特兰数生成函数方程:\(C(x)=xC^2(x)+1\)。
由于 \([x^0]C(x)\) 非 \(0\),其没有复合逆,我们构造其去掉常数项的形式幂级数 \(B(x)=C(x)-1\),那么 \(B(x)=x(B(x)+1)^2\)。
所求即为 \([x^n](B(x)+1)^k\),令 \(H(x)=(x+1)^k\),则所求为 \([x^n]H\circ B\)。
计算 \(B\) 的复合逆 \(A\),\(A=\dfrac{x}{(x+1)^2}\)。
使用扩展拉反:
ABC222H,我们忽略组合计数,得到生成函数方程的部分。
求 \([x^n]F\),满足 \(F=x(F+(F+1)^2)^2\)。
计算其复合逆 \(G=\dfrac{x}{(x+(x+1)^2)^2}\)。
使用拉反:
一个更复杂的具体应用是广义二项级数,可以参考:广义二项级数与广义指数级数
在 \(H\) 求导很痛苦的情况下,可以考虑使用另类拉反。但好像 EI 认为另类拉反更大的作用是规避了求 \(n\) 的逆。