资源预览内容
第1页 / 共140页
第2页 / 共140页
第3页 / 共140页
第4页 / 共140页
第5页 / 共140页
第6页 / 共140页
第7页 / 共140页
第8页 / 共140页
第9页 / 共140页
第10页 / 共140页
亲,该文档总共140页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
行逻辑链接的顺序表,typedef structTriple dataMAXSIZE+1; /非零三元组表int rposMAXRC+1; /各行第一个非零元素的位置表int mu, nu, tu; /矩阵的行数,列数和非零元素个数 RLSMatrix;,行逻辑链接的顺序表,typedef structTriple dataMAXSIZE+1; /非零三元组表int rposMAXRC+1; /各行第一个非零元素的位置表int mu,nu,tu; /矩阵的行数,列数和非零元素个数 RLSMatrix;,特点: 随机存取任意一行的非零元,N.data,1,2,3,5,for(i=1; i=m1; +i)for(j=1; jn2; +j)Qij=0;for(k=1; kn1; +k) Qij+=Mik*Nkj;,一般矩阵相乘,时间复杂度,稀疏矩阵相乘,M.data,N.data,Q.data,稀疏矩阵相乘基本思路,1,i,m,1,rposk,r,k,xrk,r,k,xrk,k,s1,yks1,k,s2,yks2,rposk,k,s1,yks1,r,s1,s2,zrs1,zrs2,M.data,N.data,Q,相乘,相加,稀疏矩阵相乘,M.data,N.data,第一步:找对应元素,numrow=rposrow+1 rposrow,第二步:累积求和,第三步:压缩存储,Q初始化; if(Q是非零矩阵) /逐项求积for(arow=1; arow=M.mu; +arow) /处理M的每一行ctemp =0; /累加器清零计算Q中第arow行的积并存入ctemp 中;将ctemp 中非零元素压缩存储到Q.data; /for arow /if,稀疏矩阵相乘基本思路,M,N,Q,M.data,N.data,Q.data,M,N,Q,M.data,N.data,Q.data,累加值:0 0,处理第 1 行,M,N,Q,M.data,N.data,Q.data,累加值:0 0,处理第 1 行,M,N,Q,M.data,N.data,Q.data,累加值:0 6,处理第 1 行,M,N,Q,M.data,N.data,Q.data,累加值:0 6,处理第 1 行,M,N,Q,M.data,N.data,Q.data,累加值:0 6,处理第 1 行,M,N,Q,M.data,N.data,Q.data,累加值:0 6,处理第 1 行,M,N,Q,M.data,N.data,Q.data,累加值:0 0,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:0 0,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:-1 0,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:-1 0,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:-1 0,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:-1 0,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:0 0,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:0 0,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:0 0,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:0 3,处理第 2 行,M,N,Q,M.data,N.data,Q.data,累加值:0 3,处理第 2 行,M,N,Q,M.data,N.data,累加值:0 0,Q.data,处理第 3 行,M,N,Q,M.data,N.data,累加值:0 0,Q.data,处理第 3 行,M,N,Q,M.data,N.data,累加值:0 4,Q.data,处理第 3 行,M,N,Q,M.data,N.data,累加值:0 4,Q.data,处理第 3 行,M,N,Q,M.data,N.data,累加值:-1 4,Q.data,处理第 3 行,M,N,Q,M.data,N.data,累加值:-1 4,Q.data,处理第 3 行,M,N,Q,M.data,N.data,累加值:-1 1,Q.data,处理第 3 行,M,N,Q,M.data,N.data,累加值:-1 1,Q.data,处理第 3 行,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/for p, 求得Q中第crow(=arow)行的非零元,for(ccol=1; ccolMAXSIZE) return ERROR;Q.dataQ.tu= arow, ccol, ctempccol ; /if/for arow,处理M的每一行/if (M.tu*N.tu!=0)return OK; /MultSMatrix,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,Ctemp=0, 0, Q.tu=0, Q.rpos1=0, arow=1, brow=0, t=0,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,Ctemp=0, 0, Q.tu=0, Q.rpos1=0, arow=1, brow=0, t=0,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,Ctemp=0, 0, Q.tu=0, Q.rpos1=1, arow=1, brow=0, t=0,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,Ctemp=0, 0, Q.tu=0, Q.rpos1=1, arow=1, brow=0, t=0,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,Ctemp=0, 0, Q.tu=0, Q.rpos1=1, arow=1, brow=1, t=0,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,Ctemp=0, 0, Q.tu=0, Q.rpos1=1, arow=1, brow=1, t=2,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,q,Ctemp=0, 0, Q.tu=0, Q.rpos1=1, arow=1, brow=1, t=2,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,q,Ctemp=0, 0, Q.tu=0, Q.rpos1=1, arow=1, brow=1, t=2,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,q,Ctemp=0, 6, Q.tu=0, Q.rpos1=1, arow=1, brow=1, t=2,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,q,Ctemp=0, 6, Q.tu=0, Q.rpos1=1, arow=1, brow=1, t=2,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,q,Ctemp=0, 6, Q.tu=0, Q.rpos1=1, arow=1, brow=1, t=2,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,q,Ctemp=0, 6, Q.tu=0, Q.rpos1=1, arow=1, brow=1, t=2,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,q,Ctemp=0, 6, Q.tu=0, Q.rpos1=1, arow=1, brow=4, t=2,Status MultSMatrix(RLSMatrix M, RLSMatrix N, RLSMatrix /for q/求得Q中第crow(=arow)行的非零元,p,q,Ctemp=0, 6, Q.tu=0, Q.rpos1=1, arow=1, brow=4, t=2,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号