首页 > 代码库 > 稀疏矩阵的转置运算
稀疏矩阵的转置运算
(1)设m*n 矩阵中有t 个非零元素且t远小于m*n,这样的矩阵称为稀疏矩阵。很多科学管理及工程计算中,常会遇到阶数很高的大型稀疏矩阵。如果按常规分配方法,顺序分配在计算机内,那将是相当浪费内存的。为此提出另外一种存储方法,仅仅存放非零元素。但对于这类矩阵,通常零元素分布没有规律,为了能找到相应的元素,所以仅存储非零元素的值是不够的,还要记下它所在的行和列。于是采取如下方法:将非零元素所在的行、列以及它的值构成一个三元组(i,j,v),然后再按某种规律存储这些三元组,这种方法可以节约存储空间。
将三元组按行优先的顺序,同一行中列号从小到大的规律排列成一个线性表,称为三元组表,采用顺序存储方法存储该表。如下图:
可以将其改写成如下的三元组的形式,同时存储器行、列和值,如下:
i | j | v |
1 | 2 | 12 |
1 | 3 | 9 |
3 | 1 | -3 |
3 | 6 | 14 |
4 | 3 | 24 |
5 | 2 | 18 |
6 | 1 | 15 |
6 | 4 | -7 |
对应的三元组的数据结构可以写成如下形式的数据结构:
//定义三元组的数据结构类型typedef struct{ int i,j; //非零元素的行和列 ElemType e; //非零元素的值}Triple;//三元组表的存储类型typedef struct{ int mu,nu,tu; //矩阵的行、列以及非零元的个数 Triple data[MAXSIZE+1]; //三元组表}Matrix;
(2)、矩阵的转置
要做到转置要做到三点
①、将矩阵的行列值互换
②、将每个三元组的i、j互换
③、重新排列三元组
如下图:
方法一:
①、将矩阵A的行列转化为矩阵B的列和行
②、一次遍历三元组的每一列的值
稀疏矩阵的转置运算
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。