Column approximate minimum degree permutation
p = colamd(S)
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 in stats(4:7)
.
If row indices in a column are out of order, colamd
sorts
each column of its internal copy of the matrix S
(but
does not repair the input matrix S
), continues
processing, and provides information about the out-of-order entries
in stats(4:7)
.
If S
is invalid in any other way, colamd
cannot
continue. It prints an error message, and returns no output arguments
(p
or stats
) .
The ordering is followed by a column elimination tree post-ordering.
[1] The authors of the code for "colamd"
are Stefan I. Larimore and Timothy A. Davis (davis@cise.ufl.edu),
University of Florida. The algorithm was developed in collaboration
with John Gilbert, Xerox PARC, and Esmond Ng, Oak Ridge National Laboratory.
Sparse Matrix Algorithms Research at the University of Florida: http://www.cise.ufl.edu/research/sparse/