Skip to main content
QUICK REVIEW

[论文解读] An in-place truncated Fourier transform and applications to polynomial multiplication

David Harvey, Daniel S. Roche|arXiv (Cornell University)|Jan 28, 2010
Polynomial and algebraic computation参考文献 5被引用 5
一句话总结

本文提出了一种针对截断傅里叶变换(TFT)及其逆变换(ITFT)的原地算法,实现 $O(n\log n)$ 的时间复杂度,且仅需 $O(1)$ 的辅助空间。通过采用时域抽取方法重新设计 van der Hoeven 的 TFT 算法,并实时计算单位根,作者消除了先前方法中因在 2 的幂次大小时需要缓冲区而导致的 $O(n)$ 内存开销,从而实现了对任意次数多项式在空间受限环境下的高效多项式乘法。

ABSTRACT

The truncated Fourier transform (TFT) was introduced by van der Hoeven in 2004 as a means of smoothing the "jumps" in running time of the ordinary FFT algorithm that occur at power-of-two input sizes. However, the TFT still introduces these jumps in memory usage. We describe in-place variants of the forward and inverse TFT algorithms, achieving time complexity O(n log n) with only O(1) auxiliary space. As an application, we extend the second author's results on space-restricted FFT-based polynomial multiplication to polynomials of arbitrary degree.

研究动机与目标

  • 消除现有截断傅里叶变换(TFT)和其逆变换(ITFT)算法中因在 2 的幂次大小时需要缓冲区而产生的 $O(n)$ 辅助内存使用。
  • 设计正向和逆向 TFT 的原地变体,在保持 $O(n\log n)$ 时间复杂度的同时,仅使用 $O(1)$ 额外存储空间。
  • 通过消除对 $O(n)$ 辅助空间的需求,将空间受限的基于 FFT 的多项式乘法推广至任意次数的多项式。
  • 证明即使输入为只读且输出为逐次写入,原地多项式乘法仍可在 $O(1)$ 辅助空间和 $O(n\log n)$ 时间内完成。

提出的方法

  • 设计一种迭代、非递归版本的 TFT 和 ITFT,采用时域抽取方法,将其分解为 $L_1 \times L_2$ 变换,其中 $L_1 = L/2$ 且 $L_2 = 2$,以最小化递归深度和空间使用。
  • 使用位反转索引实时计算单位根,避免存储所有根,从而在存在数据依赖关系的情况下仍实现 $O(1)$ 辅助空间。
  • 采用递归划分策略,将变换划分为大小为 $L = 2^\ell$ 的块,其中 $\ell = \lfloor \lg(r - q) \rfloor - 1$,确保每个块可容纳在输出缓冲区中。
  • 对大小为 $L$ 的子数组进行原地 FFT,将结果累积到输出缓冲区中,并使用最终的原地逆 FFT 恢复完整的多项式乘积。
  • 设计算法使得中间变换直接写入输出缓冲区,最大限度减少临时存储,从而实现在 $O(1)$ 辅助空间下的非临时乘法。

实验结果

研究问题

  • RQ1能否在仅使用 $O(1)$ 辅助空间的同时,保持 $O(n\log n)$ 时间复杂度,实现截断傅里叶变换及其逆变换的原地计算?
  • RQ2通过重新排列操作并实时计算单位根,是否可以消除现有 TFT 算法中 $O(n)$ 的内存开销?
  • RQ3能否利用原地 TFT 和 ITFT 算法,将空间受限的基于 FFT 的多项式乘法推广至任意次数的多项式?
  • RQ4原地 FFT 基多项式乘法所需的最小辅助空间是多少?$O(1)$ 空间是否足以实现完全的原地算法?

主要发现

  • 作者提出了迭代的、原地的 TFT 和 ITFT 算法,实现 $O(n\log n)$ 时间复杂度,且仅需 $O(1)$ 辅助空间,消除了先前方法中 $O(n)$ 的内存开销。
  • 这些算法采用时域抽取方法,其中 $L_1 = L/2$ 且 $L_2 = 2$,实现 $O(\log n)$ 的递归深度,且每层仅使用 $O(1)$ 空间。
  • 通过按位反转顺序实时计算单位根,算法避免了存储所有根,从而将空间使用降至 $O(1)$。
  • 该方法可在仅使用 $O(1)$ 辅助空间的情况下,以 $O((m+n)\log(m+n))$ 时间完成任意次数多项式的空间受限多项式乘法,即使输入为只读。
  • 通过将系数空间划分为块、应用局部 FFT 并原地组合结果,该算法正确计算出完整的乘积 $C = AB$。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。