膜膜膜
引入
拉格朗日反演及其扩展用于求一类 F ( G ( x ) ) = H ( x ) F(G(x)) = H(x) F(G(x))=H(x) 的问题,其中 F ( x ) , H ( x ) F(x), H(x) F(x),H(x) 为已知多项式函数, G ( x ) G(x) G(x) 为待求函数。但其只能在 O ( n log n ) O(n \log n) O(nlogn) 的时间内求得 G ( x ) G(x) G(x) 的某一项系数。
拉格朗日反演
拉格朗日反演用于在 O ( n log n ) O(n \log n) O(nlogn) 的时间求 [ x n ] G ( x ) [x^n]G(x) [xn]G(x)( [ x n ] G ( x ) [x^n]G(x) [xn]G(x) 表示 G ( x ) G(x) G(x) 的 n n n 次项的系数,下同),其中 G ( x ) G(x) G(x) 满足 F ( G ( x ) ) = x F(G(x)) = x F(G(x))=x, F ( x ) F(x) F(x) 为已知多项式,而 G ( x ) G(x) G(x) 又称为 F ( x ) F(x) F(x) 的复合逆。
有一个结论是若 F ( G ( x ) ) = x F(G(x)) = x F(G(x))=x,则 G ( F ( x ) ) = x G(F(x)) = x G(F(x))=x。
感性理解是把 F ( x ) F(x) F(x) 作为 x x x 代入 F ( G ( x ) ) = x F(G(x)) = x F(G(x))=x 得到 F ( G ( F ( x ) ) ) = F ( x ) F(G(F(x))) = F(x) F(G(F(x)))=F(x),再把最外层的 F ( x ) F(x) F(x) 拆掉即可,然而这显然是 错误 的证法,因为多项式函数一般不是单调(即不是双射,没有一一对应)的。当然你也可以理解为 F ( x ) F(x) F(x) 和 G ( x ) G(x) G(x) 互为反函数(事实上非双射的函数也没有反函数),这个结论就显然成立了。具体证法我没找到,所以就咕着吧
于是可以看出, [ x 0 ] F ( x ) = [ x 0 ] G ( x ) = 0 , [ x 1 ] F ( x ) ≠ 0 , [ x 1 ] G ( x ) ≠ 0 [x^0]F(x) = [x^0]G(x) = 0, [x^1]F(x) \neq 0, [x^1]G(x) \neq 0 [x0]F(x)=[x0]G(x)=0,[x1]F(x)=0,[x1]G(x)=0,不然最终结果不可能只剩下一个 x x x。
接下来开始推导,令 G ( x ) = ∑ i = 1 n g i ⋅ x i ( g 1 ≠ 0 ) G(x) = \sum_{i = 1}^{n} g_i \cdot x^i\ (g_1 \neq 0) G(x)=∑i=1ngi⋅xi (g1=0),代入 G ( F ( x ) ) = x G(F(x)) = x G(F(x))=x 得到 ∑ i = 1 n g i ⋅ F i ( x ) = x \sum_{i = 1}^{n} g_i \cdot F^i(x) = x i=1∑ngi⋅Fi(x)=x 两边同时求导(注意 F i ( x ) F^i(x) Fi(x) 是幂函数与多项式函数的复合函数求导)得 ∑ i = 1 n g i ⋅ i ⋅ F i − 1 ( x ) ⋅ F ′ ( x ) = 1 \sum_{i = 1}^{n} g_i \cdot i \cdot F^{i - 1}(x) \cdot F'(x) = 1 i=1∑ng