Commit | Line | Data |
---|---|---|
cbd88fe5 BA |
1 | context("hungarianAlgorithm") |
2 | ||
3 | test_that("HungarianAlgorithm provides the correct answer on various inputs", | |
4 | { | |
5 | for (n in c(2,3,10,50)) | |
6 | { | |
7 | for (repetition in 1:3) | |
8 | { | |
9 | # Generate a random vector, and permute it: | |
10 | # we expect the algorithm to retrieve the permutation | |
11 | v = runif(n, min=-1, max=1) | |
12 | permutation = sample(1:n) | |
13 | v_p = v[permutation] | |
14 | ||
15 | # v is reference, v_p is v after permutation | |
16 | # distances[i,j] = distance between i-th component of v and j-th component of v_p | |
17 | # "in rows : reference; in columns: after permutation" | |
18 | # "permutation" contains order on v to match v_p as closely as possible | |
19 | distances = sapply(v_p, function(elt) ( abs(elt - v) ) ) | |
20 | assignment = .hungarianAlgorithm(distances) | |
21 | expect_equal(assignment, permutation) | |
22 | } | |
23 | } | |
24 | }) |