仔细算算多项式模复合的复杂度

我们沿用 Kedlaya, Umans 的思路, 先把 \(N=d^m\), 然后拆成这个东西上求 \(Nd\) 个点值的问题.

初代机 (Kedlaya, Umans)

使用了传统的 CRT 约化, 复杂度可以大概写成 \(O(md\log d)^m\), 所以综合起来的复杂度大概就是

\[N \cdot \left(d + O(m\log d)^m \right), \]

平衡大概需要 \(\log d = m\log \log N\), 由于 \(m = \log N /\log d\), 得到 \(\log d = \sqrt{\log N\log \log N}\), 也就是说第一代多点求值做多项式复合的复杂度大概是

\[N \exp O\left(\sqrt{\log N \log \log N}\right). \]

根据 Hoeven 更加精甚细腻的计算, 这个 \(O\) 可以是,,,

\[N \exp \left(\sqrt{28\log N \log \log N}\left(1 + O\left(\frac{1}{\log \log N}\right)\right)\right). \]

二号机 (Bhargava, Ghosh, Guo, Kumar, Umans)

复杂度可以大概写成 \(O(d)^m\), 所以综合起来的复杂度大概就是

\[N \cdot \left(d + O(1)^m \right), \]

平衡需要 \(\log d = m\), 得到 \(\log d = \sqrt{\log N}\), 所以第二代多点求值做多项式复合的复杂度大概是

\[N \exp O\left(\sqrt{\log N}\right). \]

posted @ 2023-10-16 22:02  EntropyIncreaser  阅读(376)  评论(0编辑  收藏  举报