## Example similar to clue::solve_LSAP
set.seed(8237)
x <- matrix(sample(1:100), nrow = 10)
y <- assignment(x)
# show permutation and check minimum sum
y$perm # 7 6 10 5 8 2 1 4 9 3
y$min # 173
z <- cbind(1:10, y$perm)
x[z] # 16 9 49 6 17 14 1 44 10 7
y$min == sum(x[z]) # TRUE
if (FALSE) {
## Example: minimize sum of distances of complex points
n <- 100
x <- rt(n, df=3) + 1i * rt(n, df=3)
y <- runif(n) + 1i * runif(n)
cmat <- round(outer(x, y, FUN = function(x,y) Mod(x - y)), 2)
system.time(T1 <- assignment(cmat)) # elapsed: 0.003
T1$min / 100 # 145.75
## Hungarian algorithm in package 'clue'
library("clue")
system.time(T2 <- solve_LSAP(cmat)) # elapsed: 0.014
sum(cmat[cbind(1:n, T2)]) # 145.75
}
Run the code above in your browser using DataLab