作者kians (临兵斗者皆阵列在前)
看板java
标题[问题] 产生稀疏矩阵及稀疏矩阵相乘?
时间Wed Aug 8 21:35:01 2007
如题,最近因为研究需要,要测试电脑是否有办法计算两个一万X一万的矩阵相乘
普通的矩阵好像不行吧....不过我要测的是稀疏矩阵
好像C/C++跟Fortran都有支援稀疏矩阵的算法
不过我只会java 所以来请教一下各位了orz
1.如何产生稀疏矩阵?
因为我才刚学java没多久,所以用了能想到最直觉的方法,
也就是跑两次巢状回圈,第一次给random值(0~1),这麽一来应该会有一半左右的值为0
接着第二次巢状回圈把原本矩阵中为1的值再给一次random值(0~9),
这麽一来最简单的稀疏矩阵写法便完成了orz
请问有更好的写稀疏矩阵的方法吗?一半以上的值为0的矩阵应该就是稀疏矩阵了吧
2.两个矩阵相乘的写法??
如果只是 data3[i][j] == data1[i][j]*data2[i][j] 这样的话我是会写啦
不过矩阵相乘应该不是这样乘的吧orz,请问矩阵相乘的程式怎麽写呢?
3.两个大量稀疏矩阵相乘的写法?
会写矩阵相乘的程式後,接下来就是要处理稀疏矩阵了;因为稀疏矩阵有许多零值的关系
所以一般情况下应该有一些方法可以来缩减资料量,以达成大量稀疏矩阵的相乘
一般矩阵的话,两个一万X一万矩阵相乘电脑应该就爆了吧orz
如果是稀疏矩阵的话,不知道有什麽方法可以顺利计算出来呢??
http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/SparseMatrix.htm
上面这个网站有介绍稀疏矩阵与索引阵列之间的转换,也有java程式可以看
不过给的却是把已知索引阵列转成稀疏矩阵的程式orz
所以我自己又写了一个相反过来的程式,也就是把稀疏矩阵转成索引阵列的程式
网页说转成索引阵列可以利用较少的记忆体空间储存完整的矩阵资讯
这样的方法可以帮助用来计算稀疏矩阵吗? 因为计算时还是要转回来吧
所以感觉对"计算"好像没有很大帮助orz
抱歉问题很多 麻烦java高手们解惑了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.212.147
※ 编辑: kians 来自: 61.230.212.147 (08/08 21:37)