Skip to content

Commit

Permalink
add nodelistToEdgelist
Browse files Browse the repository at this point in the history
  • Loading branch information
jakobbossek committed Jan 3, 2018
1 parent 707be81 commit 8ecf9f4
Show file tree
Hide file tree
Showing 10 changed files with 72 additions and 0 deletions.
1 change: 1 addition & 0 deletions NAMESPACE
Expand Up @@ -22,6 +22,7 @@ export(mcMSTPrim)
export(mutEdgeExchange)
export(mutSubgraphMST)
export(mutUniformPruefer)
export(nodelistToEdgelist)
export(permutationToCharVec)
export(permutationToEdgelist)
export(plotEdgeFrequency)
Expand Down
22 changes: 22 additions & 0 deletions R/transformations.R
Expand Up @@ -98,6 +98,28 @@ edgeListToCharVec = function(edgelist, n = NULL) {
return(cv)
}

#' Convert sequence of nodes to edge list.
#'
#' @param nodelist [\code{integer}]\cr
#' Sequence of nodes.
#' @template ret_edgelist
#' @examples
#' # first generate a random permutation, e.g., representing
#' # a roundtrip tour in a graph
#' nodelist = sample(1:8)
#' # now convert into an edge list
#' nodelistToEdgelist(nodelist)
#' @family transformation functions
#' @export
nodelistToEdgelist = function(nodelist) {
n = length(nodelist)
edgelist = matrix(NA, nrow = 2L, ncol = n - 1L)
for (i in 1:(n - 1L)) {
edgelist[, i] = nodelist[i:(i + 1L)]
}
return(edgelist)
}

#' Convert characteristic vector to edge list.
#'
#' @template arg_charvec
Expand Down
1 change: 1 addition & 0 deletions man/charVecToEdgelist.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/edgeListToCharVec.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 33 additions & 0 deletions man/nodelistToEdgelist.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/permutationToCharVec.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/permutationToEdgelist.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/prueferToCharVec.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions man/prueferToEdgeList.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions tests/testthat/test_transformations.R
Expand Up @@ -56,3 +56,13 @@ test_that("trafo for roundtrip tours work well", {
expect_true(all(cvec1 %in% c(0, 1)))
}
})

test_that("trafo between node list and edge list works", {
for (i in 1:10L) {
n = sample(2:10, 1L)
nodelist = sample(1:10, size = n, replace = FALSE)
edgelist = nodelistToEdgelist(nodelist)
expect_matrix(edgelist, nrows = 2L, ncols = n - 1L, mode = "numeric")
expect_true(all(as.integer(edgelist) %in% nodelist))
}
})

0 comments on commit 8ecf9f4

Please sign in to comment.