2012-04-09 195 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)){ 

呢?