计算机考研稀疏矩阵精选文档.ppt

上传人:石*** 文档编号:78731537 上传时间:2023-03-19 格式:PPT 页数:26 大小:1.46MB
返回 下载 相关 举报
计算机考研稀疏矩阵精选文档.ppt_第1页
第1页 / 共26页
计算机考研稀疏矩阵精选文档.ppt_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《计算机考研稀疏矩阵精选文档.ppt》由会员分享,可在线阅读,更多相关《计算机考研稀疏矩阵精选文档.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、计算机考研稀疏矩阵本讲稿第一页,共二十六页5.3.1 特殊矩阵bb对称矩阵对称矩阵对称矩阵对称矩阵:a aijij=a=ajiji(1=i,j=n)(1=i,j=n)bb下三角矩阵下三角矩阵下三角矩阵下三角矩阵:当当ijij时时,aij=0,(1=i,j=n)aij=0,(1=i,j 1|i-j|1时时,a aijij=0,(1=i,j=n)=0,(1=i,j=n)a a1111 a1212 a1313.a1n1n a2121 a a2222 a2323.a2n2n a3131 a3232 a a3333.a3n3n .an1n1 an2n2 an3n3.a annnnAnxn=本讲稿第二页,

2、共二十六页对对 称称 矩矩 阵阵:aij=aji(1=i,j=ji=jbb k=k=k=k=bb j(j-1)/2+i j(j-1)/2+i j(j-1)/2+i j(j-1)/2+i 当当 i ji j本讲稿第三页,共二十六页例5.3 对称矩阵bbn=5,1+2+3+4+5=5*(5+1)/2=15bb一维数组一维数组SA1.15作为数组作为数组A A的存储结构的存储结构:bbSA=(SA=(4 4 5 2 2 3 1 3 3 2 5 2 8 8 1 6 7 9 1 6 7 9 5 5 5 5)bb如:a5,3=a3,5=7bb k=5(5-1)/2+3=13bb故:sa13=7 :sa13

3、=7 4 4 5 3 2 15 2 2 1 5 63 1 3 3 2 72 5 2 8 8 91 6 7 9 5 5A=4 4 5 2 2 03 1 3 3 2 5 2 8 8 1 6 7 9 5 5A=本讲稿第四页,共二十六页下下三三角角矩矩阵阵:当ij时,aij=0,(1=i,j=j)i=j)bb 0 (0 (当当 i 1|i-j|1时时,a aij=0,(1=i,j=n)=0,(1=i,j=n)bb a a11111111 a1212 0 0.0 0 0.0bb a2121 a a2222 a23232323 0 .0 0 .0bbAnxn=0 a3232 a a3333 a343434

4、34 .0bb .bb 0 0 0.a 0 0 0.ann-1nn-1 a annnnnnnnbb一一维维数数组组SA1.3*n-2作为数组A下三角元素的存储结构:bbSAk=SAk=a a a a11111111,a,a12121212,a,a21212121,a a a a22222222,a,a23232323,a,a32323232,a a a a33333333,a,a34343434,.,a,.,ann-1nn-1nn-1nn-1,a a a annnnnnnn bb k =1 2 3 4 5 6 7 8 3n-3 3n-2k =1 2 3 4 5 6 7 8 3n-3 3n-2本

5、讲稿第七页,共二十六页bbsaksak和和ai,jai,j的一一对应关系的一一对应关系:bb sak,k=3*(i-1)+j-i+1,sak,k=3*(i-1)+j-i+1,sak,k=3*(i-1)+j-i+1,sak,k=3*(i-1)+j-i+1,bbai,j=ai,j=ai,j=ai,j=当当|i-j|=1|i-j|1|i-j|1本讲稿第八页,共二十六页例5.5 三对角矩阵bb 4 4 3 3 0 0 0 0 0 0 bb 5 2 2 5 2 2 5 2 2 5 2 2 0 0bb A=0 A=0 1 0 4 1 0 4 0 0 bb 0 0 0 0 2 8 72 8 7bb 0 0

6、0 9 5 9 5 9 5 9 5bb一维数组SA1.3*5-2作作为为数数组组A的的存存储储结结构构:SA=(SA=(4 4 4 4 3 5 3 5 2 2 2 2 2 1 0 0 4 2 4 2 8 8 7 9 5 5 5 5)bb如如:a5,4=9bb k=3*(5-1)+4-5+1=12bb故故故故:sa12=9sa12=9本讲稿第九页,共二十六页5.3.2 5.3.2 稀疏矩阵 通常稀疏因子稀疏因子0.05时称为稀疏矩阵.bb例例5.6 5.6 bb 0 12 9 0 0 0 0 0 0-3 0 0 15 0 12 9 0 0 0 0 0 0-3 0 0 15bb 0 0 0 0 0

7、 0 0 12 0 0 0 18 0 0 0 0 0 0 0 0 12 0 0 0 18 0bbM=-3 0 0 0 0 14 0 9 0 0 24 0 0M=-3 0 0 0 0 14 0 9 0 0 24 0 0bb 0 0 24 0 0 0 0 T=0 0 0 0 0-7 0 0 24 0 0 0 0 T=0 0 0 0 0-7bb 0 18 0 0 0 0 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0bb 15 0 0-7 0 0 0 0 0 14 0 0 0 15 0 0-7 0 0 0 0 0 14 0 0 0bb 0 0 0 0 0 0 0 0

8、 0 0 0 0bbM:mu x nu(6x7)M:mu x nu(6x7)bbT:nu x mu(7x6)T:nu x mu(7x6)bbM M是是T T的转置的转置本讲稿第十页,共二十六页稀疏矩阵的存储结构 一.三元组顺序表bb M:i j e T:i j eM:i j e T:i j eM:i j e T:i j eM:i j e T:i j ebb 1 2 12 1 3 -3 1 2 12 1 3 -3 bb 1 3 9 1 6 15 1 3 9 1 6 15 bb 3 1 -3 2 1 12 3 1 -3 2 1 12 bb 3 6 14 2 5 18 3 6 14 2 5 18 b

9、b 4 3 24 3 1 9 4 3 24 3 1 9 bb 5 2 18 3 4 24 5 2 18 3 4 24 bb 6 1 15 4 6 -7 6 1 15 4 6 -7 bb 6 4 -7 6 3 14 6 4 -7 6 3 14 本讲稿第十一页,共二十六页三元组顺序表结构定义bb#define#define MAXSIZE 12500bbtypedef struct bb int i,j;bb Elemtype e;bbTriple;bbtypedef union bb Triple dataMAXSIZE+1;Triple dataMAXSIZE+1;bb int mu,nu,t

10、u;bbTSMatrix;bbTSMatrix M,T;M.datap .i .j .e012.maxsize本讲稿第十二页,共二十六页求 稀 疏 矩 阵 M的 转 置 矩 阵 TTSMatrix M,T;012345678012345678M.datap .i .j .eT.dataq .i .j .e本讲稿第十三页,共二十六页求稀疏矩阵M的转置矩阵TbbStatus TransposeSMatrix(TSMatrix M,TSMatrix&T)Status TransposeSMatrix(TSMatrix M,TSMatrix&T)bb T.mu=M.nu;T.nu=M.mu;T.tu=

11、M.tu;T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;bb if(T.tu)if(T.tu)bb q=1;q=1;bb for(col=1;col=M.nu;+col)for(col=1;col=M.nu;+col)bb for(p=1;p=M.tu;+p)for(p=1;p=M.tu;+p)bb if(M.datap.j=col)if(M.datap.j=col)bb T.dataq.i=M.datap.j;T.dataq.i=M.datap.j;bb T.dataq.j=M.datap.i;T.dataq.j=M.datap.i;bb T.dataq.e=M.datap.e

12、;+q;T.dataq.e=M.datap.e;+q;bb bb bb retrun OK;retrun OK;bb/TransposeSMatrix/TransposeSMatrix本讲稿第十四页,共二十六页求稀疏矩阵转置的算法复杂度算法复杂度bb其算法复杂度是其算法复杂度是 O(nu*tu)O(nu*tu)bb而一般矩阵的转置算法的复杂度是而一般矩阵的转置算法的复杂度是O(mu*nu):O(mu*nu):O(mu*nu):O(mu*nu):bb for(col=1;col=nu;+col)bb for(row=1;row=mu;+row)for(row=1;row=mu;+row)bb T

13、colrow=Mrowcol;Tcolrow=Mrowcol;bb所以所以,当tu=mu*nu tu=mu*nu tu=mu*nu tu=mu*nu 时时,bb 算法复杂度是 O(nu*nu*mu)O(nu*nu*mu)O(nu*nu*mu)O(nu*nu*mu)bb 当tu mu*nu tu mu*nu 时时,才适用才适用本讲稿第十五页,共二十六页求 稀 疏 矩 阵M的 转 置 矩 阵T的快速方法bb为了减少算法复杂度,增加两个向量增加两个向量 num 和和 cpot:cpot:bb numcol:M中第中第 col col 列中非零元素的个数列中非零元素的个数;bbcpotcol:Mcpo

14、tcol:M中第col列列中中的的第第一一个个非非零零元元素素在在T.data中中的位置的位置;bb有:cpot1=1;bb cpotcol=cpotcol-1+numcol-1 cpotcol=cpotcol-1+numcol-1bb 2=col=m.nu 2=col=m.nu本讲稿第十六页,共二十六页bb例例5.6 5.6 bb 0 12 9 0 0 0 0 0 0-3 0 0 15 0 12 9 0 0 0 0 0 0-3 0 0 15bb 0 0 0 0 0 0 0 12 0 0 0 18 0 0 0 0 0 0 0 0 12 0 0 0 18 0bbM=-3 0 0 0 0 14 0

15、 9 0 0 24 0 0M=-3 0 0 0 0 14 0 9 0 0 24 0 0bb 0 0 24 0 0 0 0 T=0 0 0 0 0-7 0 0 24 0 0 0 0 T=0 0 0 0 0-7bb 0 18 0 0 0 0 0 0 0 0 0 0 0 0 18 0 0 0 0 0 0 0 0 0 0 0bb 15 0 0-7 0 0 0 0 0 14 0 0 0 15 0 0-7 0 0 0 0 0 14 0 0 0bb 0 0 0 0 0 0 0 0 0 0 0 0bb例5.65.6的向量 num num 和和 cpot:cpot:bb col 1 2 3 4 5 6 7 co

16、l 1 2 3 4 5 6 7 bb num 2 2 2 1 0 1 0 num 2 2 2 1 0 1 0bb cpot 1 3 5 7 8 8 9本讲稿第十七页,共二十六页bbStatus FastTransposeSMatrix(TSMatrix M,TSMatrix&T)Status FastTransposeSMatrix(TSMatrix M,TSMatrix&T)bb T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;bb if(T.tu)if(T.tu)bb for(col=1;col=M.nu;+col)n

17、umcol=0;for(col=1;col=M.nu;+col)numcol=0;bb for(t=1;t=M.tu;+t)+numM.datat.j;for(t=1;t=M.tu;+t)+numM.datat.j;bb cpot1=1;cpot1=1;bb for(col=2;col=M.nu;+col)for(col=2;col=M.nu;+col)bb cpotcol=cpotcol-1+numcol-1;cpotcol=cpotcol-1+numcol-1;bb for(p=1;p=M.tu;+p)for(p=1;p=M.tu;+p)bb col=M.datap.j;q=cpotcol

18、;col=M.datap.j;q=cpotcol;bb T.dataq.i=M.datap.j;T.dataq.i=M.datap.j;bb T.dataq.j=M.datap.i;T.dataq.j=M.datap.i;bb T.dataq.e=M.datap.e;+cpotcol;T.dataq.e=M.datap.e;+cpotcol;bb bb bb retrun OK;retrun OK;bb/FastTransposeSMatrix/FastTransposeSMatrix本讲稿第十八页,共二十六页 col 1 2 3 4 5 6 7 col 1 2 3 4 5 6 7 num 2

19、 2 2 1 0 1 0 num 2 2 2 1 0 1 0 cpot 1 3 5 7 8 8 9 cpot 1 3 5 7 8 8 9012345678M.datap .i .j .e012345678T.dataq .i .j .e本讲稿第十九页,共二十六页求稀疏矩阵转置的快速算法的算法复杂度算法复杂度bb其算法复杂度是其算法复杂度是 O(nu+tu)bb 当tu=mu*nu 时,算法复杂度是算法复杂度是 O(nu*mu)O(nu*mu)bb 当tu mu*nu 时时,时间复杂度将小得多时间复杂度将小得多本讲稿第二十页,共二十六页bb#define MAXRC 100bbtypedef s

20、truct typedef struct bb int i,j;bb Elemtype e;Elemtype e;bbTriple;Triple;bbtypedef struct typedef struct bb Triple dataMAXSIZE+1;bb int rposMAXRC+1;bb int mu,nu,tu;int mu,nu,tu;bbRLSMatrix;二.行 逻 辑 链 接 的 顺 序 表指出每一行的第一个非零元素在三元组中的位置指出每一行的第一个非零元素在三元组中的位置M.datap .i .j .e012.maxsizeM.rposrow本讲稿第二十一页,共二十六页

21、例5.7 矩阵的乘法 Q=M x N Q=M x N Q=M x N Q=M x N M:M:M:M:m1 x n x n1 1 N:N:m m2 2 x n2 当当n n1 1=m=m2 2时时 3 0 0 5 0 2 0 6M=0 -1 0 0 N=1 0 Q=-1 0 2 0 0 0 -2 4 0 4 0 0M.data N.data Q.data i j e i j e i j e 1 1 3 1 2 2 1 2 6 1 4 5 2 1 1 2 1 -1 2 2 -1 3 1 -2 3 2 4 3 1 2 3 2 4 row 1 2 3M.rpos 1 3 4 row 1 2 3Q.r

22、pos 1 2 3row 1 2 3 4N.rpos 1 2 3 5本讲稿第二十二页,共二十六页求两个稀疏矩阵的乘积的算法bbQ初始化初始化;bbif(Mif(M和N均是非零矩阵均是非零矩阵)bb for(arow=1;arow=M.mu;+arow)bb ctemp=0;ctemp=0;bb 计算计算Q Q中第中第arow行的积并存入行的积并存入ctempctemp中中;bb 将ctemp中非零元压缩存储到Q.data;bb bb 本讲稿第二十三页,共二十六页Status MultiSMatrix(RLSMatrix M,RLSMatrix N,RLSMatrix&Q)if(M.nu!=N.

23、mu)return ERROR;Q.mu=M.mu;Q.nu=N.nu;Q.tu=0;/Q初始化;if(M.tu*N.tu!=0)/Q可能是非零矩阵 for(arow=1;arow=M.mu;+arow)ctemp=0;Q.rposarow=Q.tu +1;for(p=M.rposarow;pM.rposarow+1;+p)brow=M.datap.j;if(brow N.nu/*N.mu?*/)t=N.rposbrow+1;else t=N.tu+1;for(q=N.rposbrow;q t;+q)ccol=N.dataq.j;ctempccol+=M.datap.e*N.dataq.e;/

24、for p for(ccol=1;ccol MAXSIZE)return ERROR;Q.dataQ.tu=arow,ccol,ctempccol;/for arow /if return OK;本讲稿第二十四页,共二十六页时间复杂度时间复杂度:ctemp 的时间复杂度是 O(M.mu X N.nu);O(M.mu X N.nu);bb求Q Q所有非零元的时间复杂度是所有非零元的时间复杂度是bb O(M.tu X N.tu/N.mu);O(M.tu X N.tu/N.mu);bb压缩存储的时间复杂度是压缩存储的时间复杂度是O(M.tu X N.tu/N.mu);bb时间复杂度是时间复杂度是:b

25、b O(M.mu X N.nu+M.tu X N.tu/N.mu);O(M.mu X N.nu+M.tu X N.tu/N.mu);bbfor(i=1;i=m1;+i)for(i=1;i=m1;+i)bb for(j=1;j=n2;+j)bb Qij=0;bb for(k=1;k=n1;+k)bb Qij+=Mik*Nkj;bb /算法复杂度是 O(m1*n1*n2)本讲稿第二十五页,共二十六页实验与习题bb理论习题 5.6,5.7,5.8,5.9bb实验题:写一个主程序来写一个主程序来上机验证上机验证求稀疏矩阵求稀疏矩阵M M的转置矩阵的转置矩阵T T的快的快速方法速方法的存储结构;并计算的存储结构;并计算A A的转置 15 0 0 22 15 0 0 22 A=0 -6 0 0 91 0 0 0 91 0 0 0 5.215.21本讲稿第二十六页,共二十六页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