Appearance
n 位二进制整数 X 和 Y 相乘,通常算法时间复杂度为 O(n2)。是否存在分治算法可以降低时间复杂度?
设 X 和 Y 是 n 位整数,将 X 分为 n/2 位的两部分(高 n/2 位的 A 和低 n/2 位的 B),将 Y 分为 n/2 位的两部分(高 n/2 位的 C 和低 n/2 位的 D)。则 X×Y 可以表示为:
需要计算的子问题包括 AC、BD、(A+B)(C+D)。其中 (A+B)(C+D) 中的加法运算的时间复杂度取决于问题规模,即数字位数 n。因此可以得到如下递推式:
可以解得时间复杂度为: