一个非常平常的公式:
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))的效率!非常不错!