大きなスパース整数行列のアルゴリズム


12

数値の安定性を犠牲にすることなく、大きなスパース行列で行列演算を実行するライブラリを探しています。行列は1000+ x 1000+になり、行列の値は0〜1000になります。インデックス計算アルゴリズムを実行するため、行列の(スパース)行ベクトルをシリアルに生成します。各行を開発するにつれて、線形独立性をテストする必要があります。必要な数の線形独立ベクトルでマトリックスを入力したら、マトリックスを縮小行エシェロン形式に変換する必要があります。

ここでの問題は、私の実装がガウス消去法を使用して線形独立性を決定することです(すべての行ベクトルが見つかったら、行の階層を確保します)。ただし、行列の密度とサイズを考えると、キャンセルを実行するには先頭のエントリのlcmを見つける必要があるため、新しい行のエントリは時間とともに指数関数的に大きくなります。行列の縮小形を見つけると、問題がさらに悪化します。

私の質問は、線形独立性をテストし、エントリを可能な限り小さく保ちながら行の階段型を解くことができるアルゴリズム、またはそれ以上の実装がありますか?線形独立性の効率的なテストは、インデックス計算アルゴリズムで最も多く実行されるため、特に重要です。

回答:


5

多数の大きな素数を法として作業し、これらの素数を法とする結果を取得してから、これらの合同条件を満たす十分な桁数の有理数があるかどうかを確認できます。はいの場合、見つかった近似が正確であるかどうかを行列ベクトル乗算で確認できます。これは、正確な決定アルゴリズムに変換できます。

ただし、行列の行列式のサイズが次の場合 101000 (シナリオでかなり可能です)、コンポーネントが数千桁未満しか必要としないソリューションは一般的に見つかりません。

関連リンク:
http : //cs.ucsb.edu/~koc/docs/j21.pdf
http://dl.acm.org/citation.cfm?id=355767
http://dl.acm.org/citation。 cfm?id = 355765

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.