當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。