快速幂的应用

 一个非常平常的公式:

x^n = (x^(n/2))^2 (n为偶数)

x^n = (x^((n-1)/2))^2 * x (n为偶数)

这两个公式初中应该就学了。可是似乎他一直没发挥什么作用。事实上他在计算机科学中的作用甚大。可以观察等号左侧的式子对于计算机来说需要计算n-1次乘法,而对于右边的式子只进行了约n/2+1次乘法。这个差别对于计算机来说是巨大的。而且右边的式子中的幂运算还可以进行同样的变换,那么可能最终只需进行log(n)左右次的乘法。这个真是天壤之别。

譬如应用中的斐波那契数列,除了用通项公式解之外,大多数人是迭代接触的,求第n项需进行n次左右的加法,算法复杂度O(n)。而如果把式子写成矩阵形式:

 

其实就是对(F(1), F(0))不停地左乘同一个矩阵即可。也就是给(F(1), F(0))做成这个矩阵的n次方,F(n)即可得到。有牵扯都一个东西的n次方。这时是不是可以用到快速幂了!YES,这样效率可以提高的O(log(n))。

这在大数量时是非常有效的,把繁重的线性迭代计算,转换成O(log(n))的效率!非常不错!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值