Re: [問題] 產生稀疏矩陣及稀疏矩陣相乘?
※ 引述《kians (臨兵鬥者皆陣列在前)》之銘言:
: 如題,最近因為研究需要,要測試電腦是否有辦法計算兩個一萬X一萬的矩陣相乘
: 普通的矩陣好像不行a....不過我要測的是稀疏矩陣
: 好像C/C++跟Fortran都有支援稀疏矩陣的算法
: 不過我只會java 所以來請教一下各位了orz
: 1.如何產生稀疏矩陣?
: 因為我才剛學java沒多久,所以用了能想到最直覺的方法,
: 也就是跑兩次巢狀迴圈,第一次給random值(0~1),這麼一來應該會有一半左右的值為0
: 接著第二次巢狀迴圈把原本矩陣中為1的值再給一次random值(0~9),
: 這麼一來最簡單的稀疏矩陣寫法便完成了orz
: 請問有更好的寫稀疏矩陣的方法嗎?一半以上的值為0的矩陣應該就是稀疏矩陣了吧
void laranda(int x, int y, int howsparse, int howlarge) {
Random ran = new Random();
int iamblow = ran.nextInt(howsparse);
for(int i = 0; i < x; i++) {
for(int j = 0; j < y; j++) {
iamblow--;
if(iamblow < 0) {
iamblow = ran.nextInt(howsparse);
shamewagogi[i][j] = ran.nextInt(howlarge)
}
}
}
}
大概不能跑吧? 反正簡單來說就是差個倒數炸彈, 爆了就看傷亡數字這樣.
: 2.兩個矩陣相乘的寫法??
: 如果只是 data3[i][j] == data1[i][j]*data2[i][j] 這樣的話我是會寫啦
: 不過矩陣相乘應該不是這樣乘的吧orz,請問矩陣相乘的程式怎麼寫呢?
我 google 了一下矩陣相乘, 因為其實我沒玩過
第一個連結告訴我說三個 for 迴圈就好了..
第二個連結告訴我說這個東西我短時間用不到, 所以我就沒細看了..
http://zh.wikipedia.org/wiki/%E7%9F%A9%E9%99%A3%E4%B9%98%E6%B3%95
: 3.兩個大量稀疏矩陣相乘的寫法?
(中略)
: 這樣的方法可以幫助用來計算稀疏矩陣嗎? 因為計算時還是要轉回來吧
: 所以感覺對"計算"好像沒有很大幫助orz
: 抱歉問題很多 麻煩java高手們解惑了
沒有必要一定要轉回來阿..
以兩層 hashmap 的情況來說的話...
你可以用 Iterator 去兩個對繞...
...
我這樣會不會黑話太嚴重了?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.148.49
討論串 (同標題文章)