ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

symamd

対称な近似最小次数置換

構文

p = symamd(S)
p = symamd(S,knobs)
[p,stats] = symamd(...)

説明

p = symamd(S) は、対称正定行列 S に対して S(p,p)S よりもスパースなコレスキー因子をもつような置換ベクトル p を返します。S の並びを算出するために、symamdspones(M'*M) = spones (S) を満たす行列 M を作成し、p = colamd(M) を計算します。関数 symamd は、対称不定行列にも対応しています。

S は、正方行列でなければなりません。厳密な意味で下三角部のみが参照されます。

p = symamd(S,knobs)knobs はスカラー値です。Snn 列の場合、knobs*n より大きい行と列の要素は、並べ替える前に除去され、出力の置換行列 p の後に並べられます。knobs パラメーターが存在しない場合には、knobs = spparms('wh_frac') となります。

[p,stats] = symamd(...) はオプションのベクトル stats を出力し、行列 S の並びと妥当性に関するデータを提供します。

stats(1)

symamd で無視される密または空の行の数

stats(2)

symamd で無視される密または空の列の数

stats(3)

symamd が使用する内部データ構造で実行されるガーベージ コレクションの回数 (およそ 8.4*nnz(tril(S,-1)) + 9n 整数のサイズ)

stats(4)

行列が正しい場合は 0、正しくない場合は 1

stats(5)

並べ替えされていないものや重複した要素をもつ右側の列インデックスまたは、対象となる列が存在しない場合は 0

stats(6)

stats(5) で与えられる列インデックスと行インデックスの順序の違いや重複、または対象となる列が存在しない場合は、0

stats(7)

重複数と順序が違う行インデックス数

MATLAB® 組み込み関数は、正しいスパース行列を作成しますが、MATLAB C または Fortran API を使用して作成された正しくないスパース行列が symamd に転送される可能性もあります。そのため、symamdS が正しいものであることを確認します。

  • 行インデックスが、同じ列に複数回現れる場合、symamd は重複している部分を無視し、処理を続け、重複要素に関する情報を stats(4:7) に出力します。

  • 列の行インデックスが範囲外に位置する場合、symamd は、行列 S の内部コピーの各列を並べ替えし (入力行列 S は修正しません)、処理を続け、stats(4:7) に、範囲外の要素の情報を与えます。

  • S が、他の方法を使用して正しく設定できない場合、symamd は処理を続行できません。エラー メッセージを表示し、出力引数 (p またはstats) は返されません。

並びは、対称消去ツリー ポストの並びに従います。

すべて折りたたむ

逆 Cuthill-McKee と最小次数法の比較

ここでは、symrcm のリファレンス ページで説明されているバッキー ボールの例で逆 Cuthill-McKee と最小度合いを比較します。

B = bucky+4*speye(60);
r = symrcm(B);
p = symamd(B);
R = B(r,r);
S = B(p,p);
subplot(2,2,1), spy(R,4), title('B(r,r)')
subplot(2,2,2), spy(S,4), title('B(s,s)')
subplot(2,2,3), spy(chol(R),4), title('chol(B(r,r))')
subplot(2,2,4), spy(chol(S),4), title('chol(B(s,s))')

このような小さな問題でも、両方の並べ替えの動作が明らかです。RCM は、コレスキー分解の際、帯域幅が狭い行列を作成します。分解の際、最小度合いは大規模で連続したゼロのブロックをもつ構造体を作成します。その結果、最小度合い並べ替えは、分解の計算時間とメモリ容量を小さくできます。

参照

symamd のコード作成者は、フロリダ大学の Stefan I. Larimore and Timothy A. Davis (davis@cise.ufl.edu) です。このアルゴリズムは、Oak Ridge National Laboratory の John Gilbert、Xerox PARC、Esmond Ng との共同開発です。フロリダ大学の Sparse Matrix Algorithms Research のURL は、 http://www.cise.ufl.edu/research/sparse/

この情報は役に立ちましたか?