一般情况下矩阵乘法需要三个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的处理是: 令: p1 = a * ( f - h ) p2 = ( a + b ) * h p3
// Matrix.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include using namespace std; int *Multi(int *a,int m1,int n1, int *b,int m2,int n2, int &m,int &n) { if(n1!=m2) { cout<<"Error!"<<endl; exit(1)
实现矩阵乘法的多线程算法 public class WorkerThread 工mplements Runnable private 工nt row; pr 工vate int col; private int [] [] A; private int [] [] B; private int [] [] C;