-
整数位乘问题
输入:x,y是n位二进制数, n = 2 k n = 2^k n=2k
输出:xy
普通乘法:需要O( n 2 n^2 n2)次运算
试使用分支算法改进算法
普通分治:
x = A x n 2 + B ; y = C x n 2 + D , 因此 x y = A C 2 n + ( A D + B D ) 2 n 2 + B D W ( n ) = 4 W ( n 2 ) + O ( n ) ( O ( n ) 为移位和相加操作 ) 解得 W ( n ) = W ( n 2 ) x = Ax^{\frac n 2} + B;y = Cx^{\frac n 2} + D,\\因此xy = AC2^n+(AD+BD)2^{\frac n 2}+BD\\ W(n) = 4W(\frac n 2) +O(n)(O(n)为移位和相加操作)\\ 解得W(n) = W(n^2)\\ x=Ax2n+B;y=Cx2n+D,因此xy=AC2n+(AD+BD)22n+BDW(n)=4W(2n)+O(n)(O(n)为移位和相加操作)解得W(n)=W(n2)
Karatsuba乘法
A D + B C = ( A − B ) ( D − C ) + A C + B D 因此 W ( n ) = 3 W ( n 2 ) + O ( n ) 解得 W ( n ) = O ( n log 3 ) AD +BC = (A-B)(D-C)+AC+BD\\ 因此W(n) = 3W(\frac n2)+O(n)\\ 解得W(n) = O(n^{\log 3}) AD+BC=(A−B)(D−C)+AC+BD因此W(n)=3W(2n)+O(n)解得W(n)=O(nlog3)
Karatsuba乘法
最新推荐文章于 2025-03-31 13:31:44 发布