[数据结构] 稀疏矩阵的转置与快速转置

您所在的位置:网站首页 一行矩阵的转置怎么求 [数据结构] 稀疏矩阵的转置与快速转置

[数据结构] 稀疏矩阵的转置与快速转置

2024-07-12 18:26| 来源: 网络整理| 查看: 265

稀疏矩阵 稀疏矩阵的定义

在矩阵中,若数值为 0 的元素数目远远多于非 0 元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。

假设在 m * n 的矩阵中,有 t 个非 0 元素,令 δ = t / (m * n) ,则 δ 为矩阵的稀疏因子。

稀疏矩阵的压缩存储 三元组表示法

稀疏矩阵由于非 0 元素很少,所以我们需要压缩存储矩阵。

我们只存储矩阵中的非零元。用 (i, j, e) 来表示一个非零元,其中 i 和 j 表示非零元所在行和列,e 表示非零元的值。稀疏矩阵可以由表示非零元的三元组及其行列数唯一确定。

三元组表示示例

三元组表在存储非零元的时候,首先要按照行序顺序排列,如果行相同,那么需要按照列序顺序排列。

三元组表的基本结构 typedef int ElemType; typedef struct{ int i, j; ElemType e; }Triple; typedef struct{ Triple data[MAXSIZE]; int mu, nu, tu; //矩阵行数,列数和非0元个数 }TSMatrix; 稀疏矩阵的转置 稀疏矩阵转置的基本概念

转置运算:一个 m * n 的矩阵 M ,其对应的转置矩阵是一个 n * m 的矩阵 T ,并且 T 中的元素 T(i, j) 与 B 中的元素 M(j, i) 对应相等。

我们需要将三元组的行列互换,要构造一个转置矩阵 T 的三元组表,并且这个三元组表中的次序也要满足按照行为主序排列,按照列为次序排列。

由于 T 中的行对应的是 M 中的列,所以在转置过程中,我们需要顺序枚举每一列。

所以朴素的稀疏矩阵转置方法为: (1)顺序枚举每一列,在矩阵 M 中查找处于该列的非零元三元组; (2)将该三元组行列互换放入矩阵 T 的三元组表中。

稀疏矩阵转置的结果

稀疏矩阵转置代码 //稀疏矩阵转置 (适用于 tu


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3