本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。
列近似最小度排列
p = colamd(S)
p = colamd(S)
为稀疏矩阵 S
返回列近似最小度置换向量。对于非对称矩阵 S
,S(:,p)
可能比 S
具有更稀疏的 LU 因子。S(:,p)' * S(:,p)
的 Cholesky 分解也可能比 S'*S
的 Cholesky 分解稀疏。
knobs
是一个二元素向量。如果 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] The authors of the code for colamd
are Stefan
I. Larimore and Timothy A. Davis. The algorithm was developed in collaboration with John
Gilbert, Xerox PARC, and Esmond Ng, Oak Ridge National Laboratory. Sparse Matrix Algorithms
Research: http://faculty.cse.tamu.edu/davis/research.html