矩阵的快速幂
来源:互联网 发布:隐形口罩 知乎 编辑:程序博客网 时间:2024/05/17 09:25
矩阵的应用的场景是计算矩阵A的n次幂,也就是为了加速js
代码来实现一下这个思想:
// 测试数组var A = [[2, 1], [4, 3]], B = [[1, 2], [1, 0]];function Counting (matrix, power) { var res = 1; while (power) { if (power & 1) { res = matrixMul(A, res); } power >>= 1; if (power) A = matrixMul(A, A); } return res;}// 封装矩阵乘法function matrixMul (matrixA, matrixB) { if (matrixA === 1) { return matrixB; } else if (matrixB === 1) { return matrixA; } else if (matrixA.length === void 0 || matrixB.length === void 0) { var arr = matrixA.length ? matrixA : matrixB, num = +(matrixA) || +(matrixB), result = []; for (var i = 0, len = arr.length; i < len; i++) { result[i] = []; for (var j = 0, childLen = arr[i].length; j < childLen; j++) { result[i][j] = num * arr[i][j]; } } return result; } else { var result = []; for (var i = 0; i < matrixA.length; i++) { result[i] = []; for (var k = 0; k < matrixB[0].length; k++) { result[i][k] = 0; for (var j = 0; j < matrixB.length; j++) { result[i][k] += matrixA[i][j] * matrixB[j][k]; } } } return result; }}// 测试console.log(matrixMul(A, 2)); // [ [ 4, 2 ], [ 8, 6 ] ]console.log(matrixMul(A, B)); // [ [ 3, 4 ], [ 7, 8 ] ]console.log(Counting(A, 4)); // [ [ 164, 105 ], [ 420, 269 ] ]
0 0
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的快速幂
- 矩阵的乘法和矩阵快速幂
- 矩阵快速幂---递推题的快速计算
- 快速幂求模+矩阵的快速幂
- 求矩阵的快速幂
- hdu2276(矩阵的快速幂)
- 求矩阵的快速幂
- 矩阵快速幂的学习
- 矩阵的快速幂模板
- 矩阵快速幂的复习。。。
- springmvc tomcat转weblogic
- 通过UIColor创建图片
- java 获取 jar 包内文件列表
- Hibernate配置C3P0支持
- git学习笔记
- 矩阵的快速幂
- 门面模式
- HDUOJ 1005 Number Sequence(DP求公式)
- 大端模式小端模式
- powerdesigner
- nodeJS ejs模板引擎 片段视图+视图助手
- Java中怎么切换窗口
- 等待中
- html5笔记—— 插入视频音频