演算法筆記——矩陣乘法
阿新 • • 發佈:2019-01-04
矩陣乘法的概述
一個矩陣有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次,即是上述表示式的值