dmperm
位于 Matrix
包(package)。 说明
对于任何x
,计算Dulmage-Mendelsohn行和列排列,首先将 行和m
列分别分割为粗分区;然后是更精细的,重新排序行和列,使置换矩阵尽可能为 “as upper triangular”。 (通常)稀疏矩阵
用法
dmperm(x, nAns = 6L, seed = 0L)
参数
x |
|
nAns |
|
seed |
-1,0,1 中的整数代码;确定(初始)排列;默认情况下, |
细节
请参阅蒂姆·戴维斯 (Tim Davis) 的书籍部分;第 122-127 页,在参考文献中。
值
一个名为list
(默认情况下)有 6 个组件,
p |
具有排列 |
q |
具有排列 |
r |
长度为 |
s |
长度为 |
rr5 |
长度为 5 的整数向量,定义粗行分解。 |
cc5 |
长度为 5 的整数向量,定义粗列分解。 |
例子
set.seed(17)
(S9 <- rsparsematrix(9, 9, nnz = 10, symmetric=TRUE)) # dsCMatrix
str( dm9 <- dmperm(S9) )
(S9p <- with(dm9, S9[p, q]))
## looks good, but *not* quite upper triangular; these, too:
str( dm9.0 <- dmperm(S9, seed=-1)) # non-random too.
str( dm9_1 <- dmperm(S9, seed= 1)) # a random one
## The last two permutations differ, but have the same effect!
(S9p0 <- with(dm9.0, S9[p, q])) # .. hmm ..
stopifnot(all.equal(S9p0, S9p))# same as as default, but different from the random one
set.seed(11)
(M <- triu(rsparsematrix(9,11, 1/4)))
dM <- dmperm(M); with(dM, M[p, q])
(Mp <- M[sample.int(nrow(M)), sample.int(ncol(M))])
dMp <- dmperm(Mp); with(dMp, Mp[p, q])
set.seed(7)
(n7 <- rsparsematrix(5, 12, nnz = 10, rand.x = NULL))
str( dm.7 <- dmperm(n7) )
stopifnot(exprs = {
lengths(dm.7[1:2]) == dim(n7)
identical(dm.7, dmperm(as(n7, "dMatrix")))
identical(dm.7[1:4], dmperm(n7, nAns=4))
identical(dm.7[1:2], dmperm(n7, nAns=2))
})
作者
Martin Maechler, with a lot of “encouragement” by Mauricio Vargas.
参考
Section 7.4 Dulmage-Mendelsohn decomposition, pp. 122 ff of
Timothy A. Davis (2006)
Direct Methods for Sparse Linear Systems, SIAM Series
“Fundamentals of Algorithms”.
也可以看看
相关用法
- R dtrMatrix-class 三角形稠密数值矩阵
- R dgCMatrix-class 压缩、稀疏、面向列的数值矩阵
- R diagonalMatrix-class 对角矩阵的“diagonalMatrix”类
- R dsRMatrix-class 对称稀疏压缩行矩阵
- R dsCMatrix-class 数值对称稀疏(列压缩)矩阵
- R diagU2N 将三角矩阵从单位三角形变换到一般三角形并返回
- R dgTMatrix-class 三元组形式的稀疏矩阵
- R dimScale 缩放矩阵的行和列
- R ddiMatrix-class 对角数值矩阵的“ddiMatrix”类
- R dpoMatrix-class 正半定稠密(压缩|非压缩)数值矩阵
- R dtpMatrix-class 填充三角密集矩阵 - “dtpMatrix”
- R dtCMatrix-class 三角形(压缩)稀疏列矩阵
- R drop0 从稀疏矩阵中删除非结构零
- R dtRMatrix-class 三角形稀疏压缩行矩阵
- R denseMatrix-class 所有密集矩阵的虚拟类“denseMatrix”
- R ddenseMatrix-class 数值密集矩阵的虚拟类“ddenseMatrix”
- R dsyMatrix-class 对称密集(压缩或非压缩)数值矩阵
- R dsparseMatrix-class 数值稀疏矩阵的虚拟类“dsparseMatrix”
- R dMatrix-class (虚拟)“双”矩阵的“dMatrix”类
- R facmul-methods 乘以矩阵因式分解的因数
- R solve-methods 函数求解矩阵包中的方法
- R updown-methods 更新和降级稀疏 Cholesky 分解
- R bdiag 构建分块对角矩阵
- R printSpMatrix 灵活格式化和打印稀疏矩阵
- R symmetricMatrix-class 包矩阵中对称矩阵的虚拟类
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Dulmage-Mendelsohn Permutation / Decomposition。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。