# [Rcpp-devel] Dulmage-Mendelsohn decomposition in R via Rcpp

Martin Maechler maechler at stat.math.ethz.ch
Wed Mar 25 12:36:25 CET 2020

```Dear Mauricio  (et al),

I'm the maintainer of the 'Matrix' package (and just reading
digests of Rcpp-devel, hence no "proper reply").

This looks quite interesting and relevant to me,
and I'd be interested to add this decomposition to the Matrix
package, so would be happy if you already have code for parts of
it.

As CSparce, Matrix uses simple C though, and hence this posting
is only peripherally related to Rcpp.

Best regards,

Martin Maechler
ETH Zurich and  R Core team

> Date: Wed, 25 Mar 2020 01:22:16 -0300
> From: Mauricio Vargas <mvargas at dcc.uchile.cl>
> To: rcpp-devel at r-forge.wu-wien.ac.at
> Subject: [Rcpp-devel] Dulmage-Mendelsohn decomposition in R via Rcpp

> Dear community

> Dr. Eddelbuettel suggested me to ask here.

> I am trying to implement *Dulmage-Mendelsohn decomposition* in R. CSparse
> already has a function to do this, and it's not exported in Matrix so I
> took the C files and tried to use them in  R.

> I decided to sketch this into an R Package with Rcpp:
> https://github.com/pachamaltese/dulmagemendelsohn

> The final goal is to find a permutation matrix, so that the original matrix
> is rearranged into a block diagonal matrix:

> matrix_input <- matrix(
> c(0,0,7,0,0,
> 0,0,0,0,3,
> 5,0,0,1,0,
> 0,0,2,0,0,
> 0,1,0,0,0),
> ncol = 5, nrow = 5
> )

> dm_decomposition <- function(matrix_input) {
> # the actual decomposition happens here
> # ... "MAGIC" ...

> # but here is an example output
> matrix(
> c(0,7,0,0,0,
> 5,0,1,0,0,
> 0,2,0,0,0,
> 0,0,0,0,3,
> 0,0,0,1,0),
> ncol = 5, nrow = 5
> )
> }

> dm_decomposition(matrix_input)

> Can you please provide me some guidance to get this working?

> I am by no means a C/C++ expert, I just have experience with statistics an
> writing R packages.

> *Mauricio Vargas Sepúlveda 帕夏*
> Do you like Data Science? visit pacha.hk

> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20200325/d88b3c55/attachment-0001.html>
```