多项式理论 PartⅠ- 浅谈多项式牛顿迭代、多项式取模以及 Bostan-Mori 算法

一、多项式牛顿迭代

适用于解决给定满足一定条件的 \(F\),求多项式 \(G\) 使得 \(F(G(x))\equiv0\) 的问题。

已知 \(F(G(x))\equiv 0\pmod{x^N}\),其中 \(F\) 可以泰勒展开且 \(G\) 常数项容易求得,则可以利用如下方式由 \(G\bmod{x^n}\) 推出 \(G\bmod{x^{2n}}\),进而迭代出 \(G\)

  • \(G_1\equiv G\pmod{x^n},G_2\equiv G\pmod{x^{2n}}\),则 \(G_2-G_1\equiv0\pmod{x^n}\),故 \((G_2-G_1)^2\equiv0\pmod{x^{2n}}\)
  • 由泰勒展开公式知 \(F(G_2(x))\equiv\sum\limits_{n=0}\dfrac{F^{(n)}(G_1(x))}{n!}\left(G_2(x)-G_1(x)\right)^n\pmod{x^{2n}}\),其中 \(n\ge2\) 时对应项取余后为 \(0\)
  • 所以可以得到 \(F(G_2(x))\equiv F(G_1(x))+F'(G_1(x))(G_2(x)-G_1(x))\pmod{x^{2n}}\),由 \(F(G_2(x))\equiv0\) 可以得到:

\[\boxed{G_2(x)\equiv G_1(x)-\dfrac{F(G_1(x))}{F'(G_1(x))}} \]

即可用其求出与 \(F\) 同阶且满足要求的 \(G\),对常见的 \(F\) 时间复杂度为 \(\mathcal{O}(n\log n)\),其中 \(n\)\(F\) 的阶数。

二、多项式取模

适用于解决已知多项式 \(F(x),G(x)\),求 \(Q(x),R(x)\) 使得 \(F(x)=G(x)\cdot Q(x)+R(x)\) 的问题,其中 \(R\) 的阶数小于 \(G\)

只需求出 \(Q\) 后即可简易求出 \(R\),令 \(n,m\) 分别为 \(F,G\) 的阶数,并强制让 \(R\) 的阶数为 \(m-1\),并记 \(F_R\) 表示 \(F\) 系数翻转后的结果,则 \(F_R(x)=x^nF\left(\dfrac{1}{x}\right)\),又由 \(F\left(\dfrac{1}{x}\right)=G\left(\dfrac{1}{x}\right)\cdot Q\left(\dfrac{1}{x}\right)+R\left(\dfrac{1}{x}\right)\)\(F_R(x)=G_R(x)\cdot Q_R(x)+x^{n-m+1}R_R(x)\),故 \(Q_R\equiv F_R(x)\cdot G_R^{-1}(x)\pmod{x^{n-m+1}}\),至此问题已经解决,时间复杂度为 \(\mathcal{O}(n\log n)\)(视 \(n,m\) 同阶)。

三、Bostan-Mori 算法

适用于给定多项式 \(F,G\) 和所求项数 \(n\),求 \([x^n]\dfrac{F(x)}{G(x)}\) 的值。

\([x^n]\dfrac{F(x)}{G(x)}=[x^n]\dfrac{F(x)G(-x)}{G(x)G(-x)}\),观察到 \(G(x)G(-x)\) 只在偶数次幂有值,故将 \(F(x)G(-x)\) 拆成 \(P(x^2)+xQ(x^2)\) 的形式,并设 \(G(x)G(-x)=T(x^2)\),则所求为 \([x^n]\dfrac{P(x^2)+xQ(x^2)}{T(x^2)}\),根据 \(n\) 的奇偶性递归计算即可,时间复杂度为 \(\mathcal{O}(m\log n\log m)\),其中 \(m=\deg F\)

posted @ 2025-02-05 14:07  hhoppitree  阅读(45)  评论(0编辑  收藏  举报