2

こんにちは、疎行列の乗算について多くの質問があることは知っていますが、多くの回答は単にライブラリを使用すると言っています。ライブラリ関数を使わずにやりたい。これまでのところ、行列を
要素配列、
列配列、
行配列の形式にするという簡単な部分は完了しました。

私が助けを必要としているのは、ロジック部分です。行列 A が M*N で、行列 B が N*P の場合、どうすればいいですか? 行列 A の要素を繰り返し処理し、それが rowA== colB かどうかを確認し、そうであれば colA==rowB であり、それが true であれば乗算することを検討しました。現在、自分のバージョンが間違っていることはわかっていますが、正しくする方法が思いつきません。

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 かどうかを確認することを検討しました」

まあ、2 つの行列は、定義により、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 に答える