当前位置: 首页 > news >正文

【数据结构】稀疏矩阵的快速转置

稀疏矩阵的快速转置

如图给出一个稀疏矩阵,要求表示出它的转置矩阵

在这里插入图片描述

由这个矩阵我们能轻松得到它的三元组顺序表

6行(x坐标)7列(y坐标)8个元素
1212
139
31-3
3614
4324
5218
6115
64-7

接下来我们同样把转置后的矩阵的三元组顺序表表示出来

在这里插入图片描述

7行(x坐标)6列(y坐标)8个元素
13-3
1615
2112
2518
319
3424
46-7
6314

我们要如何才能通过第一个三元组顺序表得到第二个三元组顺序表呢

按照最简单的思路,我们一般会通过双重循环

朴素的双重循环

按照列坐标从头到尾遍历,遇到1的时候,将i j互换放入到第二个三元组顺序表第一个位置

按照这样的方法,每一次都有可能需要遍历n次,一共需要走n趟,时间复杂度会是O(n²)级别


那么有没有一种方法能一步到位呢

快速转置

为实现快速转置,我们引入num数组和cpot数组

num[col]:表示矩阵M中第col列中非零元个数

cpot[col]:指示M中第col列第一个非零元在转置后的三元组顺序表中位置

显然有:

cpot[1] = 1;
cpot[col] = cpot[col - 1] + num[col - 1]; //第col - 1列第一个非零元的位置加上第col - 1列非零元的个数

由此,我们能构建出col、num[col]、cpot[col]的一个表

col1234567
num[col]2221010
cpot[col]1357889

这样我们遍历最开始的三元组顺序表

第一个列是2,我们查找 co l为 2 的 cpot[col] ,为 3,那么将原表第一行放入到转置后的第三个位置,同时 col 为 2 的 cpot[col] += 1

cpot[col] + 1 是因为若这一列还有非零元,那么肯定会是它的下一个位置

代码如下

Status FastTransposeSMatrix( TSMatrix M, TSMatrix &T ) {  // 采用三元组顺序表存储表示,求稀疏矩阵 M 的转置矩阵 TT.mu = M.nu; T.nu = M.mu; T.tu = M.tu; if (T.tu) { // mu行 nu列for (col=1; col<=M.nu; ++col)    num[col] = 0; for (t=1; t<=M.tu; ++t)   ++ num[M.data[t].j];  // 求 M 中各列非零元的个数cpot[1] = 1;for (col=2; col<=M.nu; ++col)  cpot[col] = cpot[col -1] + num[col -1]; // 求 M 中各列的第一个非零元在 T.data 中的序号 for (p=1; p<=M.tu; ++p) {  // 转置矩阵元素  col = M.data[p].j;    q = cpot[col]; T.data[q].i = M.data[p].j;    T.data[q].j = M.data[p].i; T.data[q].e = M.data[p].e;   ++ cpot[col];  } // for} // ifreturn OK;
} // FastTransposeSMatrix

相关文章:

  • 架构思维:异构数据的同步一致性方案
  • P1802 5 倍经验日
  • 递归算法详解(Java 实现):从原理到高阶应用
  • 时序分解 | Matlab基于WOA-MVMD鲸鱼算法优化多元变分模态分解
  • 机器学习实操 第二部分 神经网路和深度学习 第11章 训练深度神经网络
  • GenCLS++:通过联合优化SFT和RL,提升生成式大模型的分类效果
  • 人工智能数学基础(八)—— 最优化理论
  • 生物化学笔记:神经生物学概论09 小脑的运动学习 基底神经节的结构与功能
  • C++八股--6--mysql 日志与并发控制
  • 永磁同步电机无速度算法--基于ESO-PLL的永磁同步电机无位置传感器控制
  • 2025年PMP 学习二
  • 第一章 - 质量
  • C++学习:六个月从基础到就业——C++11/14:右值引用与移动语义
  • Docker安装Gitblit(图文教程)
  • llfc项目笔记客户端TCP
  • 代码随想录算法训练营Day44
  • 2025深圳杯东三省数学建模竞赛B题完整分析论文(共27页)(含模型、可运行代码、求解结果)
  • 力扣1128题解
  • C# 定时器实现
  • 渗透测试中扫描成熟CMS目录的意义与技术实践
  • 儿童文学作家周晴病逝,享年57岁
  • 老人误操作免密支付买几百只鸡崽,经济日报:支付要便捷也要安全
  • 视频丨英伟达总裁黄仁勋:美勿幻想AI领域速胜中国
  • 人民日报评论员:因势利导对经济布局进行调整优化
  • AI世界的年轻人,如何作答未来
  • 外媒称菲方允许菲官员窜台,国台办:应停止在台湾问题上玩火