【发布时间】:2011-08-21 05:03:21
【问题描述】:
作为家庭作业,我应该使用低于 O(n) 的分治法实现 1000 位数字的整数乘法。我应该研究什么算法?
【问题讨论】:
-
如果 n 是输入的大小,则时间复杂度不能小于 O(n)。那么你甚至无法读取整个输入。
-
我怀疑 O(n) 指的是伪多项式时间,即他实际上想要比 O(2^n) 更好的东西.许多简单的算法都可以满足这一要求,但您可能会因实现答案中的其中一个而获得额外奖励。
-
你确定你没有把它误认为 O(n * n) 吗?如果那时,您有 1) Karatsuba 算法,它在 O(n^(log3 / log2)) 中运行,2) FFT 方法在 O(n log n) 中运行(技术上它是 O(n * log^* n))。最简单的代码是 Karatsuba。
-
问题陈述有误。我已经给我的老师发了邮件,谢谢。
标签: algorithm biginteger divide-and-conquer