test_that("HungarianAlgorithm provides the correct answer on various inputs",
{
- for (n in c(2,3,10,50))
- {
- for (repetition in 1:3)
- {
- # Generate a random vector, and permute it:
- # we expect the algorithm to retrieve the permutation
- v = runif(n, min=-1, max=1)
- permutation = sample(1:n)
- v_p = v[permutation]
+ for (n in c(2,3,10,50))
+ {
+ for (repetition in 1:3)
+ {
+ # Generate a random vector, and permute it:
+ # we expect the algorithm to retrieve the permutation
+ v = runif(n, min=-1, max=1)
+ permutation = sample(1:n)
+ v_p = v[permutation]
- # v is reference, v_p is v after permutation
- # distances[i,j] = distance between i-th component of v and j-th component of v_p
- # "in rows : reference; in columns: after permutation"
- # "permutation" contains order on v to match v_p as closely as possible
- distances = sapply(v_p, function(elt) ( abs(elt - v) ) )
- assignment = .hungarianAlgorithm(distances)
- expect_equal(assignment, permutation)
- }
- }
+ # v is reference, v_p is v after permutation
+ # distances[i,j] = distance between i-th component of v and j-th component of v_p
+ # "in rows : reference; in columns: after permutation"
+ # "permutation" contains order on v to match v_p as closely as possible
+ distances = sapply(v_p, function(elt) ( abs(elt - v) ) )
+ assignment = .hungarianAlgorithm(distances)
+ expect_equal(assignment, permutation)
+ }
+ }
})