在经典算法中, 无论a[i][k]或b[k][j]的值是否为0 ,都要进行一次乘法运算,而实际上,两个中只要有一个为0 ,其积为0 。特别是当m 、 n 、 p很大且矩阵又是稀疏矩阵时,上述经典算法做了许多无效的运算。 if (a.data[p].col==col) { b.data[q].row=a.data[p].col ; b.data[q].col=a.data[p].row ; b.data[q].value=a.data[p].value; q++ ; } } } 算法分析:本算法主要的工作是在p和col的两个循环中完成的,故算法的时间复杂度为O(cn?tn),即矩阵的列数和非0元素的个数的乘积成正比。 而一般传统矩阵的转置算法为: for(col=1; col=n ;++col) for(row=0 ; row=m ;++row) b[col][row]=a[row][col] ; 其时间复杂度为O(n?m)。当非零元素的个数tn和m?n同数量级时,算法TransMatrix的时间复杂度为O(m?n2)。 由此可见,虽然节省了存储空间,但时间复杂度却大大增加。所以上述算法只适合于稀疏矩阵中非0元素的个数tn远远小于m?n的情况。 方法二(快速转置的算法) 算法思想:直接按照稀疏矩阵A的三元组表a.data的次序依次顺序转换,并将转换后的三元组放置于三元组表b.data的恰当位置。 前提:若能预先确定原矩阵A中每一列的(即B中每一行)第一个非0元素在b.data中应有的位置,则在作转置时就可直接放在b.data中恰当的位置。因此,应先求得A中每一列的非0元素个数。 附设两个辅助向量num[ ]和cpot[ ] 。 ◆ num[col]:统计A中第col列中非0元素的个数; ◆ cpot[col] :指示A中第一个非0元素在b.data中的恰当位置。 显然有位置对应关系: cpot[1]=1 cpot[col]=cpot[col-1]+num[col-1] 2≦col≦a.cn 例图5-8中的矩阵A和表5-9(a)的相应的三元组表可以求得num[col]和cpot[col]的值如表5-1: num[col] 1 2 2 1 0 1 1 1 col 1 2 3 4 5 6 7 8 cpot[col] 1 3 5 6 6 7 8 9 表5-1 num[col]和cpot[col]的值表 快速转置算法如下: void FastTransMatrix(TMatrix a, TMatrix b) { int p , q , col , k ; int num[MAX_SIZE] , copt[MAX_SIZE] ; b.rn=a.cn ; b.cn=a.rn ; b.tn=a.tn ; /* 置三元组表b.data的行、列数和非0元素个数 */ if (b.tn==0) printf(“ The Matrix A=0\n” ) ; else { for (col=1 ; col=a.cn ; ++col) num[col]=0 ; /* 向量num[]初始化为0 */ for (k=1 ; k=a.tn ; ++k) ++num[ a.data[k].col] ; /* 求原矩阵中每一列非0元素个数 */ for (cpot[0]=1, col=2 ; col=a.cn ; ++col) cpot[col]=cpot[col-1]+num[col-1] ; /* 求第col列中第一个非0元在b.data中的序号 */ for (p=1 ; p=a.tn ; ++p) { col=a.data[p].col ; q=cpot[col] ; b.data[q].row=a.data[p].col ; b.data[q].col=a.data[p].row ; b.data[q].value=a.data[p].value ; ++cpot[col] ; /*至关重要!!当本列中 */ } } } 2 行逻辑链接的三元组顺序表
您可能关注的文档
- 3.3.4_《体积单位间的进率》答题.ppt
- 3.3.4《体积单位间的进率》答题.ppt
- 3.3.4《体积单位间的进率》课件答题.ppt
- 3.3__无线电通信答题.ppt
- 3.3_细胞核——系统的控制中心答题.ppt
- 3.3《电磁铁的磁力(一)》答题.ppt
- 660MW机组汽机培训(邹继平)介绍.ppt
- 3.3《飞向太空》答题.ppt
- 0702A液压泵的结构1介绍.ppt
- 3.3《交变电流》-文答题.ppt
- 2026-2030中国动力煤市场发展格局及产销需求状况监测研究报告.docx
- 2026年环境传感器行业未来技术路线报告.docx
- 2026年黄酒品牌故事与情感营销策略报告.docx
- 2026年味精行业区域市场发展特点分析报告.docx
- 2026年粉尘传感器行业销售渠道与营销策略研究.docx
- 2026年桑蚕养殖产业区块链技术应用前景.docx
- 2026年葡萄加工行业冷链物流与温度控制技术.docx
- 被动元件2026年行业挑战:产能扩张与需求适配行业报告.docx
- 2026-2030钢筋混凝土行业发展分析及发展趋势与投资前景预测研究报告.docx
- 2026-2030棉质枕芯行业市场现状供需分析及重点企业投资评估规划分析研究报告.docx
最近下载
- 2025年山东医学高等专科学校单招(数学)历年真题考点含答案解析.docx
- 《QSH0038-2007-钻井液用羧甲基纤维素钠盐技术要求》.pdf VIP
- 《桂海虞衡志》中少数民族风俗研究.doc VIP
- QSH 0048-2007 钻井液用聚丙烯酰胺钾盐技术要求.pdf VIP
- 医疗护理员培训大纲(试行).docx VIP
- 一汽大众ERP-SAP_原创文档.pdf VIP
- Haier海尔洗衣机10公斤超薄嵌入洗烘一体机 EG100HPRO51说明书用户手册.pdf
- 一汽大众ERP-SAP一汽大众ERP-SAP.docx VIP
- 新中国60年统计汇编.pdf VIP
- 自贸区对地区经济的影响研究以我国中西部自贸区为例.docx VIP
原创力文档

文档评论(0)