JonkerVolgenant WIP. A bare skeleton.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Merge remote-tracking branch 'origin/master' into JonkerVolgenant
Sparse JV solver - WIP

First failed attempt.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Embryonic sparse structure support for JVS.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
A sparse structure for LAP cost matrix.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Modify Johannes LAPJV implementation to be used with sparse structure.

And possible with rectangular cost matrices
Not tested in depth.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
JonkerVolgenantAlgorithmSparse: add a constructor.

Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Test for the JonkerVolgenantAlgorithmSparse.

It's all well and nice, it finds the same results as the non sparse
version (which finds the same results as the Munkres algo), but GOD it
is slow. It is about 10 to 20 times slower than the non-sparse version.
Needs more engineering.
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Another attempt at a sparse JV solver.

Based on arrays and really skipping missing values.
But it is slow (has to look for indices) and is wrong for matrix larger
than 12.
Investigate!!!
Signed-off-by: Jean-Yves Tinevez <jeanyves.tinevez@gmail.com>
Clean and rename before we debug.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Setup JVSparse debug environment.

sysout to the rescue!
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Fix the bug with the sparse version of Jonker-Volgenant algo.

In the augmentation phase, we need to retrieve the row of a certain
column (you don\t have to do that with the non sparse version). We were
looking linearly, stupidly, but we returned the index instead of the
index of index.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Another attemps at a sparse implementation,

Plus the environmnet to debug it.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Fix bug in JonkerVolgenantSparseAlgorithm. Performance is OK!

It seems like the overhead for the sparse version running a non-sparse
matrix is well acceptable. Hourray! A factor of 2 or 3 for small nRows
(<100) and something that gets close to 1 otherwise.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Revamp the sparse cost matrix.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
SparseCostMatrix: must now specify the number of columns at construction.

In the event of having the last columns empty, even if we forbid it.

Also: to solve LAP we impose that all columns have at least one cost.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
Revamp JVSUtils.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
JonkerVolgenantSparseAlgorithm: fix a bug in the column reduction step.

We cannot user standard array iterating initializer for a sparse matrix.
Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
WIP: tests and benchmarks and debuggin facilities for JVS.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>
JV Sparse: clean up tests and benchmarks.

Signed-off-by: Jean-Yves Tinevez <jean-yves.tinevez@pasteur.fr>