Karatsuba乘法

  • 整数位乘问题

    输入: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=(AB)(DC)+AC+BD因此W(n)=3W(2n)+O(n)解得W(n)=O(nlog3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值