目录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++实现特殊矩阵的压缩存储算法


- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- Easyx实现扫雷游戏 2023-02-06
- C语言qsort()函数的使用方法详解 2023-04-26
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- C语言详解float类型在内存中的存储方式 2023-03-27
- Qt计时器使用方法详解 2023-05-30
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- C++ 数据结构超详细讲解顺序表 2023-03-25
- ubuntu下C/C++获取剩余内存 2023-09-18