您的位置:首页 > 其它

算法之矩阵快速幂

2018-03-15 13:26 267 查看

矩阵快速幂

矩阵的快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度,降到log(n)。

这里先对原理(主要运用了矩阵乘法的结合律)做下简单形象的介绍:

一般一个矩阵的n次方,我们会通过连乘n-1次来得到它的n次幂。

但做下简单的改进就能减少连乘的次数,方法如下:

把n个矩阵进行两两分组,比如:A*A*A*A*A*A => (A*A)(A*A)(A*A)

这样变的好处是,你只需要计算一次A*A,然后将结果(A*A)连乘自己两次就能得到A^6,即(A*A)^3=A^6。算一下发现这次一共乘了3次,少于原来的5次。

矩阵快速幂的Java代码如下:

public int[][] quickMatrix(int[][] A,int n){
//参数的含义: 将矩阵A连乘n次,也就是A^n<
4000
/span>
if(n==1)   return A;
if(n%2==1)
return quickMatrix(A,n-1)*A;   //这里的乘号*代表的是矩阵相乘
else{
int[][] temp=quickMatrix(A,n/2);
return temp*temp;
}
}


第六届蓝桥杯Java A组第九题需要用到矩阵快速幂,可以移步到:

http://blog.csdn.net/weixin_40423553/article/category/7494205
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: