【数据结构】特殊矩阵的压缩存储1——对称矩阵
来源:互联网 发布:淘宝樱木花道家鞋真吗 编辑:程序博客网 时间:2024/06/05 11:14
对于一个矩阵结构显然用一个二维数组来表示是非常恰当的,但在有些情况下,比如常见的一些特殊矩阵,如三角矩阵、对称矩阵、带状矩阵、稀疏矩阵等,从节约存储空间的角度考虑,这种存储是不太合适的。下面从这一角度来考虑这些特殊矩阵的存储方法。
对称矩阵的特点是:在一个n 阶方阵中,有aij=aji ,其中1≤i , j≤n,如图5.5 所示是一个5阶对称矩阵。对称矩阵关于主对角线对称,因此只需存储上三角或下三角部分即可,比如,我们只存储下三角中的元素aij,其特点是中j≤i 且1≤i≤n,对于上三角中的元素aij ,它和对应的aji 相等,因此当访问的元素在上三角时,直接去访问和它对应的下三角元素即可,这样,原来需要n*n 个存储单元,现在只需要n(n+1)/2 个存储单元了,节约了n(n-1)/2个存储单元,当n 较大时,这是可观的一部分存储资源。
如何只存储下三角部分呢?对下三角部分以行为主序顺序存储到一个向量中去,在下三角中共有n*(n+1)/2 个元素,因此,不失一般性,设存储到向量SA[n(n+1)/2]中,存储顺序可用图5.6 示意,这样,原矩阵下三角中的某一个元素aij 则具体对应一个sak,下面的问题是要找到k 与i、j 之间的关系。
k=i*(i-1)/2+j-1 (0≤k<n*(n+1)/2 )
若i<j,则aij 是上三角中的元素,因为aij=aji ,这样,访问上三角中的元素aij 时则去访问和它对应的下三角中的aji 即可,因此将上式中的行列下标交换就是上三角中的元素在SA 中的对应关系:
k=j*(j-1)/2+i-1 (0≤k<n*(n+1)/2 )
对称矩阵的特点是:在一个n 阶方阵中,有aij=aji ,其中1≤i , j≤n,如图5.5 所示是一个5阶对称矩阵。对称矩阵关于主对角线对称,因此只需存储上三角或下三角部分即可,比如,我们只存储下三角中的元素aij,其特点是中j≤i 且1≤i≤n,对于上三角中的元素aij ,它和对应的aji 相等,因此当访问的元素在上三角时,直接去访问和它对应的下三角元素即可,这样,原来需要n*n 个存储单元,现在只需要n(n+1)/2 个存储单元了,节约了n(n-1)/2个存储单元,当n 较大时,这是可观的一部分存储资源。
如何只存储下三角部分呢?对下三角部分以行为主序顺序存储到一个向量中去,在下三角中共有n*(n+1)/2 个元素,因此,不失一般性,设存储到向量SA[n(n+1)/2]中,存储顺序可用图5.6 示意,这样,原矩阵下三角中的某一个元素aij 则具体对应一个sak,下面的问题是要找到k 与i、j 之间的关系。
角中的元素aij,其特点是:i≥j 且1≤i≤n,存储到SA 中后,根据存储原则,它前面有i-1行,共有1+2+…+i-1=i*(i-1)/2 个元素,而aij 又是它所在的行中的第j 个,所以在上面的排列顺序中,aij 是第i*(i-1)/2+j 个元素,因此它在SA 中的下标k 与i、j 的关系为:
k=i*(i-1)/2+j-1 (0≤k<n*(n+1)/2 )
若i<j,则aij 是上三角中的元素,因为aij=aji ,这样,访问上三角中的元素aij 时则去访问和它对应的下三角中的aji 即可,因此将上式中的行列下标交换就是上三角中的元素在SA 中的对应关系:
k=j*(j-1)/2+i-1 (0≤k<n*(n+1)/2 )
综上所述,对于对称矩阵中的任意元素aij,若令I=max(i,j),J=min(i,j),则将上面两个式子综合起来得到: k=I*(I-1)/2+J-1。
阅读全文
1 0
- 【数据结构】特殊矩阵的压缩存储1——对称矩阵
- 【数据结构】对称矩阵及对称矩阵的压缩存储
- 数据结构——特殊矩阵的压缩存储
- 【数据结构】对称矩阵和稀疏矩阵的压缩存储
- 【数据结构】特殊矩阵的压缩存储2——稀疏矩阵
- 数据结构——c语言描述 第五章 (1) 特殊矩阵的压缩存储
- 数据结构:矩阵的压缩存储(特殊矩阵)
- 数据结构::矩阵(一)--对称矩阵及对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- ~对称矩阵的压缩存储~
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 对称矩阵的压缩存储
- 1.7.5停止线程(stop方法暴力停止)
- Android性能优化工具之Traceview
- 统一建模语言
- Java基础面试题整理
- Servlet中文乱码处理
- 【数据结构】特殊矩阵的压缩存储1——对称矩阵
- spring 4++学习笔记(3一 5.9)
- Gradle与Gradle插件版本适配和离线Gradle遇到的问题
- c#——Enum之Json序列化
- java 一维数组求最大数最小数
- 【数据结构】特殊矩阵的压缩存储2——稀疏矩阵
- java中的除法和取于注意点
- jupyter
- Oracle VM VirtualBox虚拟MS-DOS时失败,提示内存不能为“written”