【问题标题】:Understanding Harvey & van der Hoeven 2019 algorithm (huge integer multiplication)理解 Harvey & van der Hoeven 2019 算法(大整数乘法)
【发布时间】:2022-06-27 10:38:23
【问题描述】:

我需要尽可能高效地将几个大长整数相乘。

我正在尝试实现 Harvey & van der Hoeven 2019 整数乘法算法,但我坚持理解其背后的定义和数学,尤其是 Agarwal-Cooley 算法。

任何有助于理解此算法的帮助,例如实际示例或一些伪代码,我们将不胜感激。

【问题讨论】:

    标签: algorithm multiplication


    【解决方案1】:

    请记住,Big O notation 被定义为存在一些 x≥x₀,对于所有这些 x,一些函数 |f(x)|≤εg(x)。

    Harvey & van der Hoeven (2019) 算法的问题在于所涉及的 x₀ 非常大。因此,对于大多数输入,他们的算法提供了一种低效整数乘法的方法。但是,对于非常大的数字,该算法确实给出了 O(n log n) 算法。

    但是这些数字有多大?作者之一大卫·哈维states

    新算法在当前形式下并不实用,因为我们论文中给出的证明仅适用于可笑的大数。即使每个数字都写在氢原子上,在可观测宇宙中也几乎没有足够的空间来写下它们。

    另一方面,我们希望通过进一步改进,该算法可能对仅具有数十亿或数万亿位数的数字变得实用。如果是这样,它很可能会成为计算数学家武器库中不可或缺的工具。

    因此,如果您对自己的既定目标很认真——快速将大数相乘——那么这个算法不是你应该做的。

    【讨论】:

      【解决方案2】:

      如果您的长整数小于 10000 位,并且您使用的是普通的 32 位或 64 位计算机,我建议使用 Karatsuba-Offman。它可以使用并行加速,例如多线程或GPU。 如果您想制作一个完全并行的定制芯片,请使用 4XY = (X+Y)^2-(X-Y)^2 并构建一个 Karatsuba-Offman 平方器。这需要更少的芯片面积,因为平方器只有 n 条输入线,而不是 2n 条

      【讨论】:

        猜你喜欢
        • 2015-02-18
        • 2012-09-27
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        • 2012-07-16
        • 1970-01-01
        • 1970-01-01
        • 2011-08-21
        相关资源
        最近更新 更多