规律分布特殊矩阵的压缩存储
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i=1, j=1,2; 当 1<i<n,j=i-1, i, i+1
a43 a44 a45 ……… … ……
图 3 带状矩阵 A
时 aij 非零,其它元素均为零。
i=n, j=n-1, n;
( 3 )三对角带状矩阵压缩存储方法 三对角带状矩阵的压缩存储原则为:将带状区域上的非零元素按行序存储。 其压缩存储方法如下。 ①确定存储该矩阵所需的一维向量空间的大小 假设每个非零元素所占空间的大小为 size 个单元。从图 3 中观察得知,在三对角带状矩 阵中,除了第一行和最后一行只有 2 个非零元素外,其余各行均有 3 个非零元素,由此得到:所需 一维向量空间的大小为: 2 +2 +3 ×( n -2 )= 3 n-2 ,如图 4 所示。
实际应用中,如果将矩阵 A[][]压缩到一个一维数组 B[]中,我们更关心其下标的对应
关系,即如果将 A[i][j]存储到 B[k],那么如何通过 i 和 j,计算出 k 的值,进而获取 A[i][j]
的值。下面以下三角为例(假设对角线以上全为 0):
0,
当i j时
A[i][ j] B[i(i 1) / 2 j],当i j时
思考题:类同按行为主序,请给出按列或按行为主序条件下上三角矩阵以及对称矩阵的 相关推导。 2 .带状矩阵
( 1 )带状矩阵描述:在矩阵中的所有非零元素都集中在以主对角线为中心的带状区域中。 其中最常见的是三对角带状矩阵,如图 3 所示。
a11 A12
a21 A22 a23
A32 a33 a34
( 2 )三对角带状矩阵特点
第 i 行中 aij 前非零元素个数=j-1,
size 为每个元素所占字节数,
因此有:LOC[ i ,j]= LOC[1,1]+(i (i -1)/2+ j-1)*size
对于对称矩阵,因其元素满足 aij=aji,我们可以为每一对相等的元素分配一个存储空间, 即只存下三角(或上三角)矩阵,从而将 n2 个元素压缩到 n(n+1)/2 个空间中。
以图 1 所示的 n×n 下三角矩阵( c=0 )为例,讨论三角矩阵的压缩存储实现。 下三角矩阵的压缩存储原则是只存储下三角的非零元素,不存上三角的零元素。按“行 序为主序”进行存储,得到的序列是 a11 ,a21 ,a2 2 ,a31 ,a32 ,a33 ,…, an1 ,an2 ,…, ann。 由于下三角矩阵 A 的元素个数为 n×( n +1 )/ 2 ,即:
┋┋ ┋ ┋0
an1
an2 an3 ┋ ann
图 1 下三角矩阵 A
图 2 三角矩阵的压缩形式
下三角矩阵中元素 aij(i>j),在一维数组 B 中的存储地址为:
Loc[ i ,j]=Loc[1,1]+(前 i-1 行非零元素个数+第 i 行中 aij 前非零元素个数)*size
其中,前 i-1 行元素个数=1+2+3+4+ … +(i-1)= i (i -1)/2,
【本节要点】
= Loc( A[ 1 ][ 1 ])+( 2 ( i-1 )+ j -1)*size
1、 规律分布特殊矩阵的压缩存储原则:按规律存放非零元素;
2、 按规律找出地址计算公式
数)*size 前 i-1 行元素个数=3 ×( i-1 )- 1 (因为第 1 行只有 2 个非零元素); 第 i 行中 ai j 前非零元素个数=j-i +1 ,其中
源自文库
j-i=
-1 ( j<i) 0 (j=i) 1 (j>i)
由此得到: Loc ( A[ i][ j])= Loc( A[ 1 ][ 1 ])+( 3 ( i-1 )- 1 +j-i +1)*size
第 1 行: 1 个
第 2 行: 2 个
第 3 行: 3 个
┋
┋
第 n 行: n 个
1+2+3+4+5+…+n= n(n+1)/2
可压缩存储到一个大小为 n ×( n+1 )/ 2 的一维数组 B 中。如图 2 所示。
a11
a21
a22 0
a31
a a 32
33 0
数组 B 数组下标
a11 a21 a22 a31 a32 … ann 1 2 3 4 5 … n(n+1)/2
数组 C
a11 a12 a21 a22 a23 a31 … ann
Loc(i,j)
1 2 3 4 5 6 … 3n-2
图 4 带状矩阵的压缩形式
②确定非零元素在一维数组空间中的地址 Loc ( A[ i][ j])= Loc ( A[ 1 ][ 1 ])+(前 i-1 行非零元素个数+第 i 行中 aij 前非零元素个
第 2 讲规律分布特殊矩阵的压缩存储
规律分布的特殊矩阵
元素分布具有一定规律的矩阵称为规律分布的特殊矩阵,如三角矩阵(方阵的上或下三 角全为零)和带状矩阵(若干条对角线含有非零元)。这类矩阵中元素分布的规律可以用数学公 式来反映。已知二维矩阵 A 中元素下标 i 和 j,作为转换函数 f 的自变量,计算出到一维内存空 间的地址值 K,即 A[ i][ j]=B[ K],实现了原二维矩阵到压缩存储后的一维数组的存储映射。 1 .三角矩阵
三角矩阵大体分为三类:下三角矩阵、上三角矩阵、对称矩阵。对于一个 n 阶矩阵 A 来 说:若当 i <j 时,有 a ij =c(典型情况 c=0 ),则称此矩阵为下三角矩阵;若当 i>j 时,有 aij =c(典型情 况 c=0 ),则称此矩阵为上三角矩阵;若矩阵中的所有元素均满足 aij =aji,则称此矩阵为对称矩 阵。
a43 a44 a45 ……… … ……
图 3 带状矩阵 A
时 aij 非零,其它元素均为零。
i=n, j=n-1, n;
( 3 )三对角带状矩阵压缩存储方法 三对角带状矩阵的压缩存储原则为:将带状区域上的非零元素按行序存储。 其压缩存储方法如下。 ①确定存储该矩阵所需的一维向量空间的大小 假设每个非零元素所占空间的大小为 size 个单元。从图 3 中观察得知,在三对角带状矩 阵中,除了第一行和最后一行只有 2 个非零元素外,其余各行均有 3 个非零元素,由此得到:所需 一维向量空间的大小为: 2 +2 +3 ×( n -2 )= 3 n-2 ,如图 4 所示。
实际应用中,如果将矩阵 A[][]压缩到一个一维数组 B[]中,我们更关心其下标的对应
关系,即如果将 A[i][j]存储到 B[k],那么如何通过 i 和 j,计算出 k 的值,进而获取 A[i][j]
的值。下面以下三角为例(假设对角线以上全为 0):
0,
当i j时
A[i][ j] B[i(i 1) / 2 j],当i j时
思考题:类同按行为主序,请给出按列或按行为主序条件下上三角矩阵以及对称矩阵的 相关推导。 2 .带状矩阵
( 1 )带状矩阵描述:在矩阵中的所有非零元素都集中在以主对角线为中心的带状区域中。 其中最常见的是三对角带状矩阵,如图 3 所示。
a11 A12
a21 A22 a23
A32 a33 a34
( 2 )三对角带状矩阵特点
第 i 行中 aij 前非零元素个数=j-1,
size 为每个元素所占字节数,
因此有:LOC[ i ,j]= LOC[1,1]+(i (i -1)/2+ j-1)*size
对于对称矩阵,因其元素满足 aij=aji,我们可以为每一对相等的元素分配一个存储空间, 即只存下三角(或上三角)矩阵,从而将 n2 个元素压缩到 n(n+1)/2 个空间中。
以图 1 所示的 n×n 下三角矩阵( c=0 )为例,讨论三角矩阵的压缩存储实现。 下三角矩阵的压缩存储原则是只存储下三角的非零元素,不存上三角的零元素。按“行 序为主序”进行存储,得到的序列是 a11 ,a21 ,a2 2 ,a31 ,a32 ,a33 ,…, an1 ,an2 ,…, ann。 由于下三角矩阵 A 的元素个数为 n×( n +1 )/ 2 ,即:
┋┋ ┋ ┋0
an1
an2 an3 ┋ ann
图 1 下三角矩阵 A
图 2 三角矩阵的压缩形式
下三角矩阵中元素 aij(i>j),在一维数组 B 中的存储地址为:
Loc[ i ,j]=Loc[1,1]+(前 i-1 行非零元素个数+第 i 行中 aij 前非零元素个数)*size
其中,前 i-1 行元素个数=1+2+3+4+ … +(i-1)= i (i -1)/2,
【本节要点】
= Loc( A[ 1 ][ 1 ])+( 2 ( i-1 )+ j -1)*size
1、 规律分布特殊矩阵的压缩存储原则:按规律存放非零元素;
2、 按规律找出地址计算公式
数)*size 前 i-1 行元素个数=3 ×( i-1 )- 1 (因为第 1 行只有 2 个非零元素); 第 i 行中 ai j 前非零元素个数=j-i +1 ,其中
源自文库
j-i=
-1 ( j<i) 0 (j=i) 1 (j>i)
由此得到: Loc ( A[ i][ j])= Loc( A[ 1 ][ 1 ])+( 3 ( i-1 )- 1 +j-i +1)*size
第 1 行: 1 个
第 2 行: 2 个
第 3 行: 3 个
┋
┋
第 n 行: n 个
1+2+3+4+5+…+n= n(n+1)/2
可压缩存储到一个大小为 n ×( n+1 )/ 2 的一维数组 B 中。如图 2 所示。
a11
a21
a22 0
a31
a a 32
33 0
数组 B 数组下标
a11 a21 a22 a31 a32 … ann 1 2 3 4 5 … n(n+1)/2
数组 C
a11 a12 a21 a22 a23 a31 … ann
Loc(i,j)
1 2 3 4 5 6 … 3n-2
图 4 带状矩阵的压缩形式
②确定非零元素在一维数组空间中的地址 Loc ( A[ i][ j])= Loc ( A[ 1 ][ 1 ])+(前 i-1 行非零元素个数+第 i 行中 aij 前非零元素个
第 2 讲规律分布特殊矩阵的压缩存储
规律分布的特殊矩阵
元素分布具有一定规律的矩阵称为规律分布的特殊矩阵,如三角矩阵(方阵的上或下三 角全为零)和带状矩阵(若干条对角线含有非零元)。这类矩阵中元素分布的规律可以用数学公 式来反映。已知二维矩阵 A 中元素下标 i 和 j,作为转换函数 f 的自变量,计算出到一维内存空 间的地址值 K,即 A[ i][ j]=B[ K],实现了原二维矩阵到压缩存储后的一维数组的存储映射。 1 .三角矩阵
三角矩阵大体分为三类:下三角矩阵、上三角矩阵、对称矩阵。对于一个 n 阶矩阵 A 来 说:若当 i <j 时,有 a ij =c(典型情况 c=0 ),则称此矩阵为下三角矩阵;若当 i>j 时,有 aij =c(典型情 况 c=0 ),则称此矩阵为上三角矩阵;若矩阵中的所有元素均满足 aij =aji,则称此矩阵为对称矩 阵。