稀疏數據存儲
1. 什麼是數據稀疏
數鋒飢爛據稀疏?我只知道OI圖論中有稀疏矩陣,就是有銀漏很多點,但是邊不是很多的那中,要用鄰肢簡接鏈表來存儲提高效率
2. 對稀疏矩陣進行壓縮存儲的目的是什麼
對稀疏矩陣進行壓縮存儲目的是節省存儲空間。
存儲矩陣的一般方法是採用二維數組,其優點是可以隨機地訪問每一個元素,因而能夠較容易地實現矩陣的各種運算。
但對於稀疏矩陣而言,若用二維數組來表示,會重復存儲了很多個0了,浪費空間,而且要花費時間來進行零元素的無效計算。所以必須考慮對稀疏矩陣進行壓縮存儲。
(2)稀疏數據存儲擴展閱讀
優點
稀疏矩陣的計算速度更快,因為MATLAB只對非零元素進行操作,這是稀疏矩陣的一個突出的優點。假設矩陣A,B中的矩陣一樣,計算2*A需要一百萬次的浮點運算,而計算2*B只需要2000次浮點運算。
因為MATLAB不能自動創建稀疏矩陣,所以要用特殊的命令來得到稀疏矩陣。算術和邏輯運算都適用於稀疏矩陣。對於一個用二維數組存儲的稀疏矩陣Amn,如果假設存儲每個數組元素需要L個位元組,那麼存儲整個矩陣需要m*n*L個位元組。
3. 稀疏矩陣的壓縮存儲只需要存儲什麼
非零元素。
對於一個用二維數組存儲的稀疏矩陣Amn,如果假設存儲每個數組元素需要L個位元組,那麼存儲整個矩陣需要m*n*L個位元組。但是,這些存儲空間的大部分存放的是0元素,從而造成大量的空間浪費。為了節省存儲空間,可以只存儲其中的非0元素。
(3)稀疏數據存儲擴展閱讀
稀疏矩陣演算法的最大特點是通過只存儲和處理非零元素從而大幅度降低存儲空間需求以及計算復雜度,代價則是必須使用專門的稀疏矩陣壓縮存儲數據結構。稀疏矩陣演算法是典型的不規則演算法,計算訪存比很低,並且計算過程中的訪存軌跡與稀疏矩陣的稀疏結構相關。
4. 數據結構 稀疏矩陣一般的壓縮存儲方法有哪幾種
來自 嚴蔚敏《型臘數據缺中結構》
稀疏伏租山矩陣的壓縮方法主要有:
1:三元組順序表 (行下標,列下標,值)
2:行邏輯鏈接的順序表。
3:十字鏈表。
5. 設有一稀疏圖G,則G採用什麼存儲較省空間
G採用鄰接表存儲較省空間。
鄰接表,存儲方法跟樹的孩子鏈表示法相類似,是一種順序分配和鏈式分配相結合的存儲結構。如這個表頭結點所對應的頂點存在相鄰頂點,則把相鄰頂點依次存放於表頭結點所指向的單向鏈表中。
對於無向圖來說,使用鄰接表進行存儲也會出現數據冗餘,表頭結點A所指鏈表中存在一個指向C的表結點的同時,表頭結點C所指鏈表也會存在一個指向A的表結點。
(5)稀疏數據存儲擴展閱讀:
表示法
n個頂點e條邊的無向圖的鄰接表表示中有n個頂點表結點和2e個邊表結點。(換句話說,每條邊(i,j)在鄰接表 中出現兩次:一次在關於i的鄰接表中,另一次在關於j的鄰接表中)。
對於有向圖,vi的鄰接表中每個表結點都對應於以vi為始點射出的一條邊。因此,將有向圖的鄰接表稱為出邊表。對於無向圖來說,使用鄰接表進行存儲也會出現數據冗餘,表頭結點A所指鏈表中存在一個指向C的表結點的同時,表頭結點C所指鏈表也會存在一個指向A的表結點。
6. 數據結構的幾種存儲方式
數據的存儲結構是數據結構的一個重要內容。在計算機中,數據的存儲結構可以採取如下四中方法來表現。
1) 順序存儲方式
簡單的說,順序存儲方式就是在一塊連續的存儲區域
一個接著一個的存放數據。順序存儲方式把邏輯上相連的結點存儲在物理位置上相鄰的存儲單元里,結點間的邏輯關系由存儲單元的鄰接掛安息來體現。順序存儲方式也稱為順序存儲結構( sequential
storage structure ),一般採用數組或者結構數組來描述。
線性存儲方式主要用於線性邏輯結構的數據存放,而對於圖和樹等非線性邏輯結構則不適用。
2) 鏈接存儲方式
鏈接存儲方式比較靈活,其不要求邏輯上相鄰的結點
在物理位置上相鄰,結點間的邏輯關系由附加的引用欄位表示。一個結點的引用欄位往往指導下一個結點的存放位置。
鏈接存儲方式也稱為鏈接式存儲結構( Linked
Storage Structure ),一般在原數據項中增加應用類型來表示結點之間的位置關系。
3) 索引存儲方式
索引存儲方式是採用附加索引表的方式來存儲結點信
息的一種存儲方式。索引表由若干個索引項組成。索引存儲方式中索引項的一般形式為:(關鍵字、地址)。其中,關鍵字是能夠唯一標識一個結點的數據項。
索引存儲方式還可以細分為如下兩類:
* 稠密索引( Dense Index ) : 這種方式中每個結點在索引表中都有一個索引項。其中,索引項的地址指示結點所在的的存儲位置;
* 稀疏索引( Spare Index ):這種方式中一組結點在索引表中只對應一個索引項。其中,索引項的地址指示一組結點的起始存儲位置。
4) 散列存儲方式
散列存儲方式是根據結點的關鍵字直接計算出該結點
的存儲地址的一種存儲的方式。
在實際應用中,往往需要根據具體數據結構來決定採用哪一種存儲方式。同一邏輯結構採用不同額存儲方法,可以得到不同的存儲結構。而且這四種節本存儲方法,既可以單獨使用,也可以組合起來對數據結構進行存儲描述。
歡迎加入技術學習 QQ 群: 364595326
7. 稀疏矩陣定義以及存儲格式(COO,CSR,CSC)
網路:在矩陣中,若數值為0的元素數目遠遠多於非0元素的數目,並且非0元素分布沒有規律時,則稱該矩陣為稀疏矩陣;與之相反,若非0元素數目佔大多數時,則稱該矩陣為稠密矩陣。定義非零元素的總數比上矩陣所有元素的總數為矩陣的稠密度。 簡單來說,稀疏矩陣就是絕大部分都是0的矩陣 ,只包含很少的非零值.
比如,
上述稀疏矩陣非零元素有9個,26個零值.稀疏性是74%.
稀疏矩陣因為絕大部分都是0元素,如果我們仍然按照普通方式存儲,無疑會 浪費很多空間 ;同時如果進行運算時,0元素對最終結果也沒有幫助, 增加了許多無效計算 . 因此,我們需要設計出新的存儲方式,或者說數據結構來存儲稀疏矩陣.比較常見的有:
對於稀疏矩陣的存儲,為了達到壓縮的目的(節省存儲空間),只存儲非0元素值,但是也要保留非零元素的位置,方便恢復.所以,我們存儲時不僅存儲非零元素值,同時存儲其坐標位置(row,column). 針對這兩者的存儲,會出現不同的設計方案.這里主要介紹COO,CSR和CSC存儲格式.
我們使用三個數組row,column和data分別用來存儲非零元素坐標的row_index,col_index,以及數值.比如:
NNO:The number of nonzero.矩陣非零元素個數. 三個數組的長度都是NNO.data[i]在原稀疏矩陣中的坐標為(row[i],col[i]]).
可以發現,這種存儲方式中,row數組和column數組中有一定的重復元素.我們是否可以針對這個冗餘特性進一步進行壓縮?之後出現CSR,CSC,分別是對row數組和column數組進行了壓縮.
對COO稀疏矩陣存儲格式的三個數組中的row數組進行壓縮.其他兩個數組保持不變;三個數組分別是row_ptr,columns和data.其中columns和data數組長度均為NNO(矩陣的非零元素個數). 如何對COO的row進行壓縮?
row_ptr存儲的是每行的第一個非零元素距離稀疏矩陣第一個元素的偏移位置;
由row_ptr我們可以知道每行非零元素在data中的index范圍.第i行的非零元素為data[row_ptr[i]:row_ptr[i+1]],對data數組的切片,不包含data[row_ptr[i+1]];同時第i行非零元素的col坐標分別為columns[row_ptr[i]:row_ptr[i+1]];對data和columns的訪問相似,index是相同的.
如上圖中,第0行非零元素在data中是data[0:2],就是1,7;列坐標為columns[0:2],就是0,1,第1行非零元素為data[2:4],有兩個元素2和8,列坐標分別為columns[2:4],1和2.
方便進行行操作.
和CSR類似.只不過對列進行壓縮,row和data保持不變.
方便進行列操作.
8. 稀疏矩陣一般的壓縮存儲方法有兩種
分別是三元組和十字鏈表。
三元組是指形如((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的修飾。
參考資料:網路:十字鏈表
網路:三元組
9. 稀疏(sparse)在機器學習中很重要嗎
我來說說吧:
矩陣的稀疏性你應該知道吧,稀疏矩陣中包含大量的0。什麼樣的矩陣最好?當然握困世是0越多越好段肢的矩陣。
稀疏性對數據存儲,數據壓尺桐縮有極大的便利。
稀疏性對特徵提取,降維等都有極好的應用。
10. 數據稀疏的准確概念
在資料庫中,稀疏數據是指在二維表中含有大量空值的數據;即稀疏數據是指,在數據集中絕大多數數值缺失或者為零的數據。稀疏數據絕對不是無用數據,只不過是信息不完全,通過適當的手段是可以挖掘出大量有用信息。
稀疏數據是指,數據框中絕大多數數值缺失或者為零的數據。在現代社會中,隨著信息的爆炸式增長,數據量也呈現出爆炸式增長,數據形式也越來越多樣化。在數據挖掘領域,常常要面對海量的復雜型數據。其中,稀疏數據這一特殊形式的數據正在越來越為人們所注意。
稀疏數據絕對不是無用數據,只不過是信息不完全,通過適當的手段是可以挖掘出大量有用信息的。然而在一些情純缺況下,數據的稀疏程度甚至會達到 95%以上,這使得傳統的統計方法不適於處理此類數據。
稀疏數據的來源與產生原因可以有很多種。大致歸結起來,主要可以概括為以下幾個種類:
由於調查不當產生的稀疏數據
這種稀疏數據常見於問卷調查和電話調查中,如果問卷問題設置不當,過於繁陸褲州雜難懂,就會導致被調查者產生厭煩心理,草草回答幾個問題了事。然而已經回答的問題又是有效問卷的一部分,不能做遺棄處理,假若這種問卷大量出現,那麼就會出現稀疏數據。
由於天然限制產生的稀疏數據
這種稀疏數據常見於早蔽電子商務領域,例如淘寶網、沃爾瑪等網購網站或超市中。由於每個客戶客觀上不可能把所有商品購買一遍,所以他們的客戶購買記錄必然只是對海量商品中一小部分的記錄。這樣,客戶購買記錄必然是一個稀疏數據。
文本挖掘中產生的稀疏數據
在文本挖掘領域,為了比較幾篇文章是否屬於同一主題,常用的演算法是首先選定一批關鍵詞,通過不同文章中這些關鍵詞出現的頻率來進行判斷。而這一批關鍵詞常常會有成千上萬個,而每篇文章基本只包含其中幾十到幾百個關鍵詞,那麼由此產生的數據也就是一個稀疏數據了。
醫學造影成像領域
現代醫學常常要藉助 CT、B 超、核磁等手段造影成像,作為判斷病情的重要手段。其中 CT 成像是由若干射線源與接收器來採集數據,在實際應用中,受到設備、病人條件等限制,常常不能做到全形度掃描,故而在成像演算法上也常常要面對稀疏數據。