【数据结构与算法】浅谈稀疏矩阵
??數據結構中我們就已經了解過稀疏矩陣的概念。在矩陣中,若數值為0的元素數目遠遠多于非0元素的數目,并且非0元素分布沒有規律時,則稱該矩陣為稀疏矩陣。
??僅有幾個0元素不太算稀疏矩陣,很大的數據集中大部分元素都是0的情況比較符合稀疏矩陣的實際意義。這種情況在平時可能很難見到,但在機器學習中可能是很常見的。
??我們不妨舉個例子:我們想象一個矩陣,列元素是騰訊視頻平臺上的所有視頻,行元素是騰訊視頻的所有用戶,矩陣中的每個元素的值代表某個視頻每個用戶看過幾次。這個矩陣將會擁有很多很多的行和列。但我們也知道,某個用戶看的視頻再多,相較于海量的視頻庫都不算什么;很多用戶甚至可能幾乎沒看過視頻。這個矩陣的絕大多數的元素是0!
??再舉個例子:我們再想想一個矩陣(方陣),行列元素都是微信用戶,矩陣中的每個元素代表兩個用戶之間的好友關系。就算我們是公眾號號主或者社交達人,好友上限也是5000(之前是5000,現在好像也不可能無限多)。這個矩陣的絕大多數元素是0!
??上面兩個例子只是自己編的,但足以表明很多實際的問題需要稀疏矩陣。稀疏矩陣只保存非零元素并假設其余元素的值都是0,這樣能節省大量的計算成本。甚至有時一個矩陣和一個比它大很多倍的矩陣的壓縮存儲是一致的,增加的0元素不改變稀疏矩陣的大小。
??稀疏矩陣的類型有很多,比如,壓縮的行,壓縮的列,表中表,鍵值對字典等等,不僅僅是大家在學習數據結構時了解的狹義矩陣。值得一提的是,類型不同的稀疏矩陣不存在真正完美的存在,它們之間的差異帶來了自己獨特的優劣勢,在處理不同問題時能綻放出自己的光芒。
總結
以上是生活随笔為你收集整理的【数据结构与算法】浅谈稀疏矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【操作系统】Semaphore处理吸烟者
- 下一篇: 【Servlet】Servlet显示时间