八十年以前,已知的乘法运算方式只有一种,就是在课本上所学到的常规竖式计算方法。
当进行位数少的数字相乘时,竖式计算方法是非常快捷、方便的,但若是计算数百万位数或数十亿位数的乘数之间的相乘时,竖式计算方法就显得无能为力了,例如,计算圆周率或者寻找更大的质数。
后来出现了‘Karatsuba 算法’,将数字的乘数分解成更小的部分,并重新组合这些部分,这种方式可以用少量的加法和减法来代替大量的乘法。
这一算法完成计算,只需要需‘2 的n次方’次个位数的相乘,而不是之前的‘n的平方’次。
后来又有两位科学家一起,利用‘引入快速傅立叶变换’的方式,来对大数相乘算法进行改进,只需要‘n×log n×log(log n)’次个位数的相乘,就可以完成大数相乘计算,其中 log n是n的对数。
这一改进是跨越式的创新,后续大数相乘算法的持续改善,都是以这种方法为基础进行。
王浩的研究成果也同样是以‘引入快速傅立叶变换’的方式进行,才会用‘是改善、也是创新’来形容自己的成果,他的讲解也是从‘傅立叶变换算法’开始的。
以‘傅里叶变换算法’展开,辅助其他的计算手段,构建出一个包含‘结果’数字区域。
这就是创新的地方。
他的研究并不是正常进行一步步的计算,而是划定了‘可能成为结果的数值集合’,比如,25*25,就可以简单划定结果在400到900的区间,通过一些必要的筛选,比如‘尾数是5’,把集合里面的数字一个个划去,直到最后只剩下一个数字,就确定为最终结果。
当然,超大数相乘要复杂的多,引入‘快速傅里叶变换’并辅助其他计算方法,划定的范围会更加精准。
如果是计算‘25乘25’,可以直接圈定范围就是在‘725、625、525’三个数字之间,而后可以迅速排除725和525,最终得到结果625。
“在对比每一个位数的数字后,就可以把范围继续缩小……”
“每一个进位数相乘的结果,都可以帮助继续排除范围内的数字,越是高位数,排除的范围就越大,我们可以看到,当接近最高位数时……”
“涉及到更精准的筛选,就需要用到……”
随着讲解慢慢的展开,台下众人都变得非常认真,同时也非常的感兴趣,因为他
本章未完,请点击下一页继续阅读!