Skip to content

子乘积树

Subproduct tree · Product tree for polynomial moduli

自底向上合并线性因子或一般模多项式、供批量余式与插值复用的平衡乘积层次。

条目类型
方法

形式陈述

给定 n 个多项式模数 m0,,mn1R[x],先假设 n=2h。子乘积树在第 0 层放置

M0,j=mj,

并递推

Mi,j=Mi1,2jMi1,2j+1,0<ih.

根为 Mh,0=jmj。多点求值采用线性叶子 mj=xuj,更一般的批量模约简则允许任意首一模数。若所有叶子的次数总和为 N,而长度 k多项式乘法成本为 M(k),在通常的超线性假设下,每层所有乘法共花 O(M(N)),共有 O(logn) 层,所以建树成本为 O(M(N)logn)

该对象是带多项式标签的平衡二叉树,而不是只保存叶子乘积的一个公式。保留全部层时,每层系数总数为 O(N+n),总空间通常为 O(Nlogn);若某次算法只需相邻两层,可以用重算或流式释放降低峰值空间。非二次幂叶子数可以建不完全平衡树,也可补单位多项式 1;补 1 不改变根积,却不能把它误当成额外求值点。

直觉

逐个构造 jmj 会反复把一个越来越大的乘积乘以小因子,无法充分利用快速乘法。子乘积树把大小相近的多项式配对:先做许多一次乘一次,再做二次乘二次,直到根部只剩一次大乘法。这个均衡安排正是分治在乘法成本为超线性时发挥作用的地方。

更重要的是,中间结点记录了叶子集合的“共同模数”。从根向下计算余式时,父结点上的一个余式只需分别模两个子结点,而无需重新处理原始大多项式;从叶子向上插值时,兄弟结点的乘积又提供了把两块局部答案嵌回全局的乘子。因此树的价值不只是更快得到根积,而是保存了一张可沿两个方向遍历的代数路由图。

例子与边界

对求值点 1,2,4,5,四个叶子为

x1,x2,x4,x5.

第一层两结点是

M1,0=x23x+2,M1,1=x29x+20,

根则为

M2,0=x412x3+49x278x+40.

若随后要把多项式 f 模每个 xuj,先算 fmodM1,0fmodM1,1,再各自向两个叶子下降即可。同一棵树可供多个 f 复用,所以“预处理点集”和“处理一次查询”的成本必须分开报告。

重复点并不妨碍建树:点列 (1,1,2) 的根仍是 (x1)2(x2)。但普通 Lagrange 插值要求线性因子两两互素,重复点使 M(1)=0,不能直接求倒数;此时需要带导数数据的 Hermite 插值。对一般模数,若它们不互素,批量余式仍有定义,Chinese remainder 重构却不唯一。树结构本身不替下游算法保证互素性。

复杂度式还隐藏了存储边界。保留全部层虽然渐近上方便,却可能让大系数复制占主导;只保存根又会迫使每次下降重新建子积。最佳策略取决于查询次数和内存预算。对于单位根等特殊点集,FFT 可直接一次变换求值,通用子乘积树的额外 logn 层未必值得。

推论与应用

子乘积树向下支撑快速多点求值:每个结点携带对其叶子乘积的余式。向上则支撑乘积树快速插值:左右局部线性组合分别乘以对侧的子积,再相加成为父结点答案。同一骨架还实现多模约简、多项式 Chinese remainder 重构和批量有理函数求值。

在复杂算法中,树常与反转多项式的快速除法结合。模数都是首一时,长除法不需要倒置不可逆的首项;若使用 Newton 反演加速,还要确保相应反转多项式的常数项为单位。把这些代数条件写在余式子程序接口中,可以让上层树递归只负责划分点集,不把“某次除法是否存在”分散到每个结点。

参考资料
  • Joachim von zur Gathen and Jürgen Gerhard, Modern Computer Algebra, 3rd ed., Cambridge University Press, 2013, Ch. 10.
  • Robert T. Moenck and Allan Borodin, “Fast Modular Transforms,” Journal of Computer and System Sciences 8(3), 1974, pp. 366–386.
  • Arne Storjohann, CS 487/687 Symbolic Computation: Script 7—Fast Evaluation and Interpolation, University of Waterloo lecture notes.
关系图谱6 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系