File Exchange

image thumbnail

Faster Jonker-Volgenant Assignment Algorithm

version 1.1 (4.76 KB) by

This is a modification made to Yi Cao's original JV algorithm code to improve speed.

1 Download

Updated

View License

This updated version performs the JV algorithm for a standard assignment problem for only valid entries in the cost matrix.

The modification removes rows and columns of the matrix where all values are inf, which is useful for applications where it is necessary to mask off certain assignments, such as in the k-best assignment algorithm (Murty algorithm).

The improvement in the runtime is dependent upon how many rows/cols are masked, but can be as 7-20x for many cases.

Yi Cao agreed to let me post this update, and the majority of the code is his.

Comments and Ratings (2)

yanchuan sim

hi

i ran this code on a 7036x3597 matrix and there seem to be a bug in the section where you pad the output matrix to look like munkres.

for rowind=1:size(dMat,1)
    assignment_small(rowind,rowsol(rowind))=1;
end

the error i got was the code trying to access rowsol(3598), when rowsol only has 3597 rows. It worked fine when i transposed my input data (so that there are more columns than rows).

Thanks.

Updates

1.1

Thanks to Mark Tincknell for submitting an update to generalize this for arbitrary rectangular matrices.

MATLAB Release
MATLAB 7.11 (R2010b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video