數據結構之特殊矩陣


 特殊矩陣:即指非零元素或零元素的分布有一定規律的矩陣,為了節省存儲空間, 我們可以對這類矩陣進行壓縮存儲;即為多個相同的非零元素只分配一個存儲空間;對零元素不分配空間

一、稀疏矩陣

稀疏矩陣:設矩陣A中有s個非零元素,若s遠遠小於矩陣元素的總數,則稱A為稀疏矩陣。

如果我們把整個數據存入內存,如果每個單元格一個字節則需要6*5個字節

我們要對稀疏矩陣進行壓縮存儲: 即只存儲稀疏矩陣中的非零元素和矩陣的大小;采用三元組的表示方式

例如:(6,5,30)矩陣大小、(0,3,34)、(1,1,1)、(1,3,3)、(1,4,59)、(2,0,23)、(2,2,12)、(3,1,45)、(3,3,51)、(3,4,46)、(4,2,34)、(5,0,78)、(5,2,56)、(5,4,2)

稀疏矩陣占用空間大小:7*3個字節

二、三角矩陣:上三角矩陣、下三角矩陣

三角矩陣中的重復元素c(常量)可共享一個存儲空間,其余的元素正好有n(n+1)/2個,因此,三角矩陣可壓縮存儲到向量s[0..n(n+1)/2]中,其中c存放在向量的最后一個分量中

================上三角矩陣=================

以主對角線划分,三角矩陣有上三角和下三角兩種。上三角矩陣,它的下三角(不包括主對角線)中的元素均為常數或者0,在大多數情況下,三角矩陣常數為零。

 該圖就是一個上三角矩陣a(m,n)=a(4,4)是一個4階的方陣,將該矩陣壓縮存儲到一維數組S后

下標 0 1 2 3 4 5 6 7 8 9 10
數據 1 2 3 4 6 7 8 11 12 16 0
  • 轉換后一維數組的長度:S.length=1+n(n+1)/2
  • 最后一個位置:S[n(n+1)/2]=0
  • 其他上三角元素的位置在一維數組S的下標S[i(2n-i+1)/2+j-i ]=a(i,j) ;例如 a(2,3)=S[2*(2*4-2+1)/2+3-2]=S[8]=12

================下三角矩陣=================

以主對角線划分,三角矩陣有上三角和下三角兩種。下三角矩陣,它的上三角(不包括主對角線)中的元素均為常數或者0,在大多數情況下,三角矩陣常數為零。

  該圖就是一個上三角矩陣a(m,n)=a(4,4)是一個4階的方陣,將該矩陣壓縮存儲到一維數組S后

下標 0 1 2 3 4 5 6 7 8 9 10
數據 1 5 6 9 10 11 13 14 15 16 0
  • 轉換后一維數組的長度:S.length=1+n(n+1)/2
  • 最后一個位置:S[n(n+1)/2]=0
  • 其他下三角元素的位置在一維數組S的下標S[i(i+1)/2+j]=a(i,j) ;例如 a(2,2)=S[2*(2+1)/2+2]=S[5]=11

 三、對稱矩陣:

結論:對稱矩陣的壓縮存儲就是使用長度 array[n(n+1)/2-1] 的 一維數組存儲對稱矩陣

1、下三角

在一個n階方陣A中,若元素滿足下述性質:a(i,j) =a(j,i) 0≤i,j≤n-1 ,則稱A為對稱矩陣

只要存儲矩陣中上三角或者下三角中的元素,讓每個對稱的元素共享一個存儲空間,這樣能節省近一半的存儲空間

轉換后一維數組的長度:S.length=n(n+1)/2
最后一個位置:S[n(n+1)/2-1]
其他下三角元素的位置在一維數組S的下標:S[i(i+1)/2+j]=a(i,j) ;例如 a(2,2)=S[2*(2+1)/2+2]=S[5]=4

2、上三角

 其他上三角元素的位置在一維數組S的下標:S[i(2n-i+1)/2+j-i]=a(i,j) ;例如 a(2,2)=S[2*(2*6-2+1)/2+2-2]=S[11]=4

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM