Re: [問題] 產生稀疏矩陣及稀疏矩陣相乘?
※ 引述《kians (臨兵鬥者皆陣列在前)》之銘言:
: 3.兩個大量稀疏矩陣相乘的寫法?
: 會寫矩陣相乘的程式後,接下來就是要處理稀疏矩陣了;因為稀疏矩陣有許多零值的關係
: 所以一般情況下應該有一些方法可以來縮減資料量,以達成大量稀疏矩陣的相乘
: 一般矩陣的話,兩個一萬X一萬矩陣相乘電腦應該就爆了吧orz
回這點
(1) 不管是不是稀疏矩陣 要用三層for迴圈跑的話其實效率應該差不多
頂多稀疏矩陣多一個把其中一個從row major順序改成column major順序
這會稍微加速一下就是
不過稀疏矩陣有它的乘法的寫法 會比普通的三層for稍快
(也就是充份利用稀疏矩陣的特性: 0一堆)
(2) (應該是個很重要的一點)
稀疏矩陣乘稀疏矩陣不一定是個稀疏矩陣...
極端一點的例子例如
[1 0 0 0 0] [1 1 1 1 1] [1 1 1 1 1]
[1 0 0 0 0] [0 0 0 0 0] [1 1 1 1 1]
[1 0 0 0 0] x [0 0 0 0 0] = [1 1 1 1 1]
[1 0 0 0 0] [0 0 0 0 0] [1 1 1 1 1]
[1 0 0 0 0] [0 0 0 0 0] [1 1 1 1 1]
前兩個很稀疏吧? 可第三個卻一點也不稀疏...
所以最後你還是得要一個一萬乘一萬的普通矩陣來存答案
(當然其實是看你的兩個稀疏矩陣的0的分佈)
比較建議看有沒有辦法邊乘邊輸出結果
--
好像這兩點都和java沒啥關...|||
--
話說其實C/C++也不是語言內建 要有的話應該是其他套件吧
--
実琴:「河野!你真的就這樣被物質慾望給吸引過去了嗎?!」
亨:「只要穿著女裝擺出親切的樣子,所有必要花費就能全免,似乎一點都不壞啊。」
実琴:「難道你沒有男人的尊嚴了嗎?!」
亨:(斷然道)「沒有。在節衣縮食且生活吃緊的學生面前,沒有那種東西。」
--プリンセス・プリンセス 第二話
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.44.21
討論串 (同標題文章)