- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
                        查看更多
                        
                    
                        三元组顺序表又称有序的双下标法。          三元组顺序表的优点:非零元在表中按行序有序存储,因此便于进行依行顺序处理的矩阵运算。          三元组顺序表的缺点:不能随机存取。若按行号存取某  一行中的非零元,则需从头开始进行查找。   2、行逻辑联接的顺序表(带行表的三元组)          在稀疏矩阵中,若要随机存取任意一行的非零元,需要知道  每一行的第一个非零元在三元组表中的位置,而这必须从第一个  元素起进行搜索查询。   14  3  6  -7  6  4 24  4  3   9  1    3  18  5  2 12   1  2 15  6  1  -3  3  1  8  6  7   9   8   8   7   5   3   1     cpot(col)    0   1   0   1   2   2   2     num(col)   7   6   5    4   3   2   1         col         若在稀疏矩阵的存储结构中增加一个行表 rpos  ——快速转置算法中的 cpot,指示稀疏矩阵中每行的  非零元素在三元组表中的起始位置,则不必从第一个  元素起进行搜索查询。称这种“带行链接信息”的三元  组表为:行逻辑联接的顺序表。  #define MAXSIZE 12500                //假设非零元个数的最大值  typedef   struct {       int  i, j;    //该非零元的行列下标       Elemtype  e;  }Triple;   typedef  struct {       Triple  data[MAXSIZE + 1];               int       mu, nu, tu;        //矩阵的行、列数和非零元个数  }TSMatrix; int       rpos[MAXRC + 1];    // 指示各行第一个非零元的位置         两个稀疏矩阵相乘时,可以看出这种表示方法的优越性。  RLSMatrix;  ▲ 矩阵乘法          设矩阵 M 是 m1×n1 矩阵,N 是 m2×n2 矩阵;只有 n1 = m2  时,才能相乘得到结果矩阵 Q = M×N(一个 m1×n2 的矩阵)。  矩阵相乘的经典算法:  for(i=1;  i=m1;  i++)      for(j=1;  j=n2;  j++)       { Q[i][j]=0;          for(k=1;  k=n1;  k++)          Q[i][j] = Q[i][j] + M[i][k] * N[k][j];       }  i  i  j  j  k  k  不论是否为零,都要进行一次乘法运算。  没必要!    2  1  3  -1  2  2   5  4  1   3  1  1     e   j   i    4  2  3  -2  1  3   1  1  2   2  2  1     e   j   i        e   j   i  M[i][k]     *     N[k][j];  2  2  3  3  5  1 rpos[row]  4  1       row    6  2  1    -1  1  2     4  2  3     0   0 6 -1 0 0 4  注意:两个稀疏矩阵相乘的结果              不一定是稀疏矩阵。     int MulSMatrix (RLSMatrix M, RLSMatrix N, RLSMatrix  *Q)    { if (M.nu != N.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)    //逐行处理 M          {  ctemp[ ]=0 ;    // 当前行各元素的累加器清零              Q.rpos[arow] = Q.tu + 1;              if (arowM.mu)  tp=M.rpos[arow+1];              else  tp=M.tu+1;              for (p=M.rpos[arow];  pM.rpos[arow+1];  ++p)       
                您可能关注的文档
最近下载
- 智能消费设备的数据共享与智能互联考核试卷.docx VIP
- 霸王の大陆金手指代码表.pdf VIP
- 产品说明书翻译.docx
- 初中数学专项训练第六章 圆.pdf VIP
- ABB 应用说明文档 - E530 PTI伺服驱动器入门指南 应用说明文档(中文).pdf
- 计量经济学期末考试资料题库(完整编辑版)及其答案解析.pdf VIP
- GB50166-2019 火灾自动报警系统施工及验收标准.pdf VIP
- 译林版九年级英语上学期单元重点 Unit 5【速记清单】.pdf VIP
- 苏教版五年级上册数学全册课件.pptx VIP
- 2023-2024学年福建省厦门市松柏中学七年级(上)期末英语试卷.docx VIP
 原创力文档
原创力文档 
                        

文档评论(0)