多项式拉格朗日反演与复合逆

膜膜膜

Tiw 永远的神!

引入

拉格朗日反演及其扩展用于求一类 F ( G ( x ) ) = H ( x ) F(G(x)) = H(x) 的问题,其中 F ( x ) , H ( x ) F(x), H(x) 为已知多项式函数, G ( x ) G(x) 为待求函数。但其只能在 O ( n log n ) O(n \log n) 的时间内求得 G ( x ) G(x) 的某一项系数。

拉格朗日反演

拉格朗日反演用于在 O ( n log n ) O(n \log n) 的时间求 [ x n ] G ( x ) [x^n]G(x) [ x n ] G ( x ) [x^n]G(x) 表示 G ( x ) G(x) n n 次项的系数,下同),其中 G ( x ) G(x) 满足 F ( G ( x ) ) = x F(G(x)) = x F ( x ) F(x) 为已知多项式,而 G ( x ) G(x) 又称为 F ( x ) F(x) 的复合逆。

有一个结论是若 F ( G ( x ) ) = x F(G(x)) = x ,则 G ( F ( x ) ) = x G(F(x)) = x
感性理解是把 F ( x ) F(x) 作为 x x 代入 F ( G ( x ) ) = x F(G(x)) = x 得到 F ( G ( F ( x ) ) ) = F ( x ) F(G(F(x))) = F(x) ,再把最外层的 F ( x ) F(x) 拆掉即可,然而这显然是 错误 的证法,因为多项式函数一般不是单调(即不是双射,没有一一对应)的。当然你也可以理解为 F ( x ) F(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 ,不然最终结果不可能只剩下一个 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 ( 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 两边同时求导(注意 F i ( x ) F^i(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 要求 n n 次项,就将 n n 次项提出,得到 n g n F n 1 ( x ) F ( x ) + i = 1 n 1 g i i F i 1 ( x ) F ( x ) = 1 n \cdot g_n \cdot F^{n - 1}(x) \cdot F'(x) + \sum_{i = 1}^{n - 1} g_i \cdot i \cdot F^{i - 1}(x) \cdot F'(x) = 1 两边同时除以 F n ( x ) F^{n}(x) n g n F ( x ) F ( x ) + i = 1 n 1 g i i F i n 1 ( x ) F ( x ) = 1 F n ( x ) n \cdot g_n \cdot \frac{F'(x)}{F(x)} + \sum_{i = 1}^{n - 1} g_i \cdot i \cdot F^{i - n - 1}(x) \cdot F'(x) = \frac{1}{F^{n}(x)} 注意到 ( F k ( x ) ) = k F k 1 ( x ) F ( x ) \left( F^k(x) \right)' = kF^{k - 1}(x)F'(x) F k ( x ) F ( x ) = ( F k + 1 ( x ) ) k + 1 F^{k}(x)F'(x) = \dfrac{\left( F^{k + 1}(x) \right)'}{k + 1} ,代入上式中得 n g n F ( x ) F ( x ) + i = 1 n 1 g i i i n ( F i n ( x ) ) = 1 F n ( x ) n \cdot g_n \cdot \frac{F'(x)}{F(x)} + \sum_{i = 1}^{n - 1} g_i \cdot \frac{i}{i - n} \cdot \left( F^{i - n}(x) \right)' = \frac{1}{F^{n}(x)} 这时应满足对应系数相等,为了只留下 g n g_n 项,我们观察发现,由于 F ( x ) F(x) 没有常数项,于是 F i n ( x ) F^{i - n}(x) 没有常数项,于是 ( F i n ( x ) ) \left( F^{i - n}(x) \right)' 没有 1 -1 次项!所以考虑等式两边同时取 1 -1 次项: [ x 1 ] n g n F ( x ) F ( x ) = [ x 1 ] 1 F n ( x ) [x^{-1}]n \cdot g_n \cdot \frac{F'(x)}{F(x)} = [x^{-1}]\frac{1}{F^{n}(x)} 对于等式右边: [ x 1 ] 1 F n ( x ) = [ x n 1 ] x n F n ( x ) = [ x n 1 ] 1 ( F ( x ) x ) n [x^{-1}]\frac{1}{F^{n}(x)} = [x^{n - 1}]\frac{x^n}{F^{n}(x)} = [x^{n - 1}]\frac{1}{\left( \frac{F(x)}{x} \right)^n} 对于等式左边: F ( x ) F ( x ) = f 1 + 2 f 2 x + 3 f 3 x 2 + + n f n x n 1 f 1 x + f 2 x 2 + + f n x n = f 1 + 2 f 2 x + 3 f 3 x 2 + + n f n x n 1 f 1 x ( 1 + f 2 f 1 x + + f n f 1 x n 1 ) \begin{aligned} \frac{F'(x)}{F(x)} &= \frac{f_1 + 2f_2x + 3f_3x^2 + \cdots + nf_nx^{n - 1}}{f_1x + f_2x^2 + \cdots + f_nx^n} \\ &= \frac{f_1 + 2f_2x + 3f_3x^2 + \cdots + nf_nx^{n - 1}}{f_1x(1 + \frac{f_2}{f_1}x + \cdots + \frac{f_n}{f_1}x^{n - 1})}\end{aligned} p ( x ) = ( 1 + f 2 f 1 x + + f n f 1 x n 1 ) 1 p(x) = (1 + \frac{f_2}{f_1}x + \cdots + \frac{f_n}{f_1}x^{n - 1})^{-1} 于是 F ( x ) F ( x ) = f 1 + 2 f 2 x + 3 f 3 x 2 + + n f n x n 1 f 1 x p ( x ) = ( x 1 + 2 f 2 f 1 + 3 f 3 f 1 x + + n f n f 1 x n 2 ) p ( x ) \begin{aligned} \frac{F'(x)}{F(x)} &= \frac{f_1 + 2f_2x + 3f_3x^2 + \cdots + nf_nx^{n - 1}}{f_1x} \cdot p(x) \\ &= (x^{-1} + \frac{2f_2}{f_1} + \frac{3f_3}{f_1}x + \cdots + \frac{nf_n}{f_1}x^{n - 2})\cdot p(x)\end{aligned} 显然 p ( x ) p(x) 常数项为 1 1 ,于是 [ x 1 ] F ( x ) F ( x ) = 1 [x^{-1}]\frac{F'(x)}{F(x)}=1 于是 n g n = [ x n 1 ] 1 ( F ( x ) x ) n n⋅g_n = [x^{n - 1}]\frac{1}{\left( \frac{F(x)}{x} \right)^n} g n = 1 n [ x n 1 ] 1 ( F ( x ) x ) n g_n = \frac{1}{n} \cdot [x^{n - 1}]\frac{1}{\left( \frac{F(x)}{x} \right)^n} 多项式快速幂( exp \exp + ln \ln )+ 多项式求逆即可。

扩展拉格朗日反演

扩展拉格朗日反演用于在 O ( n log n ) O(n \log n) 的时间求 [ x n ] G ( x ) [x^n]G(x) [ x n ] G ( x ) [x^n]G(x) 表示 G ( x ) G(x) n n 次项的系数,下同),其中 G ( x ) G(x) 满足 G ( F ( x ) ) = H ( x ) G(F(x)) = H(x) F ( x ) , H ( x ) F(x), H(x) 为已知多项式。

事实上推导过程几乎一样,只是最开始的求导 ( x ) = 1 (x)' = 1 变为了 ( H ( x ) ) = H ( x ) (H(x))' = H'(x) ,于是 g n = 1 n [ x n 1 ] H ( x ) ( F ( x ) x ) n g_n = \frac{1}{n} \cdot [x^{n - 1}]\frac{H'(x)}{\left( \frac{F(x)}{x} \right)^n}

说白了,拉格朗日反演就是扩展拉格朗日反演中 H ( x ) = x H(x) = x 的一种特殊情况而已。

注意

拉格朗日反演的运用大多是“知外求内”,但它也可以“知内求外”,并且我们证明的时候也是证的“知内求外”,但是扩展拉格朗日反演只能“知内求外”(因为扩展拉格朗日反演没有那个交换内外层函数的定理)!

例题

猜你喜欢

转载自blog.csdn.net/C20190102/article/details/107279319