导言
数据结构中,主要讨论如何在节省存储空间的情况下使矩阵的各种运算能高效地进行。
有些矩阵存在很多值相同的元素或者0元素,这时为了节省空间,就可以对这种矩阵进行压缩。压缩的原则是:为多个值相同的元素只分配一个存储单元,0元素不分配存储单元。
用于压缩的矩阵有特殊矩阵和稀疏矩阵
一、特殊矩阵
如果矩阵中的元素的分布有一定规律,称之为特殊矩阵。
常见的特殊矩阵有对称矩阵、三角矩阵、对角矩阵。
1.1 对称矩阵
若矩阵An*n中的元素特点是a[ij]=a[ji],则称之为n阶对称矩阵。
对称矩阵的每一对元素占用一个存储单元,那么对于n阶矩阵,可以压缩到n(n+1)/2个元素的存储单元。如下:
若以行为主序存储下三角中的元素,以一维数组B[n(n+1)/2]作为n阶对称矩阵A的压缩存储空间,那么B[k](1≤k≤n(n+1)/2)与矩阵元素a[ij]之间的对应关系如下:
1.2 对角矩阵
对角矩阵是指矩阵中的非0元素都集中在以主对角线为中心的带状区域。也就是除了主对角线和直接在对角线上、下方若干条对角线上的元素除外,其余 的元素均为0。如下为n阶三对角矩阵:
若以行为主序将n阶三对角矩阵An*n的非0元素存储在一维数组B[k](1≤k≤3*n-2)中,则元素位置之间的对应关系为:k=3*(i-1)+j-i+1+1 = 2i+j-2。
二、 稀疏矩阵
在一个矩阵中,如果非0元素的个数远远小于0元素的个数,并且非0元素的分布也没有规律,就称这样的矩阵为稀疏矩阵。
稀疏矩阵存储时需要把非0元素的位置同时存储。可以用三元组(i,j,a[ij])表示。常用的三元组表的链式存储结构是十字链表。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/46214.html