膜膜膜
Tiw 永远的神!
引入
拉格朗日反演及其扩展用于求一类
F(G(x))=H(x) 的问题,其中
F(x),H(x) 为已知多项式函数,
G(x) 为待求函数。但其只能在
O(nlogn) 的时间内求得
G(x) 的某一项系数。
拉格朗日反演
拉格朗日反演用于在
O(nlogn) 的时间求
[xn]G(x)(
[xn]G(x) 表示
G(x) 的
n 次项的系数,下同),其中
G(x) 满足
F(G(x))=x,
F(x) 为已知多项式,而
G(x) 又称为
F(x) 的复合逆。
有一个结论是若
F(G(x))=x,则
G(F(x))=x。
感性理解是把
F(x) 作为
x 代入
F(G(x))=x 得到
F(G(F(x)))=F(x),再把最外层的
F(x) 拆掉即可,然而这显然是 错误 的证法,因为多项式函数一般不是单调(即不是双射,没有一一对应)的。当然你也可以理解为
F(x) 和
G(x) 互为反函数(事实上非双射的函数也没有反函数),这个结论就显然成立了。具体证法我没找到,所以就咕着吧
于是可以看出,
[x0]F(x)=[x0]G(x)=0,[x1]F(x)=0,[x1]G(x)=0,不然最终结果不可能只剩下一个
x。
接下来开始推导,令
G(x)=∑i=1ngi⋅xi (g1=0),代入
G(F(x))=x 得到
i=1∑ngi⋅Fi(x)=x 两边同时求导(注意
Fi(x) 是幂函数与多项式函数的复合函数求导)得
i=1∑ngi⋅i⋅Fi−1(x)⋅F′(x)=1 要求
n 次项,就将
n 次项提出,得到
n⋅gn⋅Fn−1(x)⋅F′(x)+i=1∑n−1gi⋅i⋅Fi−1(x)⋅F′(x)=1 两边同时除以
Fn(x) 得
n⋅gn⋅F(x)F′(x)+i=1∑n−1gi⋅i⋅Fi−n−1(x)⋅F′(x)=Fn(x)1 注意到
(Fk(x))′=kFk−1(x)F′(x) 即
Fk(x)F′(x)=k+1(Fk+1(x))′,代入上式中得
n⋅gn⋅F(x)F′(x)+i=1∑n−1gi⋅i−ni⋅(Fi−n(x))′=Fn(x)1 这时应满足对应系数相等,为了只留下
gn 项,我们观察发现,由于
F(x) 没有常数项,于是
Fi−n(x) 没有常数项,于是
(Fi−n(x))′ 没有
−1 次项!所以考虑等式两边同时取
−1 次项:
[x−1]n⋅gn⋅F(x)F′(x)=[x−1]Fn(x)1 对于等式右边:
[x−1]Fn(x)1=[xn−1]Fn(x)xn=[xn−1](xF(x))n1 对于等式左边:
F(x)F′(x)=f1x+f2x2+⋯+fnxnf1+2f2x+3f3x2+⋯+nfnxn−1=f1x(1+f1f2x+⋯+f1fnxn−1)f1+2f2x+3f3x2+⋯+nfnxn−1 令
p(x)=(1+f1f2x+⋯+f1fnxn−1)−1 于是
F(x)F′(x)=f1xf1+2f2x+3f3x2+⋯+nfnxn−1⋅p(x)=(x−1+f12f2+f13f3x+⋯+f1nfnxn−2)⋅p(x) 显然
p(x) 常数项为
1,于是
[x−1]F(x)F′(x)=1 于是
n⋅gn=[xn−1](xF(x))n1 即
gn=n1⋅[xn−1](xF(x))n1 多项式快速幂(
exp +
ln)+ 多项式求逆即可。
扩展拉格朗日反演
扩展拉格朗日反演用于在
O(nlogn) 的时间求
[xn]G(x)(
[xn]G(x) 表示
G(x) 的
n 次项的系数,下同),其中
G(x) 满足
G(F(x))=H(x),
F(x),H(x) 为已知多项式。
事实上推导过程几乎一样,只是最开始的求导
(x)′=1 变为了
(H(x))′=H′(x),于是
gn=n1⋅[xn−1](xF(x))nH′(x)
说白了,拉格朗日反演就是扩展拉格朗日反演中
H(x)=x 的一种特殊情况而已。
注意
拉格朗日反演的运用大多是“知外求内”,但它也可以“知内求外”,并且我们证明的时候也是证的“知内求外”,但是扩展拉格朗日反演只能“知内求外”(因为扩展拉格朗日反演没有那个交换内外层函数的定理)!
例题