主要内容

Symamd.

对称近似最小度置换

句法

p = symamd(s)
p = symamd(s,旋钮)
[p,stats] = symamd(...)

描述

p = symamd(s)对于一个对称的正定矩阵S.,返回排列载体P.这样s(p,p)倾向于有一个稀疏的尖弦系数S.。找到订购S.Symamd.构建一个矩阵m这样旋转(m'* m)=旋转痉挛,然后计算P = Colamd(M)。这Symamd.功能也可以适用于对称无限矩阵。

S.必须是正方形;只引用严格的下降三角形部分。

p = symamd(s,旋钮)在哪里旋钮是一个标量。如果S.N.-经过-N.,带有更多的行和列旋钮* n在订购之前删除条目,并在输出排列中排列P.。如果是旋钮参数不存在,然后旋钮= spparms('wh_frac')

[p,stats] = symamd(...)产生可选的矢量统计提供有关矩阵的排序和有效性的数据S.

统计数据(1)

忽略的密集或空行数Symamd.

统计数据(2)

忽略的密集或空列数Symamd.

统计(3)

对内部数据结构执行的垃圾收集数Symamd.(大小大致8.4 * NNZ(三叶(S,-1))+ 9n整数)

统计数据(4)

0.如果矩阵有效,或1如果无效

统计数据(5)

右侧的列索引是未损成的或包含重复条目,或0.如果没有这样的列

统计数据(6)

最后一次看到的列索引中的重复或无序行索引统计数据(5), 要么0.如果没有存在这样的行索引

统计数据(7)

重复次数和oroundlow行索引

虽然Matlab.®内置函数生成有效的稀疏矩阵,用户可以使用MATLAB C或FORTRAN API构造无效的稀疏矩阵并将其传递给Symamd.。为此原因,Symamd.验证那个S.已验证:

  • 如果行索引在同一列中出现两个或更多次,则Symamd.忽略重复条目,继续处理,并提供有关重复条目的信息统计数据(4:7)

  • 如果列中的行索引无序,Symamd.对其内部副本的每列进行排序S.(但没有修复输入矩阵S.)继续处理,并提供有关订阅无序条目的信息统计数据(4:7)

  • 如果S.以任何其他方式无效,Symamd.不能继续。它打印错误消息,并返回输出参数(P.要么统计)。

订购后面是排序后的对称消除树。

例子

全部收缩

以下是反向切割 - MCKEE和抗皱球示例上的最低程度的比较Symrcm.参考页面。

B = Bucky + 4 * Speye(60);r = symrcm(b);p = symamd(b);r = b(r,r);s = b(p,p);子图(2,2,1),间谍(R,4),标题('b(r,r)')子图(2,2,2),间谍(S,4),标题('B(s,s)')子图(2,2,3),间谍(CHOL(R),4),标题('Chol(B(R,R))')子图(2,2,4),间谍(CHOL(S),4),标题('CHOL(B(s,s))'

图包含4个轴。带标题B(R,R)的轴1包含类型线的对象。带标题B(S,S)的轴2包含类型线的对象。带标题CHOL的轴3(B(R,R))包含类型线的对象。具有标题霍尔的轴4(B(S,S))包含类型线的物体。

即使这是一个非常小的问题,两个订单的行为也是典型的。RCM产生具有窄带宽的矩阵,该矩阵几乎完全填充在粗心的分解过程中。最小程度产生具有大块连续零块的结构,在分解期间不填写。因此,最低程度排序需要更少的时间和存储来进行分解。

参考

代码的作者Symamd.斯特凡斯特斯法尔和蒂莫西A.戴维斯(davis@cise.ufl.edu.),佛罗里达大学。该算法与John Gilbert,Xerox Parc和奥蒙德NG,奥蒙德国家实验室合作开发。佛罗里达大学稀疏矩阵算法研究:https://www.cise.ufl.edu/research/sparse/

在R2006A之前介绍