算法之矩阵快速幂
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
相关文章推荐
- 稀疏矩阵一次定位快速转置算法
- 省选算法学习-矩阵与矩阵快速幂
- 矩阵快速幂--最基础的算法,最详细的注释
- Strassen矩阵乘法 + 快速计算乘方的算法 + 矩阵的次幂
- 【算法】矩阵的快速幂以及利用快速幂去解题
- sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】
- 矩阵快速幂算法的原理与实践——“使用MATLAB求解大型斐波那契数"
- 矩阵相乘,快速算法 HDOJ 4291 A Short problem
- 算法——矩阵快速幂 求第N个斐波那契数
- 蓝桥杯 算法提高 递推求值 【矩阵快速幂】
- 算法学习 - 快速幂和矩阵快速幂(复杂度Olog(n))C++实现
- 关于矩阵N次方的一个比较快速算法
- 蓝桥杯 算法训练 矩阵乘方(矩阵快速幂取模)
- MySQL实现算法:矩阵快速幂
- 51NOD 1537 分解(矩阵快速幂)——算法马拉松17(告别奥运)
- 算法提高 递推求值 (矩阵快速幂)
- 由正交矩阵构建的仿射变换矩阵求逆的快速算法
- 稀疏矩阵快速转置算法分析
- 算法录 之 快速幂快速乘和矩阵快速幂。
- 基础数论算法(八) 矩阵乘法与线性齐次递推公式的快速求值