人类用四千年碰到乘法运算天花板:史上最快乘法算法诞生

作者: KEVIN HARTNETT

来源: 环球科学

发布日期: 2019-04-16 11:11:56

两位数学家发表了迄今步骤最简洁的乘法运算方法,该研究成果标志着数学家在此方面的探索到达了一个新的高度。传统的乘法运算方法需要大约 n^2 步完成乘法计算,而 Karatsuba 的方法通过分解和重新组合数字,用少量的加法和减法代替大量的乘法,节省了时间。Schönhage 和 Strassen 的大数乘法引入了快速傅立叶变换,并推测存在更快的算法。Harvey 和 van der Hoeven 最终实现了 n×log n 步骤内的乘法运算,但该算法在实际应用中效果甚微。

四千年前,古巴比伦人最先发明了乘法。而历史上,数学家也在不断简化乘法的步骤,直到上个月,两位数学家发表了迄今步骤最简洁的乘法运算方法。上个月,两位数学家发表的论文指出,他们发现了至今大数字之间计算速度最快的乘法运算。乘法是数学中最基本的运算方式之一,长期以来,科学家都致力于寻找最高效的乘法运算方式,该研究成果的出现标志着数学家在此方面的探索到达了一个新的高度。

传统的乘法运算方法需要大约 n^2 步完成乘法计算,其中 n 是乘数的位数。因此,三位数字需要 9 次乘法,而 100 位数字需要 10000 次乘法。这种方法只适用于位数少的数字,但对于数百万或数十亿的数字就不那么方便了。如果要将两个十亿位的数字相乘,则需要进行 10^18 次乘法计算,即使是现代计算机不停歇地工作都大约需要 30 年才能完成。几千年来,人们普遍认为已经不存在更快的乘法运算方式。

1960 年,23 岁的俄罗斯数学家 Anatoly Karatsuba 参加了由 20 世纪伟大的数学家之一柯尔莫果洛夫领导的研讨会。会上柯尔莫果洛夫断言,n^2 是乘法运算所需最少的步骤,不存在更快的运算方式。但 Karatsuba 认是有更快地乘法运算方式的,并且经过一周的探索就发现了它。

Karatsuba 的方法尝试对数字的位数进行分解并重新组合,运用这种方式时,可以用少量的加法和减法代替大量的乘法。该方法节省了时间,因为完成加法计算时仅需 2n 步,而不是 n^2 步(n 同样代表数字的位数)。1971 年,Arnold Schönhage 和 Volker Strassen 发表了一种能在 n×log n×log(log n)个步骤以内完成的大数乘法。

如果是两个 10 亿位数字相乘,和这种新方法相比,Karatsuba 的方法大约需要多运算 165 万亿个步骤。

Schönhage 和 Strassen 的大数乘法,对未来的研究提供了两个长远的影响。首先,它引入了信号处理技术中被称为快速傅立叶变换的方法,该技术一直以来都作为快速乘法算法的基础。

其次,在当时 Schönhage 和 Strassen 推测应该还会有一个更快的算法,一种只需要 n×log n 单位数乘法的方法,并且这种算法可能会是最快的。他们推测,一定存在某种像乘法本身那样基础的运算,会比 n×log n×log(log n)更简洁。

就这样,Schönhage 和 Strassen 提出的 n×log n×log(log n)方法持续了 36 年。

2007 年,Fürer 超越了它并打开了新的大门。而在 2007 年至今的十几年中,数学家也相继地发现了更快的乘法算法,且每个算法都接近 n×log n,但又没有完全达到它。终于在上个月,Harvey 和 van der Hoeven 做到了。他们的方法总的来说是对之前工作进行了改进。包括拆分数字,使用快速傅立叶变换的改进版本,并综合了过去 40 年各种研究的长处。

虽然新算法在理论上取得了突破,但它在实际应用中效果甚微,因为它只比之前的算法稍微快一点。此外,计算机硬件的设计也发生了变化。二十年前,计算机执行加法要比乘法快。但在过去 20 年中,乘法和加法之间的速度差距已大大缩小,在一些芯片架构中,乘法运算甚至比加法还要快。对于一些硬件,如果你想完成加法计算,你甚至可以让它们通过执行乘法来完成,这样说不定还更快。用乘法的运算速度来实现加法,这看起来有些疯狂。

无论计算机会发展到什么程度,Harvey 和 Hoeven 的算法将仍然是最有效的乘法算法。

UUID: 6988ba9d-6661-4127-b270-ae9caa48e615

原始文件名: /home/andie/dev/tudou/annot/AI语料库-20240917-V2/AI语料库/中科院物理所公众号-pdf2txt/2019/中科院物理所_2019-04-16_人类用四千年碰到乘法运算天花板:史上最快乘法算法诞生.txt

是否为广告: 否

处理费用: 0.0052 元