【问题标题】:Sparse Matrix multiplication in JavaJava中的稀疏矩阵乘法
【发布时间】:2012-04-09 22:01:03
【问题描述】:

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

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

【问题讨论】:

    标签: java matrix multiplication sparse-matrix


    【解决方案1】:

    你说:

    “我考虑过遍历矩阵 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)){
    

    改为?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-20
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 2018-07-27
      相关资源
      最近更新 更多