Java中的稀疏矩阵乘法

Java中的稀疏矩阵乘法,java,matrix,multiplication,sparse-matrix,Java,Matrix,Multiplication,Sparse Matrix,你好,我知道有很多关于稀疏矩阵乘法的问题,但是很多答案都说只使用库。我想在不使用库函数的情况下实现它。到目前为止,我已经完成了简单的部分,将矩阵转换为 元素数组 列数组 行数组 我需要的是逻辑部分的帮助。如果矩阵A是M*N,矩阵B是N*P,我该怎么做?我考虑迭代矩阵A中的元素,检查它是否为rowA==colB,如果是,如果为colA==rowB,如果为真,则相乘。我现在知道我的版本是错误的,但我想不出一个方法来纠正它 for(int i = 0; i < rows; i++) {

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

我需要的是逻辑部分的帮助。如果矩阵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));
}
for(int i=0;i
你说过:

“我考虑对矩阵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)){
相反?

你说:

“我考虑对矩阵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)){
相反