当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R dmperm Dulmage-Mendelsohn 排列/分解


R语言 dmperm 位于 Matrix 包(package)。

说明

对于任何 (通常)稀疏矩阵x,计算Dulmage-Mendelsohn行和列排列,首先将 行和m列分别分割为粗分区;然后是更精细的,重新排序行和列,使置换矩阵尽可能为 “as upper triangular”。

用法

dmperm(x, nAns = 6L, seed = 0L)

参数

x

典型的稀疏矩阵;内部强制为 "dgCMatrix""dtCMatrix"

nAns

一个整数,指定生成的 listlength 。必须是 2、4 或 6。

seed

-1,0,1 中的整数代码;确定(初始)排列;默认情况下, seed = 0 ,无(或恒等)排列; seed = -1 使用 “reverse” 排列 k:1 ;对于 seed = 1 ,它是一个随机排列(使用 R 的 RNG、种子等)。

细节

请参阅蒂姆·戴维斯 (Tim Davis) 的书籍部分;第 122-127 页,在参考文献中。

一个名为list(默认情况下)有 6 个组件,

p

具有排列 p 、长度为 nrow(x) 的整数向量。

q

具有排列 q 、长度为 ncol(x) 的整数向量。

r

长度为 nb+1 的整数向量,其中块 k 是 A[p,q] 中的行 r[k] 到 r[k+1]-1。

s

长度为 nb+1 的整数向量,其中块 k 是 A[p,q] 中的 cols s[k] 到 s[k+1]-1。

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”.

也可以看看

Schur ,置换矩阵类; "pMatrix"

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Dulmage-Mendelsohn Permutation / Decomposition。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。