作者LPH66 (台大我回来了!)
看板java
标题Re: [问题] 产生稀疏矩阵及稀疏矩阵相乘?
时间Wed Aug 8 23:51:58 2007
※ 引述《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