稀疏矩陣存儲方法
① 稀疏矩陣的存儲空間
一個稀疏矩陣中有許多元素等於零,這便於矩陣的計算和保存.如果Matlab把一個矩陣當作稀疏矩陣,那麼只需在m×3的矩陣中存儲m個非零項.第1列是行下標,第2列是列下標,第3列是非零元素值,不必保存零元素.如果存儲一個浮點數要8個位元組,存儲每個下標要4個位元組,那麼整個矩陣在內存中存儲需要1 6×m個位元組.
A = e y e ( 1 0 0 0 ) ;
得到一個1 0 0 0×1 0 0 0的單位矩陣,存儲它需要8 MB空間.如果使用命令:
B = s p e y e ( 1 0 0 0 ) ;
用一個1 0 0 0×3的矩陣來代表,每行包含有一個行下標,列下標和元素本身.只需1 6 K B的空間就可以存儲1 0 0 0×1 0 0 0的單位矩陣,它只需要滿單位矩陣的0 . 2 %存儲空間.對於許多的廣義矩陣也可這樣來作.
② 稀疏矩陣的三種存儲方式
常見的有三元組表示法、帶輔助行向量的二元組表示法(也即行邏輯鏈表的順序表),十字鏈表表示法
③ 有一稀疏矩陣如右下表所示。請描述其存儲方式。
typedef struct {
int i, j; // 該非零元的行下標和 列下標
ElemType e; // 非零元值
}Triple; // 三元組類型
typedef struct {
Triple data [ MAXSIZE+1 ];
// 存儲三元組表,data[0]未用
int mu, nu, tu; // 行數、列數和非零元個數
}TSMatrix; // 稀疏矩陣類型
三元組放行下標和列下標和值
④ 對稀疏矩陣進行壓縮存儲目的是() A.便於進行矩陣運算 B.便於輸入和輸出 C.節省存儲空間 D.降低運
對稀疏矩陣進行壓縮存儲目的是節省存儲空間。
稀疏矩陣的存儲方式:
存儲矩陣的一般方法是採用二維數組,其優點是可以隨機地訪問每一個元素,因而能夠較容易地實現矩陣的各種運算。但對於稀疏矩陣而言,若用二維數組來表示,會重復存儲了很多個0了,浪費空間,而且要花費時間來進行零元素的無效計算。所以必須考慮對稀疏矩陣進行壓縮存儲。
(4)稀疏矩陣存儲方法擴展閱讀:
最常用的稀疏矩陣存儲格式主要有:三元組(i,j,a(i,j))和CSR(Compressed Sparse Row)。
(1) 三元組(i,j,a(i,j))(也叫COO(Coordinate Format))
三元組(i,j,a(i,j))很簡單,就是使用3個數組,分別存儲全部非零元的行下標(row index)、列下標(column index)和值(value)
(2) CSR存儲(Compressed Sparse Row,壓縮稀疏的行)
CSR是比較標準的一種,也需要三類數據來表達:數值,列號,以及行偏移。數值和列號與COO一致,表示一個元素以及其列號,行偏移表示某一行的第一個元素在values裡面的起始偏移位置。
⑤ 稀疏矩陣的壓縮存儲方法有
稀疏矩陣的壓縮存儲,數據結構提供有 3 種具體實現方式:
三元組順序表;
行邏輯鏈接的順序表;
十字鏈表;
⑥ 稀疏矩陣是怎樣存儲的
/*
稀疏矩陣的三元組順序表存儲表示
*/
# define MAX_SIZE 100//非零元個數的最大值
struct Triple
{
int i,j;//行下標,列下標
ElemType e;//非零元素值
};
struct TSMatrix
{
Triple data[MAX_SIZE+1];//非零元三元組表,data[0]未用
int mu,nu,tu;//矩陣的行數、列數和非零元個數
};
⑦ 對稀疏矩陣進行壓縮存儲的目的是什麼
對稀疏矩陣進行壓縮存儲目的是節省存儲空間。
存儲矩陣的一般方法是採用二維數組,其優點是可以隨機地訪問每一個元素,因而能夠較容易地實現矩陣的各種運算。
但對於稀疏矩陣而言,若用二維數組來表示,會重復存儲了很多個0了,浪費空間,而且要花費時間來進行零元素的無效計算。所以必須考慮對稀疏矩陣進行壓縮存儲。
(7)稀疏矩陣存儲方法擴展閱讀
優點
稀疏矩陣的計算速度更快,因為MATLAB只對非零元素進行操作,這是稀疏矩陣的一個突出的優點。假設矩陣A,B中的矩陣一樣,計算2*A需要一百萬次的浮點運算,而計算2*B只需要2000次浮點運算。
因為MATLAB不能自動創建稀疏矩陣,所以要用特殊的命令來得到稀疏矩陣。算術和邏輯運算都適用於稀疏矩陣。對於一個用二維數組存儲的稀疏矩陣Amn,如果假設存儲每個數組元素需要L個位元組,那麼存儲整個矩陣需要m*n*L個位元組。
⑧ 稀疏矩陣的壓縮存儲思想
為了節省存儲空間並且加快處理速度,需要對這類矩陣進行壓縮存儲,壓縮存儲的原則是:不重復存儲相同元素;不存儲零值元素。稀疏矩陣,有三元組表示法、帶輔助行向量的二元組表示法(也即行邏輯鏈表的順序表),十字鏈表表示法等。演算法基本思想:num[col]:第col列的非零元素個數;cpot[col]:第col列第一個非零元在b.data中的恰當位置;在轉置過程中,指示該列下一個非零元在b.data中的位置。
⑨ 稀疏矩陣的壓縮存儲只需要存儲什麼
非零元素。
對於一個用二維數組存儲的稀疏矩陣Amn,如果假設存儲每個數組元素需要L個位元組,那麼存儲整個矩陣需要m*n*L個位元組。但是,這些存儲空間的大部分存放的是0元素,從而造成大量的空間浪費。為了節省存儲空間,可以只存儲其中的非0元素。
(9)稀疏矩陣存儲方法擴展閱讀
稀疏矩陣演算法的最大特點是通過只存儲和處理非零元素從而大幅度降低存儲空間需求以及計算復雜度,代價則是必須使用專門的稀疏矩陣壓縮存儲數據結構。稀疏矩陣演算法是典型的不規則演算法,計算訪存比很低,並且計算過程中的訪存軌跡與稀疏矩陣的稀疏結構相關。
⑩ 稀疏矩陣一般的壓縮存儲方法有兩種
分別是三元組和十字鏈表。
三元組是指形如((x,y),z)的集合(這就是說,三元組是這樣的偶,其第一個射影亦是一個偶),常簡記為(x,y,z)。
三元組是計算機專業的一門公共基礎課程——數據結構里的概念。主要是用來存儲稀疏矩陣的一種壓縮方式,也叫三元組表。假設以順序存儲結構來表示三元組表(triple table),則得到稀疏矩陣的一種壓縮存儲方式,即三元組順序表,簡稱三元組表。
十字鏈表(Orthogonal List)是有向圖的另一種鏈式存儲結構。該結構可以看成是將有向圖的鄰接表和逆鄰接表結合起來得到的。用十字鏈表來存儲有向圖,可以達到高效的存取效果。同時,代碼的可讀性也會得到提升。
拓展資料:
十字鏈表(Orthogonal List)是有向圖的另一種鏈式存儲結構。可以看成是將有向圖的鄰接表和逆鄰接表結合起來得到的一種鏈表。在十字鏈表中,對應於有向圖中每一條弧都有一個結點,對應於每個定頂點也有一個結點。
十字鏈表之於有向圖,類似於鄰接表之於無向圖。
也可以理解為 將行的單鏈表和列的單鏈表結合起來存儲稀疏矩陣稱為十字鏈表, 每個節點表示一個非零元素。
三元組解釋:
1、所謂「三元組」是指圖形的幾何元素構成、圖線間的拓撲關系和尺寸約束。如果一組圖形的前二元相同而只是尺寸大小不同,則這組圖形構成一族形狀相同的系列化圖形。
2、把組成一個元素的三個數稱為三元組。一個三元組包含以下三部分的內容SDO_STARTING_OFFSET表明每個幾何元素的第一個坐標在SDO_ORDINATES數組中的存儲位置。
3、…Mt:N2)的表示稱為三元組...…Mt稱為標號,N1、N2為結點R為關系。當n≠0時,稱Li為對結點N1的修飾。t≠0時,稱Mj為對結點N2的修飾。
參考資料:網路:十字鏈表
網路:三元組