5.3特殊矩阵及其压缩存储5.3.1特殊矩阵1.对称矩阵若一个n阶方阵A中元素满足下列条件:则称A为对称矩阵aj=ai其中 0 ≤i,j<n-1 ,例如,图5-1是一个3*3的对称矩阵。23A=254364图 5-1 一个对称矩阵
5.3 特殊矩阵及其压缩存储 5.3.1 特殊矩阵 若一个n阶方阵A中元素满足下列条件: aij=aji 其中 0 ≤i, j≤n-1 , 则称A为对称矩阵。 例如,图5-1是一个3*3的对称矩阵。 A= 3 4 6 2 5 4 1 2 3 图 5-1 一个对称矩阵 1.对称矩阵
2.三角矩阵(1)上三角矩阵即矩阵上三角部分元素是随机的,而下三角部分元素全部相同(为某常数C)或全为0,具体形式见图5-2(a)。(2)下三角矩阵即矩阵的下三角部分元素是随机的,而上三角部分元素全部相同(为某常数C)或全为0,具体形式见图5-2(b)。a01aooaon-aooail6aro6au1an-10an-11an-In-上三角矩阵(b)下三角矩阵(a)图5-2三角矩阵
2.三角矩阵 (1)上三角矩阵 即矩阵上三角部分元素是随机的,而下三角部分元 素全部相同(为某常数C)或全为0,具体形式见 图5-2(a)。 (2)下三角矩阵 即矩阵的下三角部分元素是随机的,而上三角部 分元素全部相同(为某常数C)或全为0,具体形 式见图5-2(b)。 1 0 1 1 1 1 1 0 1 1 0 0 . . . . . . . an an an n a a c a c c (a) 上三角矩阵 (b)下三角矩阵 1 1 1 1 1 1 0 0 0 1 0 1 . . . . . . n n n n c c c a c a a a a a 图 5-2 三角矩阵
3.对角矩阵若矩阵中所有非零元素都集中在以主对角线为中心的带状区域中,区域外的值全为0,则称为对角矩阵。常见的有三对角矩阵、五对角矩阵、七对角矩阵等。例如,图5-3为7×7的三对角矩阵(即有三条对角线上元素非0)。00000aooao10000aioaiia120000a21a22a230000a32a33a340000a43a44a450000a54a56as500000a65a66图5-3一个7x7的三对角矩阵
3.对角矩阵 若矩阵中所有非零元素都集中在以主对角线为中 心的带状区域中,区域外的值全为0,则称为对角 矩阵。常见的有三对角矩阵、五对角矩阵、七对 角矩阵等。 例如,图5-3为77的三对角矩阵(即有三条对角 线上元素非0)。 6 5 6 6 5 4 5 5 5 6 4 3 4 4 4 5 3 2 3 3 3 4 2 1 2 2 2 3 1 0 1 1 1 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a a a a a a a a a a a a a a a a a a a 图 5-3 一个 77 的三对角矩阵
5.3.2压缩存储1.对称矩阵若矩阵A,是对称的,对称的两个元素可以共用一个存储单元,这样,原来n阶方阵需n2个存储单元,若采用压缩存储,仅需 n(n+1)/2个存贮单元,将近节约一半存贮单元,这就是实现压缩的好处。但是,将n阶对称方阵存放到一个向量空间s[0]到s[“-1] 中,我们怎样1O找到s[k]与a[illil的一一对称应关系呢?使我们在s[k]中直接找到a[ii]。我们仅以行优先存放分两种方式讨论
5.3.2 压缩存储 1.对称矩阵 若矩阵Ann是对称的,对称的两个元素可以共用一个存 储单元,这样,原来n 阶方阵需 n 2个存储单元,若采用 压缩存储,仅需 n(n+1)/2个存贮单元,将近节约一半存 贮单元,这就是实现压缩的好处。但是,将n阶对称方 阵存放到一个向量空间s[0]到s[ -1] 中,我们怎样 找到s[k]与a[i][j]的一一对称应关系呢?使我们在s[k]中 直接找到a[i][j]。 2 n(n1) 我们仅以行优先存放分两种方式讨论:
(1)只存放下三角部分由于对称矩阵关于主对角线对称,故我们只需存放主对角线及主对角线以下的元素。这时,a[01[0]存入s[0],a[1][0] 存入s[1],a[1][1]存入 s[2],...,具体参见图5-4。这时s[k]与a[ilil的对应关系为:当过ji(i+1)/2+j2k=当ikjjG+1)/2+i上面的对应关系读者很容易推出:当这i 时,a.在下三角部分中,a.前面有i行,共有1+2+3+...+i个元素,而a.是第i行的第i个元素,即有k=1+2+3+...-+i+i=i(i+1)/2+i;当i<i时,a.在上三角部分中,但与a.对称,故只需在下三角部分中找a.即可,故只需将i与i交换即可,即k=j(i+1)/2+i
(1)只存放下三角部分 由于对称矩阵关于主对角线对称,故我们只需存放主 对角线及主对角线以下的元素。这时, a[0][0]存入 s[0],a[1][0] 存入s[1],a[1][1]存入 s[2],.,具体参 见图5-4。这时s[k]与a[i][j]的对应关系为: i(i+1)/2+j 当 i≥j k= j(j+1)/2+i 当 i<j 上面的对应关系读者很容易推出:当i≥j 时,aij在下三角 部分中,aij前面有i行,共有1+2+3+.+i个元素,而aij是第 i行的第j个元素,即有k=1+2+3+.+i+j=i(i+1)/2+j;当i<j 时,aij在上三角部分中,但与aji对称,故只需在下三角部 分中找aij即可,故只需将i与j交换即可,即k=j(j+1)/2+i