MATLAB中dmperm函数用法

目录

语法

说明


        dmperm函数的功能是完成Dulmage-Mendelsohn 分解。

语法

p = dmperm(A)
[p,q,r,s,cc,rr] = dmperm(A)

说明

        如果列 j 与行 i 匹配,p = dmperm(A) 得到的结果为向量 p,这样 p(j) = i,如果列 j 与其不匹配,得到的结果为零。如果 A 是具有完整结构秩的方阵,则 p 是最大匹配行置换并且 A(p,:) 包含非零对角线。A 的结构秩是 sprank(A) = sum(p>0)。

        [p,q,r,s,cc,rr] = dmperm(A)(其中 A 无需是方阵或完整结构秩)计算 A 的 Dulmage-Mendelsohn 分解。p 和 q 分别是行和列置换向量,这样 A(p,q) 包含分块上三角。r 和 s 是索引向量,指示精细分解的块边界。cc 和 rr 是长度为 5 的向量,指示粗略分解的块边界。

C = A(p,q) 拆分为 4×4 组粗略块:

A11 A12 A13 A14
0    0  A23 A24
0    0   0  A34
0    0   0  A44

        其中 A12、A23 和 A34 是具有非零对角线的方阵。A11 的列是不匹配的列,A44 的行是不匹配的行。这些块中的任何块都可以为空。

        在粗略分解中,(i,j)th 块是 C(rr(i):rr(i+1)-1,cc(j):cc(j+1)-1)。如果 A 为方阵并且是非奇异结构,则 A23 = C。也就是说,所有其他粗略块都为 0×0。

对于线性方程组,

  • [A11 A12] 是方程组的欠定部分,它始终是列数多于行数的矩形或为 0×0。

  • A23 是方程组的确定部分,它始终为方形。A23 子矩阵通过精细分解(A23 的强连通分量)进一步细分为分块上三角矩形。

  • [A34; A44] 是方程组的超定部分,它始终是行数比列数多的矩形或为 0×0。

        A 的结构秩是 sprank(A) = rr(4)-1,这是 A 数值秩的上限。在精确算术运算中,概率为 1 的情况下 sprank(A) = rank(full(sprand(A)))。

        C(r(i):r(i+1)-1,s(j):s(j+1)-1) 是精细分解的第 (i,j) 块。(1,1) 块是矩形块 [A11 A12],除非该块为 0×0。(b,b) 块是矩形块 [A34 ; A44],除非该块为 0×0,其中 b = length(r)-1。C(r(i):r(i+1)-1,s(i):s(i+1)-1) 形式的其他所有块是 A23 的对角线块,并且是具有非零对角线的方阵。

提示

  • 如果 A 是可约矩阵,可以将 A 置换为带有不可约对角块的分块上三角矩阵,然后执行分块回代,进而对线性方程组 Ax = b 求解。仅需要对已置换矩阵的对角块进行分解,节省对角线上方块中的填充量和算术运算。

  • ​从图形理论方面看,dmperm 在 A 的偶图中计算最大大小匹配,并且 A(p,q) 的对角块对应于该图形的强 Hall 分量。dmperm 的输出还可用于计算无向图或有向图的连通或强连通分量。有关详细信息,请参阅 Pothen-Fan [1]。​

提示

  • 如果 A 是可约矩阵,可以将 A 置换为带有不可约对角块的分块上三角矩阵,然后执行分块回代,进而对线性方程组 Ax = b 求解。仅需要对已置换矩阵的对角块进行分解,节省对角线上方块中的填充量和算术运算。

  • 从图形理论方面看,dmperm 在 A 的偶图中计算最大大小匹配,并且 A(p,q) 的对角块对应于该图形的强 Hall 分量。dmperm 的输出还可用于计算无向图或有向图的连通或强连通分量。

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值