码迷,mamicode.com
首页 > 其他好文 > 详细

特殊矩阵的压缩存储

时间:2020-01-26 19:25:52      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:个数   下标   inf   开始   方便   info   常见   color   数列   

所谓特殊矩阵:是指矩阵中值相同的元素或者零元素的分布有一定的规律。常见的特殊矩阵有:对称矩阵、三角矩阵、对角矩阵。注意:它们都是方阵,即行数和列数相同。

主对角线:在矩阵中每个元素的行标等于纵标(i==j)。

上三角:在矩阵中每个元素的行标小于纵标(i<j)。

下三角:在矩阵中每个元素的行标大于纵标(i>j)。

一、对称矩阵的压缩存储

一个n阶方阵A[n][n]中的元素满足ai,j=aj,i(0<=i,j<=n-1),则称其为n阶对称矩阵。

压缩存储:由于元素关于主对角线对称,在存储时只存储对称矩阵的上三角或下三角元素,使得对称的元素共享一个存储空间。(以行序为主序存储其下三角+主对角线的元素,一共要存储n*(n+1)/2个元素)

 技术图片

 由于k的序号=所有它前面元素的个数=所在行前面行的所有元素+所在行它前面的元素(包括本身)。

一维数组k与与二维数组元素的i、j之间的关系:

当i>=j时,k=i*(i+1)/2 + j;//本例都是以0为开始的下标,以下也是类同。

当i<j时,k=j*(j+1)/2+i;

二、三角矩阵的压缩矩阵

上三角矩阵:当一个方阵的主角线以下的所有元素皆为零;

当i<=j时,k=(i-1)*(2n-i+2)/2+j-2;(以下公式为了方便理解,i,j,k都是从1开始)

矩阵元素压缩放在一维数组上,可以理解为:

如5*5矩阵上三角矩阵第一行为5个元素,第二行为4个元素...最后一行为1个元素(也就是元素个数逐减的等差数列an=n-i+1,an代表每行的个数,i代表的是第几项(第几行),所以a1=n-1+1=n,当前行的前面所有行的元素和:s(i-1)=n(a1+an)/2=(i-1)*[n+(n-(i-1)+1)]=(i-1)*(2n-i+2)/2)

如:a[3][3]=b[10],s2=5+4=9,所以k=s2+j-2=10。

技术图片

 

下三角矩阵:当一个方阵的主角线以上的所有元素皆为零;

当i>=j时,k=i*(i+1)/2+j-2;

特殊矩阵的压缩存储

标签:个数   下标   inf   开始   方便   info   常见   color   数列   

原文地址:https://www.cnblogs.com/zws-bugging/p/12234473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!