这家伙找到了一个来乘法的更快方式——因为你知道是嘲笑慢的那个

标签:
it杂谈 |
这家伙找到了一个来乘法的更快方式——因为你知道是嘲笑慢的那个
https://s.yimg.com/ny/api/res/1.2/o7AB9z5noYqXGczizAxzqQ--/YXBwaWQ9aGlnaGxhbmRlcjt3PTE5NDtoPTYwO2NmPXdlYnA-/https://s.yimg.com/os/creatr-uploaded-images/2020-11/2edbf1a0-244d-11eb-beba-ffa5d3038302
David Grossman
Wed, September 17, 2025 at 1:02 AM GMT+8·

一种来乘一个大数的更快方式。Trifonov_Evgeniy - Getty Images
这里是当你读这个故事时你会学到的:
•1971年,德国数学家舒恩哈格(Schonhage)和斯特拉森(Strassen)预测了一种更快的乘大数的算法,但几十年它仍未被证明。
•来自澳大利亚和法国的数学家已经证明了这种算法的存在,使乘法和其他算术运算更有效。
•这一突破可能会彻底改变涉及大数的计算,从计算圆周率的位数到解决有巨大素数的问题。
从上小学往后,复杂的乘法就一直是一个头疼。但来自澳大利亚新南威尔士大学悉尼分校的一位助理教授已经开发了一种一起乘超大数字的方法,比许多人从小学到的“长式乘法”更有效。
副教授戴维(David Harvey)在这段视频中说,“我们已经“技术上更证明了舒恩哈格-斯特拉森在1971年关于整数乘法复杂性的猜想”。
由两位德国数学家开发的舒恩哈格-斯特拉森算法,实际上是从1971年至2007年最快的乘法方法。尽管在2007年一个更快的方法被开发,但今天它罕见的被用。
哈维说,舒恩哈格和斯特拉森预测了一个用n * log(n)次基本运算乘n位数算法应该存在。他的论文是已知的第一个来证明该算法证据的。
哈维举了一个314乘以159的例子——当然一个大的方程式,但在现实场景中每天被用到远更大的方程式。为解决这个问题,大多数人被教导将每个数字一起单独相乘,然后将这些数相加:
9乘以4、1和3;然后5乘以4、1和3,以此类推。结果最终有9位数的积。
这种方法被称为n²(平方n),因为人们必须将n乘n许多次。它将得出正确答案,但舒恩哈格-斯特拉森设计了一种更快的方法。这种方法能够移动超过n²并进入某些更小的,但一个新的挑战仍然以n log(n)的形式表现它自己。
对某些人,看到数学题中的某个单词可能足以让他们像在代数课上那样眼神发空。作为复习:log是logarithm的缩写,它能帮助人们解读使数字平方、立方或甚至某些更高次方的东西。因此2是32,但对数上表示是log(32)=5。虽然看起来有点拗口,但当数字变得远更大时对数是至关重要的。
哈维说,舒恩哈格-斯特拉森方法非常快。如果一台计算机使用在学校教的平方法处理两个各有一百亿位数的问题,它将需要几个月。而使用舒恩哈格-斯特拉森方法的计算机可以在30秒内做到如此。
但如果数字继续上升到数万亿甚至更多,由法国巴黎综合理工学院的哈维和合作者豪文(Joris van der Hoeven)开发的算法可以找到比1971年的舒恩哈格-斯特拉森算法更快的解决方案。
他说,“这意味着你能更高效的做各种算术运算,比如除法和平方根。你还可以比以前更高效的计算圆周率的位数。它甚至有对涉及巨大素数的应用”。
他继续说道,“人们一直在寻找这种算法近50年了”。有人会最终是成功的不是一个忘记的结论。也许原来是肖恩哈格和斯特拉森是错的,没有如此的算法是可能的。
他说,“但现在我们知道更好”。