test_that("SGM works", { local_rng_version("3.5.0") withr::local_seed(42) vc <- 10 nos <- 3 g1 <- sample_gnp(vc, .5) randperm <- c(1:nos, nos + sample(vc - nos)) g2 <- sample_correlated_gnp(g1, corr = .7, p = g1$p, permutation = randperm) P <- match_vertices(g1[], g2[], m = nos, start = matrix(1 / (vc - nos), vc - nos, vc - nos), iteration = 20 ) expect_equal(c(1:nos, P$corr[, 2]), randperm) expect_equal(apply(P$P != 0, 1, which), randperm) expect_equal( apply(P$D != 0, 1, which), randperm[(nos + 1):vc] - nos ) ## Slightly bigger withr::local_seed(42) vc <- 100 nos <- 10 g1 <- sample_gnp(vc, .1) perm <- c(1:nos, sample(vc - nos) + nos) g2 <- sample_correlated_gnp(g1, corr = 1, p = g1$p, permutation = perm) P <- match_vertices(g1[], g2[], m = nos, start = matrix(1 / (vc - nos), vc - nos, vc - nos), iteration = 20 ) expect_equal(P$corr[, 2], perm[(nos + 1):vc]) expect_equal(apply(P$P != 0, 1, which), perm) expect_equal( apply(P$D != 0, 1, which), perm[(nos + 1):vc] - nos ) }) test_that("LSAP does not change input matrix", { x <- matrix(c(5, 1, 4, 3, 5, 2, 2, 4, 4), nrow = 3) solve_LSAP(x) expect_equal(x, matrix(c(5, 1, 4, 3, 5, 2, 2, 4, 4), nrow = 3)) })