Re: [問題] 產生稀疏矩陣及稀疏矩陣相乘?

看板java作者 (._.)時間17年前 (2007/08/08 22:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《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
文章代碼(AID): #16kSsVzq (java)
文章代碼(AID): #16kSsVzq (java)