乘法最快的算法计算机,人类史上最快乘法算法诞生

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

中科院物理所 2019-04-16 12:21:55

图片:MENGXIN LI/QUANTA MAGAZINE

四千年前,古巴比伦人最先发明了乘法。而历史上,数学家也在不断简化乘法的步骤,直到上个月,两位数学家发表了迄今步骤最简洁的乘法运算方法。

撰文丨KEVIN HARTNETT

翻译丨董依明

审校丨杨心舟

上个月,两位数学家发表的论文指出,他们发现了至今大数字之间计算速度最快的乘法运算。乘法是数学中最基本的运算方式之一,长期以来,科学家都致力于寻找最高效的乘法运算方式,该研究成果的出现标志着数学家在此方面的探索到达了一个新的高度。

“大家可能会觉得,自己在学校学到的计算方法就是最佳的那种,但事实上,科学家一直都在继续优化数学运算方法,”法国国家科学研究中心的数学家Joris van der Hoeven说道,他是论文的共同作者。从计算圆周率新数值到寻找大质数,许多计算问题的复杂性,归根结底来说就是乘法的速率问题。Hoeven在描述他们的论文成果时,认为乘法运算决定着解决其他问题的速度。

“你可以用许多类似光速的物理常数来描述许多现象,” Hoeven说。 “如果你想知道计算机解决某些数学问题有多快,那么就需要通过整数乘法来表达这些速度。”

传统的乘法运算

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

传统的乘法运算方法

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

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

Karatsuba算法

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

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

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

大数相乘下两种方法的比较

乘法步骤不断更新

1971年,ArnoldSchö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)更简洁。

“乘法的基础性与重要性无需多言,从美学的角度来说,如此重要的运算方法终会从复杂走向简单”Fürer说。“一般经验来看,数学运算到最后都会变得简洁。”

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

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

发现最新乘法运算方法研究者之一Hoeven。图片:ÉCOLE POLYTECHNIQUE

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

虽然新算法在理论上取得了突破,但它在实际应用中效果甚微,因为它只比之前的算法稍微快一点。 “我们所希望的是,最好的方法运算能力应该比现在的快三倍,”Hoeven说。

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

硬件会随着时间而改变,但最佳的算法方式却是永恒的。无论计算机会发展到什么程度,Harvey和Hoeven的算法将仍然是最有效的乘法算法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android menu菜单 实现点击后不消失_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥...

Windows系统发展至今,文件夹的颜色和样式始终是没有太多的变化,一直是一成不变的shi黄色!尽管我们可以通过右键>属性>自定义>来修改文件夹的图标,但这种方法不仅需要我们自己去找图标文件,如果文件夹多了&…

电源功耗压力测试软件,开关电源负载测试经验分享——这篇三分钟小文章着实令人“心动”...

开关电源,又称交换式电源、开关变换器,是一种高频化电能转换装置,是电源供应器的一种。开关电源利用的切换晶体管多半是在全开模式及全闭模式之间切换,这两个模式都有低耗散的特点,切换之间的转换会有较高的耗散&#…

http抓包工具推荐WSockExpert/httpwatch/HttpAnalyzer/DebugBar

平常有事没事可以把玩下这几个抓包软件,蛮有意思! 抓包分析源地址和目标url一般有下面几个软件:第一个是国产的WSockExpert。以前大家上网漏洞的时候很多时候都用到他。易上网,功能一般。但自身dll文件容易被认为木马删除。适用于…

ref是什么意思_终于有人说出A股不敢说的话:为什么股价不断下跌,大单却持续流入,你知道是什么缘由吗?...

(本文由公众号越声策略(yslc188)整理,仅供参考,不构成操作建议。如自行操作,注意仓位控制和风险自负。)炒股想成功牢记以下几点:第一、选股方法。字面意思很简单,但是也是个集大成的东西。你靠着均线能选股&#xff0c…

解决:Module not found: node_modules\sass-loader\package.json (directory description file)

npm uninstall node-sass npm install node-sasslatest转载于:https://www.cnblogs.com/furenjian/p/11198914.html

xp计算机关闭139端口,小编搞定xp系统电脑关闭139端口的图文方法

我们在使用xp系统的过程中,经常需要对xp系统电脑关闭139端口进行设置,可能很多用户都不知道怎么对xp系统电脑关闭139端口进行设置,但当我们遇到对xp系统电脑关闭139端口的设置方法非常简单,只需要点击“开始”,选择“运行”&#…

c++中计算2得n次方_《一元二次方程》单元试卷,从中总结出5个考点,初三学生应知道...

