java - Java 中的稀疏矩阵乘法

标签 java matrix multiplication sparse-matrix

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

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

最佳答案

你说:

"I considered iterating over the elements in matrix A and checking if it's rowA== colB, >and if so if 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)){

代替?

关于java - Java 中的稀疏矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10080427/

相关文章:

java - 如何将属性转换为字符串?

r - R中有没有一种方法可以按行和列组合不同大小的矩阵?

performance - 乘以 2 或将数字加到自身上哪个更好?大数

java - 全包字符集以避免 "java.nio.charset.MalformedInputException: Input length = 1"?

javascript - 文档可离线搜索...Java、Javascript、JQuery、Angular...等。

java - 在 Tomcat 6 中为 Java 的 GC 消息添加时间戳

java - OpenGL透视投影: How to define left and right

arrays - 如何根据 MA​​TLAB 中的时间合并数据集?

Matlab 将矩阵中的每一行乘以不同的数字

algorithm - toom-cook 第 3 部分分辨率多项式