世界最难的乘法:大数乘法与人工智能

世界最难的乘法:大数乘法与人工智能
2019-08-02 15:26
乘法是数学中最基本的运算方式之一,长期以来,科学家都致力于寻找最高效的乘法运算方式,该研究成果的出现标志着数学家在此方面的探索到达了一个新的高度。

说到乘法定律,大家都会知道小学学的乘法口诀,这种简单的问题还有什么需求讲解和分享的必要吗?我们思考一下,下面的这个乘法运算应该如何去做:

(587495871948572342341234123457138457181345873458712341234)✖(98472985472938435873984572398439857395872398457)=?

像这种大数的乘法计算,普通计算机是无法运算成功的。下面我们来看一下,乘法运算都有哪些运算方式:

传统乘法运算

我们现在都在使用学校教授的同一种方式运算乘法。首先将两个数字分两排写,然后用下面数字从个位开始与上面的每一位数字一一相乘,最后排列好再做加法运算。如果你将两个两位数相乘,则会出现四次简单的乘法运算,然后得到得数。

在这里插入图片描述

这种方法需要大约n^2步完成乘法计算,其中n是乘数的位数。 因此,三位数字需要9次乘法,而100位数字需要10000次乘法。因此该方法只适用于位数少的数字,但对于数百万或数十亿的数字就不那么方便了。如果要将两个十亿位的数字相乘,则需要进行1018次乘法计算,即使是现代计算机不停歇地工作都大约需要30年才能完成。

Karatsuba算法

Karatsuba的方法尝试对数字的位数进行分解并重新组合,运用这种方式时,可以用少量的加法和减法代替大量的乘法。该方法节省了时间,因为完成加法计算时仅需2n步,而不是n2步(n同样代表数字的位数)。

在这里插入图片描述

很多课外补习班谈到的更“聪明”的乘法口诀大多数都是这种方法。

“如果用加法替代乘法的话,你甚至可以在上学前就使用这种方法,因为它更容易,你可以连续地完成,几乎像从右到左阅读数字一样快,”宾夕法尼亚州立大学数学家MartinFürer说道,他在2007年创造了当时最快的乘法算法。

处理大数字时,你可以重复Karatsuba的过程,将原始数字拆分成与位数一样多的部分。每次拆分,都可以用加法和减法替换掉乘法,这会节省很多步骤。Karatsuba的方法可以将乘法运算步骤减少至n1.58次。新南威尔士大学的数学家,新论文作者David Harvey说:“把一些乘法转变成加法后,计算机会运算得更快。”

在这里插入图片描述

 乘法步骤不断更新

1971年,Arnold Schönhage和Volker Strassen发表了一种能在n × log n × log(log n)个步骤以内完成的大数乘法。如果是两个10亿位数字相乘,和这种新方法相比,Karatsuba的方法大约需要多运算165万亿个步骤。

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

就这样,Schönhage和Strassen提出的 n × log n × log(log n) 方法持续了36年。2007年,Fürer超越了它并打开了新的大门。而在2007年至今的十几年中,数学家也相继地发现了更快的乘法算法,且每个算法都接近 n × log n,但又没有完全达到它。终于在上个月,Harvey 和 van der Hoeven 做到了。

他们的方法总的来说是对之前工作进行了改进。包括拆分数字,使用快速傅立叶变换的改进版本,并综合了过去40年各种研究的长处。“我们更频繁地使用快速傅里叶变换,不再是只使用一次,并用加法和减法代替更多的乘法,”Hoeven说。

Harvey和Hoeven的算法证明了乘法可以在 n × log n 步骤内完成运算,但这并不代表没有更快的方法了。目前最具挑战的就是要确立Hoeven的方法是最快的,2月底,奥尔胡斯大学的一个计算机科学家小组发表了一篇论文,认为如果另一个未经证实的猜想是正确的话,那Hoeven的乘法运算最快的方法了。

此外,计算机硬件的设计也发生了变化。二十年前,计算机执行加法要比乘法快。但在过去20年中,乘法和加法之间的速度差距已大大缩小,在一些芯片架构中,乘法运算甚至比加法还要快。对于一些硬件,“如果你想完成加法计算,你甚至可以让它们通过执行乘法来完成,这样说不定还更快。用乘法的运算速度来实现加法,这看起来有些疯狂疯。”Harvery说。

虽然乘法运算在数据中是一种非常简单的计算方式,但是一个数据的量级增长之后,乘法运算仍然会面临着相当大瓶颈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值