1. 对称矩阵的压缩存储实例
实例说明:
假设有一个5x5的对称矩阵A,如下所示:
[
A = \begin{bmatrix}
1 & 2 & 3 & 4 & 5
2 & 6 & 7 & 8 & 9
3 & 7 & 10 & 11 & 12
4 & 8 & 11 & 13 & 14
5 & 9 & 12 & 14 & 15
\end{bmatrix}
]
由于对称矩阵的性质,我们只需要存储上三角(或下三角)的元素和主对角线上的元素。以下是一个使用一维数组B来存储上三角元素(包括主对角线)的实例:
一维数组B的存储内容:
[ B = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] ]
存储方式:
元素A[i][j](其中i ≤ j)在一维数组B中的位置k可以通过公式 (k = \frac{i(i-1)}{2} + j) 计算得出(假设数组下标从0开始)。 例如,A[2][3] = 11在B中的位置是 (\frac{2(2-1)}{2} + 3 = 4),所以B[4] = 11。
2. 三角矩阵的压缩存储实例
下三角矩阵实例:
假设有一个5x5的下三角矩阵A(除主对角线外,上三角部分全为0):
[
A = \begin{bmatrix}
1 & 0 & 0 & 0 & 0
2 & 3 & 0 & 0 & 0
4 & 5 & 6 & 0 & 0
7 & 8 & 9 & 10 & 0
11 & 12 & 13 & 14 & 15
\end{bmatrix}
]
使用一维数组B存储下三角元素(包括主对角线)的实例:
一维数组B的存储内容:
[ B = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] ]
存储方式与对称矩阵相同。
上三角矩阵实例(类似,但只存储上三角部分):
由于上三角矩阵与下三角矩阵类似,只是存储的区域不同,因此存储方式也相似,只是数组B中存储的是上三角的元素。
3. 稀疏矩阵的压缩存储实例
实例说明:
假设有一个5x5的稀疏矩阵A,大部分元素为0:
[
A = \begin{bmatrix}
0 & 0 & 5 & 0 & 0
0 & 7 & 0 & 0 & 0
0 & 0 & 0 & 0 & 8
9 & 0 & 0 & 0 & 11
0 & 0 & 13 & 0 & 0
\end{bmatrix}
]
压缩存储方式:使用三元组表存储非零元素及其位置。
三元组表的内容:
行号 列号 值 0 2 5 1 1 7 2 4 8 3 0 9 3 4 11 4 2 13 在这个三元组表中,每一行代表矩阵A中的一个非零元素,包括该元素的行号、列号和值。这种方式可以大大节省存储空间,特别是对于非常稀疏的矩阵。