稀疏矩阵转置多种算法详解

这次博文写的有点长,因为我得构思,所以今天晚上(11.10)写一点,另外还有个重要的任务,因为再过40分钟就是剁手节了,过了今晚我不止是一个光棍,更是一个穷光棍、、、、我该怎么办。。。求拦截。

不扯了正题,今天就先写写矩阵转置吧,现实中转置么,不就区区一个转置么,那有什么,瞅一眼就转过来了。计算机就是计算机,他没有相发也没有眼睛,那么我们就来告诉他怎么思考,怎么走路吧。

方法一:一般转置(简单)

转置矩阵: 一个 m×n 的矩阵 M,它的转置 T 是一个
n×m 的矩阵,且 T (i, j) = M[ j, i], 1≤i≤n, 1≤j≤m,
即 M 的行是 T 的列, M 的列是 T 的行。

稀疏矩阵转置多种算法详解_第1张图片
M:原矩阵
T:转置之后的矩阵

PS:讲转置之前需要介绍一下稀疏矩阵的三元组压缩存储方式,就是将稀疏矩阵的非零元素的 (行坐标,列坐标,元素值)
例如:M数组的第一行第二列的12在三元组里的表示为 (1,2,12)

三元组顺序表存储结构:
稀疏矩阵转置多种算法详解_第2张图片

这个结构就是一个数组
Triple: 申明了一个类型,包含了 i(行)、j(列)、e(元素数据)
TSMatrix:定义了Triple类型的数组保存行列数据元素信息,mu(总行数)、nu(总列数)tu(非零元素个数)

下面是保存之后的结果
稀疏矩阵转置多种算法详解_第3张图片

Triple类型的data数组长度在定义的时候长度是MAXSIZE+1是为了在data[0]空出来一个位置使 数组小标与矩阵的行列下标对应,图中data[0]的位置 6 7 8 是为了方便讲解写的,实际上是空

问题描述:
这里写图片描述

下图是简单转置的解题思路
稀疏矩阵转置多种算法详解_第4张图片

解析

你可能感兴趣的:(稀疏矩阵转置多种算法详解)