colamd
Column approximate minimum degree permutation
Syntax
p = colamd(S)
Description
p = colamd(S)
returns
the column approximate minimum degree permutation vector for the sparse
matrix S
. For a non-symmetric matrix S
, S(:,p)
tends
to have sparser LU factors than S
. The Cholesky
factorization of S(:,p)' * S(:,p)
also tends to
be sparser than that of S'*S
.
knobs
is a two-element vector. If S is m
-by-n
,
then rows with more than (knobs(1))*n
entries are
ignored. Columns with more than (knobs(2))*m
entries
are removed prior to ordering, and ordered last in the output permutation p
.
If the knobs
parameter is not present, then knobs(1)
= knobs(2) = spparms('wh_frac')
.
stats
is an optional vector that provides
data about the ordering and the validity of the matrix S
.
| Number of dense or empty rows ignored by |
| Number of dense or empty columns ignored by |
| Number of garbage collections performed on the internal
data structure used by |
|
|
| Rightmost column index that is unsorted or contains duplicate
entries, or |
| Last seen duplicate or out-of-order row index in the
column index given by |
| Number of duplicate and out-of-order row indices |
Although MATLAB® built-in functions generate valid sparse
matrices, a user may construct an invalid sparse matrix using the MATLAB C
or Fortran APIs and pass it to colamd
. For this
reason, colamd
verifies that S
is
valid:
If a row index appears two or more times in the same column,
colamd
ignores the duplicate entries, continues processing, and provides information about the duplicate entries instats(4:7)
.If row indices in a column are out of order,
colamd
sorts each column of its internal copy of the matrixS
(but does not repair the input matrixS
), continues processing, and provides information about the out-of-order entries instats(4:7)
.If
S
is invalid in any other way,colamd
cannot continue. It prints an error message, and returns no output arguments (p
orstats
) .
The ordering is followed by a column elimination tree post-ordering.
Examples
References
[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.
Extended Capabilities
Version History
Introduced before R2006a