colamd
列の近似最小次数置換
構文
p = colamd(S)
説明
p = colamd(S)
は、スパース行列 S
について、列の近似最小次数による置換ベクトルを返します。非対称行列 S
の場合、S(:,p)
は S
に比べ、よりスパースな LU 分解となる傾向があります。S(:,p)' * S(:,p)
のコレスキー分解も S'*S
のコレスキー分解に比べ、よりスパースとなる傾向があります。
knobs
は 2 要素のベクトルです。S が m
行 n
列の場合、要素数が (knobs(1))*n
より多い行は無視されます。要素数が (knobs(2))*m
より多い列は、並べ替えの前に取り除かれ、出力の置換 p
において最後に並べ替えられます。knobs
パラメーターが存在しない場合には、knobs(1)
= knobs(2) = spparms('wh_frac')
となります。
stats
はオプションのベクトルで、行列 S
の並びと妥当性に関するデータを提供します。
|
|
|
|
|
|
| 行列が正しい場合は |
| 並べ替えされていないものや重複したエントリをもつ右側の列インデックスまたは、対象となる列が存在しない場合は |
|
|
| 重複数と順序が違う行インデックス数 |
MATLAB® の組み込み関数は、有効なスパース行列を作成しますが、ユーザーが MATLAB の C または Fortran API を使用して無効なスパース行列を作成し、colamd
に渡すことも考えられます。このことから、colamd
は S
が正しいことを確認します。
行インデックスが、同じ列に複数回現れる場合、
colamd
は重複しているエントリを無視し、処理を続け、重複エントリに関する情報をstats(4:7)
に出力します。列の行インデックスの順序が異なる場合、
colamd
は、行列S
の内部コピーの各列を並べ替えし (入力行列S
は修正しません)、処理を続け、stats(4:7)
に、範囲外のエントリの情報を与えます。S
が、他の方法を使用して正しく設定できない場合、colamd
は処理を続行できません。エラー メッセージを表示して、出力引数 (p
またはstats
) を戻しません。
順序は、列の消去木の帰りがけ順に従います。
例
参照
[1] Davis, Timothy A., John R. Gilbert, Stefan I. Larimore, and Esmond G. Ng. “Algorithm 836: COLAMD, a Column Approximate Minimum Degree Ordering Algorithm.” ACM Transactions on Mathematical Software 30, no. 3 (September 2004): 377–380. https://doi.org/10.1145/1024074.1024080.
拡張機能
バージョン履歴
R2006a より前に導入