目录1.前言2.压缩对称矩阵3.压缩稀疏矩阵3.1三元组表3.2以列优先搜索3.3找出存储位置4.总结1.前言什么是特殊矩阵?C++,一般使用二维数组存储矩阵数据。在实际存储时,会发现...
1. 前言
C++
,一般使用二维数组存储矩阵数据。
在实际存储时,会发现矩阵中有许多值相同的数据或有许多零数据,且分布呈现出一定的规律,称这类型的矩阵为特殊矩阵。
为了节省存储空间,可以设计算法,对这类特殊矩阵进行压缩存储,让多个相同的非零数据只分配一个存储空间;对零数据不分配空间。
本文将讲解如何压缩这类特殊矩阵,以及压缩后如何保证矩阵的常规操作不受影响。
2. 压缩对称矩阵
在一个n
阶矩阵A
中,若所有数据满足如下述特性,则可称A
为对称矩阵。
a[i][j]==a[j][i]
i是数据在矩阵中的行号。
j是数据在矩阵中的列号。
0<<i,j<<n-1
在n
阶对称矩阵 a[i][j]
中,当i==j(行号和列号相同)时所有元素所构建成的集合称为主对角线。
如下图所示:
上述 2 种转置算法,其本质是一样的,第一种方案更容易理解,第二种方案在第一种方案的基础上用空间换取了时间上性能的提升。
4. 总结
使用二维数组存储矩阵中数据时,如果矩阵中的有效数据较小时,可以采用压缩的方式对其进行存储。
本文着重讲解如何使用三元组表方式压缩存储稀疏矩阵。转存过程并不难,难点在于转存为三元组表后,如何在三元组表的基础上正常进行矩阵相关操作。
以上就是C++实现特殊矩阵的压缩存储算法的详细内容,更多关于C++矩阵压缩存储的资料请关注我们其它相关文章!
本文标题为:C++实现特殊矩阵的压缩存储算法


基础教程推荐
- 详解c# Emit技术 2023-03-25
- C语言 structural body结构体详解用法 2022-12-06
- C++中的atoi 函数简介 2023-01-05
- C语言基础全局变量与局部变量教程详解 2022-12-31
- 如何C++使用模板特化功能 2023-03-05
- C++详细实现完整图书管理功能 2023-04-04
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- C利用语言实现数据结构之队列 2022-11-22
- 一文带你了解C++中的字符替换方法 2023-07-20
- C/C++编程中const的使用详解 2023-03-26