symamd
对称近似最小度排列
语法
p = symamd(S)
p = symamd(S,旋钮)
[p,stats] = symamd(…)
描述
p = symamd(S)
对于一个对称正定矩阵年代
,返回排列向量p
这样S (p, p)
往往具有更稀疏的Cholesky因子年代
。来求排序年代
,symamd
构造一个矩阵米
这样spones(M'*M) = spones(S)
,然后进行计算p = colamd(M)
。的symamd
函数也可以用于对称不定矩阵。
年代
必须是方形的;只有严格的下三角形部分被引用。
p = symamd(S,旋钮)
在哪里旋钮
是标量。如果年代
是n
——- - - - - -n
,行和列大于旋钮* n
条目在排序之前被删除,并在输出排列中最后排序p
。如果旋钮
那么,参数不存在旋钮= spparms('wh_frac')
。
[p,stats] = symamd(…)
生成可选向量。统计数据
它提供了关于矩阵的排序和有效性的数据年代
。
统计(1) |
被忽略的密集或空行数 |
统计(2) |
被忽略的密集或空列数 |
统计数据(3) |
所使用的内部数据结构上执行的垃圾收集数 |
(4)统计数据 |
|
(5)统计数据 |
未排序或包含重复项的最右列索引 |
统计数据(6) |
上次看到重复或乱序的行索引中给出的列索引 |
统计(7) |
重复和乱序的行索引数 |
尽管如此,MATLAB®内置函数生成有效的稀疏矩阵,用户可以使用MATLAB C或Fortran api构造无效的稀疏矩阵并将其传递给symamd
。出于这个原因,symamd
验证年代
是有效的:
如果行索引在同一列中出现两次或多次,则
symamd
中忽略重复项,继续处理,并提供关于重复项的信息统计(4)
。如果一列中的行索引顺序乱了,
symamd
对矩阵内部副本的每一列进行排序年代
(但不修复输入矩阵年代
),继续处理,并提供有关中的无序条目的信息统计(4)
。如果
年代
在任何其他方面都无效,symamd
不能继续下去。它打印错误消息,并且不返回输出参数(p
或统计数据
).
排序之后是对称消去树后排序。
例子
参考文献
代码的作者symamd
Stefan I. Larimore和Timothy A. Davis (davis@cise.ufl.edu
),佛罗里达大学。该算法是与施乐PARC的John Gilbert和橡树岭国家实验室的Esmond Ng合作开发的。佛罗里达大学稀疏矩阵算法研究:http://www.cise.ufl.edu/research/sparse/