俗话说:“工欲善其事, 必先利其器。 ” 学好一元二次方程必须熟练掌握它的重要考点,再通过有针对性地做练习,提高解题能力。为了帮助大家切身感受一元二次方程这章的重要考点,下面将为大家详细解析一份单元模拟试卷&am…

C和C++编程中static关键字的含义-修饰函数和变量

static用来修饰一个函数的时候,表示的意思如下: 1、表示该方法只在本c文件中有效。在其他c文件中无法访问这个方法。 2、static的方法的定义一般不放在.h文件中,因为这个方法只在一个c文件中有效。一般直接将该方法定义在c文件的开头部分就可…

[html] 为什么移动端页面的设计稿一般是750px/640px呢?

[html] 为什么移动端页面的设计稿一般是750px/640px呢? 750px 代表iphone6或inphone6s 设备的像素(宽) 640px 代表inpone3Gs,inpone4/4s iphone5系列 设备的像素(宽) 其他手机大多数时这两种规格 750px/640px 代表的逻辑像素是 375px/320px,…

[转]NGINX-检测客户端是通过电脑还是移动设备访问的,将请求重定向到适配的WEB站点...

原文地址:https://blog.51cto.com/10978134/2163757 检测客户端是通过电脑还是移动设备访问的,将请求重定向到适配的WEB站点 此配置方法由Detect Mobile Browsers网站提供,是美国的一个免费开源的针对开发者检测移动端的解决方案,…

maya计算机内存不足请保存,Maya内存不足不能渲染怎么优化场景?

Maya内存不足不能渲染怎么优化场景?可能由于Maya的场景文件过于复杂,或者材质质量过高的问题,用户最终渲染时会出现无法启用高质量的渲染工作的错误,这时候用户可以选择做一些合适的处理,以保证渲染工作的正常进行。Ma…

如何提高效率SQLITE 大数据量操作效率

今天有个朋友测试 SQLite,然后得出的结论是:SQLite 效率太低,批量插入1000条记录,居然耗时 2 分钟! usingSystem.Data;usingSystem.Data.Common;usingSystem.Data.SQLite;//创建数据库文件File.Delete("test1.db3…

vc6开发一个抓包软件_惊奇软件[21]:这是一个程序员开发的背单词网站,可好用了!...

惊奇软件未经授权禁止转载正文---------------------------------哔哩哔哩小破站的UP主们就是厉害......就在前几天,小编我想找一款背单词的软件(某百词用的有点腻),想到哔哩哩哩上的朋友们都比较年轻,喜欢学习,我就上哔哩哔哩搜索…

[html] 怎样使用iframe刷新父级页面?

[html] 怎样使用iframe刷新父级页面? //在父页面中window.addEventListener("message",function(e){if(e.data.reload){winodw.location.reload()}}, false);//在子页面中window.parent.postMessage({reload:true})个人简介 我是歌谣,欢迎和大…

执行计划中的参数解释

执行计划中的各个参数解释: 一、Recursive calls (递归调用) 1、参考:Oracle Database Reference, 10g Release 2 (10.2).pdf第916页 Number of recursive calls generated at both the user and system level. Oracle maintains …

java jsonobject_Java实现QQ登录

准备工作1. 云服务器2. 备案的域名3. 本地调试需要修改hosts文件,将域名映射到127.0.0.1一、申请QQ互联,并成为开发者QQ互联:QQ互联官网首页登录后,点击头像,进入认证页面,填写信息,等待审核。审…

周至四中计算机老师,周至县第四中学顺利承办周至县 “教育信息化技术与教学课堂深度融合交流研讨会”...

原标题:周至县第四中学顺利承办周至县 “教育信息化技术与教学课堂深度融合交流研讨会”5月22日,周至县 “教育信息化技术与教学课堂深度融合交流研讨会”在我校举行,周至县教科局党委书记、局长张武祥、副局长尚雷、教研室书记杨正良、电教中…

常规dll 的接口函数定义+客户端程序接口函数导入

--> blog 常规dll 的接口函数定义extern "C" __declspec(dllexport) int addcart_Click(LPCTSTR lpszInput, LPTSTR lpOutput){常规dll 的接口函数实现extern "C" __declspec(dllimport) int addcart_Click(LPCTSTR lpszInput, LPTSTR lpOutput){转载于…

bin文件怎么转换成文本文档_Python脚本4:根据txt文本,批量创建文件夹

背景:深度学习图像分类的时候,有许多的标签类。1000个标签就需要创建1000个文件夹,文件夹里面放入对应的图像。不可能一个一个右击创建文件夹,所以有了今天的脚本。根据txt文本每一行的类别,创建文件名为类别的文件夹。…

如何停止运行在服务器的项目,怎么启动和停止服务器

弹性云服务器 ECS弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率三年低至5折,多种配置可选了解详情用户数据注…