1.对称矩阵的压缩存储若一个n阶方阵A[nl[n]中的元素满足ai,=aii(0≤i,jn-1),则称其为n阶对称矩阵由于对称矩阵中的元素关于主对角线对称,因此在存储时可只存储对称矩阵中上三角或下三角中的元素,使得对称的元素共享一个存储空间。这样,就可以将n2个元素压缩存储到n(n+1)/2个元素的空间中。以行序为主序存储其下三角+对角线的元素。do,ao,n-laij(i<j)a1.01n-上三角aij(i>j)aan-1,0下三角aii(0≤i≤n-1)对角线16
1. 对称矩阵的压缩存储 若一个n阶方阵A[n][n]中的元素满足ai,j=aj,i(0≤i,j≤n-1),则 称其为n阶对称矩阵。 由于对称矩阵中的元素关于主对角线对称,因此在存储时可只 存储对称矩阵中上三角或下三角中的元素,使得对称的元素共享一 个存储空间。这样,就可以将n 2个元素压缩存储到n(n+1)/2个元素 的空间中。以行序为主序存储其下三角+对角线的元素。 − − − − − − 1,0 1,1 1, 1 1,0 1,1 1, 1 0,0 0,1 0, 1 n n n n n n a a a a a a a a a ai,i(0≤i≤n-1) 对角线 ai,j(i<j) 上三角 ai,j(i>j) 下三角 16
对称矩阵压缩存储的情况数量的变化:n2个元素一→n(n+1)/2个元素下标的变化: A[0..n-1,0..n-1] → B[0..n(n+1)/2-1]压缩地址:a[ii]←→b[k]i(i+1)当么时+j2j(j +1)+i当i<时217
数量的变化:n 2个元素←→ n(n+1)/2个元素 下标的变化:A[0.n-1,0.n-1] ←→ B[0.n(n+1)/2-1] 压缩地址:a[i][j] ←→ b[k] 2 i(i+1) k= + j 当 i≥j时 + i 当i<j时 2 j(j +1) 对称矩阵压缩存储的情况 17
2.三角矩阵的压缩存储上三角矩阵:do.0do,ar,an-1n-1,n-1i*(2n-i+1)当i时+i-i2k-n(n +1)当>j时2存放常量c18
⚫ 上三角矩阵: 2 i *(2n − i + 1) 2 n(n + 1) k= + j – i 当i≤j时 当i>j时 2. 三角矩阵的压缩存储 − − − − 1, 1 1,1 1, 1 0,0 0,1 0, 1 n n n n a a a a a a c 存放常量c 18
下三角矩阵do.0a,aioan.oan)an-1,n-1i*(i+1)+i当时2n(n + 1)当i<j时2存放常量c19
⚫ 下三角矩阵 j i i + 2 * ( + 1) 2 n(n + 1) k= 当i≥j时 当i<j时 ,0 ,1 −1, −1 1,0 1,1 0,0 an an an n a a a c 存放常量c 19
3.对角矩阵的压缩存储若一个n阶方阵A满足其所有非零元素都集中在以主对角线为中心的带状区域中,则称其为n阶对角矩阵其主对角线上下方各有b条次对角线,称b为矩阵半带宽(2b+1)为矩阵的带宽。对于半带宽为b(0≤b≤(n-1)/2)的对角矩阵,其i-<b的元素不为零,其余元素为零。下图所示是半带宽为的对角矩阵示意图。b条b条半带宽为b的对角矩阵n阶对角矩阵的带宽20
3. 对角矩阵的压缩存储 若一个n阶方阵A满足其所有非零元素都集中在以主对角 线为中心的带状区域中,则称其为n阶对角矩阵。 其主对角线上下方各有b条次对角线,称b为矩阵半带宽, (2b+1)为矩阵的带宽。对于半带宽为b(0≤b≤(n-1)/2)的对角 矩阵,其|i-j|≤b的元素ai,j不为零,其余元素为零。 下图所示是半带宽为b的对角矩阵示意图。 . b条 b条 0 0 . 半带宽为b的对角矩阵 n阶对角矩阵的带宽 20