SymmentryMatrix(对称矩阵)
对称矩阵和对称矩阵的压缩存储>
设一个N*N的方阵Array,Array中任意元素Arrayij,当且仅当Arrayij == Arrayji(0 <= i <= N-1 && 0 <= j <= N-1),Array是对称矩阵。以矩阵的对角线为分隔,分为上三角和下三角.
我们发现如果将该对称矩阵的每个元素都存入则会存在内存浪费问题,那仫如何解决? 这就提到了对称矩阵的压缩存储了--则只需要存储上三角或者下三角的元素即可节省一半空间。
注意:
(1).在对称矩阵的压缩存储中因为只存储上三角或者下三角则每一行的有效数据为:0,1,2,3,4(以5*5的方阵为例),那么根据等差数列的特性最多存储n*(n+1)/2个元素
(2).在输出压缩存储的对称方阵的时候,假设存储的是下三角,如果该下标属于下三角(i >= j)则直接输出,如果要输出的下标属于上三角(i < j)则需要将该上三角的行列交换.
M*N的矩阵,矩阵中有效值的个数远远小于无效值的个数,且有效值的分布没有规律,这就是稀疏矩阵.如何高效的去存储一个稀疏矩阵呢?要想高效的存储一个稀疏矩阵则只需要存储该矩阵的有效值即可,但是存在一个问题就是如何找到该有效值的位置呢?直接将该有效值的行,列坐标一起存储起来不就可以了吗?这就是稀疏矩阵的三元组存储形式.且值得注意的是该矩阵是以行优先的方法存储的.
稀疏矩阵的两种转置算法>
一.普通的转置算法