C++实现特殊矩阵的压缩存储算法

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

基础教程推荐