私はC ++を初めて使用し、行列を乗算するためにstrassenのアルゴリズムをプログラムしようとしています。アルゴリズムの一部では、行列を 4 つの部分に分割する必要があります。
4 5 6 7
6 7 8 9
1 2 3 4
2 3 5 6
分割:
4 5 6 7
6 7 8 9
1 2 3 4
2 3 5 6
(各部分は再帰的に再利用され、分割されます)。元のマトリックスからデータをループおよびコピーせずにマトリックスを分割したい (時間がかかるため)。私が読んでいる本では、マトリックスは「インデックス計算を使用して分割され、元のマトリックスの行インデックスの範囲と列インデックスの範囲によってサブマトリックスを識別します。これが何を意味するのかわかりません。
また、2D配列とベクトルのどちらを使用する必要があるかわかりませんか? 多くの人がベクトルを推奨しているのを見てきましたが、これまでのところすべてを2D配列で書いているので、2D配列で私が望むことが可能になることを願っています.
ps行列の次元は常に2の累乗であり、nxn(平方)であると想定できます。また、これに似た多くの質問を見てきましたが、実際に探している解決策はありません。
ありがとう