资源描述:
《Stranssen矩阵乘法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Strassen矩阵乘法A和B都是n*n的方阵,计算C=A* B。这个通常做法的乘法计算量是0(exp(n,3)),为了把这个计算数量级从3降到log2(7),log2(7)略小于2.81。我们使用Strassen乘法,方法如下:输入方阵的阶,和方阵A,B,输出C。测试数据:SampleIn(in.txt)91325893835327732265678421732547481578326386582648321893547546302585931683521675831113122538493328335327732223526784
2、321474424547481528132463683650262348321823534754563Workofhzq2012/10/10212358594315610343323221253SampleOut(out.txt)10311038815347131334648733726810156126604399164784893822541166653506430144444645561751892610267634471108292334441374728113799261212437865215213648988326314
3、6813912943444233961021511586310853553385410451148381477448315533185286155408679307793691319488491357350Code:(strassen.cpp)#include#include#defineN65usingnamespacestd;voidshow(intn,intarray[][N]){for(inti=0;i4、]<<"";}cout<5、/voidmatPlu(inta[][N],intb[][N],intc[][N],intn)Workofhzq2012/10/10{for(inti=0;i6、][N]){inttemp1[N][N];matPlu(a21,a22,temp1,n);matMin(temp1,a11,temp1,n);inttemp2[N][N];matMin(b22,b12,temp2,n);matPlu(temp2,b11,temp2,n);strassen(n,temp1,temp2,m1);}voidfuncM2(intm2[][N],intn,inta11[][N],inta12[][N],inta21[][N],inta22[][N],intb11[][N],intb12[][N],intb21[
7、][N],intb22[][N]){strassen(n,a11,b11,m2);}voidfuncM3(intm3[][N],intn,inta11[][N],inta12[][N],inta21[][N],inta22[][N],intb11[][N],intb12[][N],intb21[][N],intb22[][N]){strassen(n,a12,b21,m3);}voidfuncM4(intm4[][N],intn,inta11[][N],inta12[][N],inta21[][N],inta22[][N],intb1
8、1[][N],intb12[][N],intb21[][N],intb22[][N]){inttemp1[N][N];matMin(a11,a21,temp1,n);inttemp2[N][N];matMin(b22,b