算法笔记——矩阵乘法

矩阵乘法的概述

一个矩阵有n行m列,一个矩阵有x行y列。当m == x的时候, 才可以进行矩阵运算。

算法比较难记,生成的矩阵共n行y列。

拿第一个矩阵的i行每一个元素与第二个矩阵j列的每一个数对应, 生成的矩阵i,j位置的值为这些对应的值的积的和。

矩阵乘法的作用

每增加一个维度,世界便会增加无限的美感——517教练

矩阵乘法可以解决无数出乎意料的递推式(当要推的值实在太大的时候)

比如例题 斐波那契数列 递推式 f[n] = f[n-1] + f[n-2];

我们构造矩阵 1. 一行两列放两个递推的值 f[x], f[x-1]

矩阵 2 两行两列 全是常数 

1 1           我们把这两个矩阵相乘, 就会出现一个1行2列的矩阵,我们发现它的值就是f[x+1], f[x];

1 0 

矩阵乘法和乘法一样, 满足分配率与结合率,因此,矩阵乘法是满足快速幂的运算的。

我们就可以对2号全是常数的矩阵求其的n次幂, 可以在logn的时间内求出斐波那契数列的值。

我们可以构造一个全是常数的矩阵来满足线性加减的递推式,也可以用各种神奇的操作完成其他的运算:

例题:已知A为一个矩阵 求 A+A×A+A^3+.......A^k的值

我们对其矩阵外再套一个矩阵, 设计矩阵:

A A    × A A =  A ^ A + A,  A ^ A 

1  0  1  0       1                 0

我们对这个矩阵自乘k次,即是上述表达式的值

猜你喜欢

转载自blog.csdn.net/gjc2561571372/article/details/81076789