2012-04-09 238 views
2

你好,我知道有很多關於稀疏矩陣乘法的問題,但許多答案只是說使用庫。我想不使用庫函數。到目前爲止,我已經完成了簡單的部分,將我的矩陣轉換爲
元素數組
列數組
行數組。Java中的稀疏矩陣乘法

我需要幫助的是邏輯部分。如果矩陣A是M * N而矩陣B是N * P,那麼我該怎麼做?我考慮迭代矩陣A中的元素並檢查它是否是rowA == colB,如果是這樣,如果colA == rowB,並且如果這是真的,則乘。我目前知道我的版本是錯誤的,但我想不出一個辦法來解決問題。

for(int i = 0; i < rows; i++) 
{ 
    sum = 0;  
    for(int k = 0; k < cols; k++) 
     if (row_values.get(i) == col_valuesb.get(k)) 
      if (col_values.get(i) == row_valuesb.get(k)) 
      { 
       sum += (short) (elements.get(i)*elementsb.get(k)); 
      } 
    elementsc.add(sum); 
    row_valuesc.add(row_values.get(i)); 
    col_valuesc.add(col_values.get(k)); 
} 

回答

0

你說:

「我認爲遍歷在矩陣A的元素,並檢查它是否行rowA == COLB,>如果是的話,如果可樂== rowB中」

那麼,由於兩個矩陣按照定義可以相乘,當且僅當colA == rowB,那麼你不應該修改

if (row_values.get(i) == col_valuesb.get(k)){ 
      if (col_values.get(i) == row_valuesb.get(k)) 
      { 

,只是讓它

if (row_values.get(i) == col_valuesb.get(k)){ 

呢?