矩阵压缩存储之特殊矩阵讲解
🎈 作者:Linux猿
🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬
矩阵压缩存储作为一个考点,虽然考试出现的频率不高,但是我应该熟练的掌握它,当考试出现的时候,我们能稳稳的得分,接下来就开始我们的讲解吧!
一、基本概念
特殊矩阵:矩阵中存储的元素值相同的元素或者零元素在矩阵中的分布有一定规律。
压缩存储:为矩阵中多个相同的元素只分配一个存储空间,对零元素不分配空间。
二、特殊矩阵
1.对称矩阵
对称矩阵是指以主对角线为对称轴,各元素对应相等的矩阵,可以用如下公式表示:
假设有n阶矩阵A,因为n阶矩阵具有aij=aji 1<= i,j<=n的性质,对于矩阵中的n2个元素,我们只需存储n(n+1)/2个元素即可,即下图中的蓝色部分:
矩阵压缩存储的优点是可以节省存储空间。
那如何将这些元素存储到一维数组中呢,这就需要知道矩阵和数组对应的转化关系。假设有n阶矩阵A和一维数组B[n(n+1)/2],矩阵A中的元素以(i,j)表示,则矩阵A与数组B的转化关系是:
对于矩阵A中的任意元素(i,j),都可以通过公式(1)找到数组B中对应的元素。那么,如果已知元素(i,j)在一维数组中的下标k,如果求矩阵中的元素(i,j)的坐标呢?可以通过如下公式求解:
2.三角矩阵
三角矩阵分为上三角矩阵和下三角矩阵,即对角线以上/下的元素均为常数或零的n阶矩阵,如下图所示:
这样的矩阵的存储类似于对称矩阵,如上图所示,只需要存储蓝色部分,然后多分配一个空间存储常数c就可以了,从而可以节省存储空间。
3.对角矩阵
对角矩阵通常是指以主对角线为中心,上下若干条对角线为非零元素,其它元素均为零。这样我们可以只存储对角线上的元素即可,如下图所示:
很显然,对角线上的元素具有一定的规律,可以将其存储到一位数组中。
三、真题讲解
例题:n阶对称矩阵A以行序为主序存储其下三角中的元,存储于一维数组中B[0……n(n+1)/2-1]中,则矩阵元素A[i][j](i<j,1<= i,j<n)对应数组B的存储位置k=__________。
解题思路:
矩阵存储以行序为主序存储下三角,可以使用公式(1)进行求解。即答案为j(j-1)/2 + i-1,很简单吧。
四、总结
特殊矩阵存储元素的形式具有一定的规律,可以根据规律进行存储,从而节省存储空间,重点需要掌握对称矩阵的存储方式,接下来会为大家讲解稀疏矩阵的压缩存储,敬请期待!
CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
欢迎小伙伴们点赞👍、收藏⭐、留言💬
- 点赞
- 收藏
- 关注作者
评论(0)