問題:請程式設計實現矩陣乘法,並考慮當矩陣規模較大時的優化方法。
思路一:暴力解法
直接根據數學中矩陣乘法的計算公式:
計算目標矩陣中各個元素的值。
//思路一:暴力解法
//矩陣乘法,3個for迴圈搞定
void mul(int** matrixa, int** matrixb, int** matrixc)
}
}
}
思路二:
strassen演算法
詳情請看:
總結:矩陣乘法一般意義上還是選擇:樸素的方法
(暴力解法),只有當矩陣階數很大(稠密)時,才會選擇
strassen演算法。
strassen矩陣乘法 Strassen矩陣乘法
求矩陣a,b相乘的結果c 直接根據矩陣乘法的定義來遍歷計算。c 語言 void matrixmul int a,int b,int c,int m,int b,int n void test3 int b 3 2 int c 2 2 matrixmul int a,int b,int c,2,3,2...
矩陣乘法 之 strassen 演算法
一般情況下矩陣乘法需要三個for迴圈,時間複雜度為o n 3 現在我們將矩陣分塊如圖 來自mit演算法導論 一般演算法需要八次乘法 r a e b g s a f b h t c e d g u c f d h strassen將其變成7次乘法,因為大家都知道乘法比加減法消耗更多,所有時間複雜更高!...
Strassen矩陣乘法
strassen矩陣乘法 strassen矩陣乘法是通過遞迴實現的,它將一般情況下二階矩陣乘法 可擴充套件到 階,但strassen矩陣乘法要求 是 的冪 所需的8次乘法降低為7次,將計算時間從o ne3 降低為o ne2.81 矩陣c ab,可寫為 c11 a11b11 a12b21 c12 a1...