2

你好我知道有很多关于稀疏矩阵乘法的问题,但很多答案都说只使用库。我想在不使用库函数的情况下做到这一点。到目前为止,我已经完成了简单的部分,将我的矩阵转换为
元素数组
列数组
行数组的形式。

我需要帮助的是逻辑部分。如果矩阵 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));
}
4

1 回答 1

0

你说:

“我考虑遍历矩阵 A 中的元素并检查它是否是 rowA== colB,>如果是 colA==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)){

反而?

于 2013-02-15T06:43:55.647 回答