高斯4次乘法化为3次乘法

设两个复数a + bi,c + di。我们先来看三个辅助的量t1 = (a - b) * (c + d),t2 = a * d,t3 = b * c。两个复数相乘的结果实部为a * c – b * d,虚部为a * d + b * c。而实部可以表示为t1 – t2 + t3,虚部可以表示为t2 + t3。这样就可以用三次乘法完成复数相乘了。其思想是用加减代替了乘法。

好了让我们再看看上面的4次乘法,如法炮制:f1 = 2^(n/2)(xL + xR) * (yL + yR),f2 = xL * yL,f3 = xR * yR。

则x * y = f1 – 2^(n/2) f2 + f2 - 2^(n/2) f3 + f3。

这样我们就只做了3次规模为n/2的乘法,即3/4*n^2,这样的结果还比较满意,也许你觉得这样的优化微不足道,但我们可以一直这么分下去,最后得到递推表达式:T(N) = 3T(n/2) + O(n)。当n趋于无穷大时你会发现时间复杂度降到了O(n^lg3),这已经非常可观了,高斯果然牛X。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值