矩阵的压缩存储

一、压缩存储

    指为多个值相同的元只分配一个存储空间,对零元不分配空间。

二、矩阵分类

    1、假如值相同的元素或者零元素在矩阵中的分配有一定的规律,则我们称此类矩阵为特殊矩阵;反之,称为稀疏矩阵。

    2、n阶对称矩阵

        满足Aij = Aji   1<=i,j<=n;

    3、稀疏矩阵:非零元较零元少,且分布没有规律。

三、n阶对称矩阵A的压缩存储

 
    1、

    2、该存储方法也适合三角矩阵,所谓三角矩阵指矩阵的上(下)三角(不包括对角线)中的元均为常数c或者零的n阶矩阵。除了和对称矩阵一样,只存储其上(下)三角中的元之外,还要存储一个存储常数C的存储空间即可。

四、稀疏矩阵    

    1、假设再m*n的矩阵中,有t个元素不为零。另

        & = t/(m*n).

    称&为矩阵的稀疏因子。通常认为&<=0.05时称为稀疏矩阵。

五、三元组顺序表

    1、一个三元组(i,j,aij)可以唯一确定矩阵A的一个非零元。

    2、假设以顺序存储结构来表示三元组表,则可以得到稀疏矩阵的李忠压缩存储方式—三元组顺序表。

六、转置矩阵

 
    转置运算是一种最简单的矩阵运算。对一个m*n的矩阵M,它的转置矩阵T是一个n*m的矩阵,且T(i,j) = M(j,i), 1<=i<=n,1<=j<=m;
七、十字链表
     在链表中,每一个非零元可用一个含有5个域的结点表示,其中i、j和e表示非零元的位置和数据。。向右域right用以链接同一行中的下一个非零元,向下域down用以链接同一列中下一个非零元。同一行的非零元通过right域链接一个线性链表,同一列的非零元通过down域链接成一个线性表,每个非零元既是某一行链表中的结点,也是某一个列链表中的结点,整个矩阵构成了一个十字交叉的链表,所以称这样的存储结构为十字链表,可用两个分别存储行链表的头指针和列链表的头指针的一维数组表示。
矩阵的压缩存储_第1张图片

你可能感兴趣的:(数据结构与算法)