1.定義:
$c[i][j]=\sum a[i][k]\times b[k][j]$
所以矩陣乘法有條件,(n*m)*(m*p)=n*p
即第乙個矩陣的列數等於第二個矩陣的行數,否則沒有意義。
2.結合律與分配率
矩陣乘法不一定任何時候都有交換律。因為交換後甚至不能保證第乙個矩陣的列數等於第二個矩陣的行數。
但是,矩陣乘法有結合律。
a*b*c=a*(b*c)
這是乙個最常用的運算律,使之可以用矩陣快速冪。
3.構造技巧。
矩陣乘法主要用途還是矩陣加速dp。
例如什麼n=1e9之類的。
關鍵還是在於列出dp或者叫遞推式子。
by lyd:
1.一定是線性遞推式(斐波那契數列)
2.總有乙個轉移矩陣(通常還是正方形)一直不變(才能快速冪)
3.矩陣邊長不能太大,因為乘法複雜度是o(n^3)
4.矩陣保留能往下遞推的項即可。
4.基礎應用:
①斐波那契數列第1e9項。斐波那契數列
②[tjoi2015]棋盤
矩陣乘法除了這樣的優化dp/遞推之外,還可以就矩陣乘法本身出一些題目。
以及一些以矩陣乘法為基礎的構造
5.板板題——預處理+矩陣+定義新運算
矩陣乘法優化DP
定義三個矩陣a,b,c,其中行和列分別為 m times n,n times p,m times p 其中行是從上往下數的,列是從左往右數的 c sum a times b 矩陣乘法具有結合律,但沒有交換律,可以乘方 求逆。做矩陣優化dp的題目步驟 1 quad 把 dp 方程推出來 假如不能手推,...
程式碎片 矩陣乘法優化 dp,遞迴
usingsystem usingsystem collections generic namespacesdproject privatevoidinitial this.mlist newlist martix array int m newint 5,5 publicvoidgetbestso...
矩陣鏈乘法 DP
矩陣鏈乘法是這樣的問題 給定n個矩陣 a1,a2,an,其中ai與ai 1是可乘的,i 1,2 n 1。確定計算矩陣連乘積的計算次序,使得依此次序計算矩陣連乘積需要的數乘次數最少。輸入資料為矩陣個數和每個矩陣規模,輸出結果為計算矩陣連乘積的計算次序和最少數乘次數。我們稱有如下性質的矩陣乘積鏈為完全括...