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