【发布时间】:2020-09-03 15:00:12
【问题描述】:
在阅读 MITOpencourseware 中的 MIT 讲座(6.006 第 12 课)时,我偶然发现了 4 种乘法算法(将两个 n 位数字相乘)-
- O(n^2) 复杂度的普通朴素方法
- Karatsuba 算法 - O(n^1.584)
- Toom-Cook(Toom3) - O(n^1.465)
- Schonhage-Strassen - O(nlog(n)log(log(n)))
现在要研究的是,在哪个阈值点(即 n 的值),一种方法作为更好的算法超越了另一种。上面提到的都是gmpy包。
为了尝试这一点,我参考了以下链接中的 gmpy2 包文档 - https://gmpy2.readthedocs.io/en/latest/intro.html
然而,在浏览本文档的部分内容时,gmpy2 似乎更多地是处理大量数字。特别是,我没有找到实现上述 4 种算法的单独函数。那么 gmpy2 中是否有任何部分实现了这些算法,以便我可以根据 n(位数)绘制这些算法的运行时间?
【问题讨论】:
标签: python multiplication karatsuba gmpy strassen