1. 程式人生 > >演算法筆記——矩陣乘法

演算法筆記——矩陣乘法

矩陣乘法的概述

一個矩陣有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次,即是上述表示式的值