NAME
Algorithm::Munkres - Perl extension for Munkres' solution to classical
Assignment problem for square matrices
SYNOPSIS
use Algorithm::Munkres;
@mat = (
[ 12, 3, 7, 4, 10],
[ 5, 10, 6, 2, 4],
[ 8, 5, 1, 4, 9],
[ 15, 2, 7, 8, 10],
[ 7, 2, 8, 1, 12],
);
assign(\@mat,\@out_mat);
DESCRIPTION
Assignment Problem: Given N jobs and N workers, how should the
assignment of a Worker to a Job be done, so as to minimize the time
taken.
Thus if we have 3 jobs p,q,r and 3 workers x,y,z such that:
x y z
p 2 4 7
q 3 9 5
r 8 2 9
where the cell values of the above matrix give the time required for the worker(given by column name)
to complete the job(given by the row name)
then possible solutions are:
Total
1. 2, 9, 9 20
2. 2, 2, 5 9
3. 3, 4, 9 16
4. 3, 2, 7 12
5. 8, 9, 7 24
6. 8, 4, 5 17
Thus (2) is the optimal solution for the above problem. This kind of
brute-force approach of solving Assignment problem quickly becomes slow
and bulky as N grows, because the number of possible solution are N! and
thus the task is to evaluate each and then find the optimal solution.(If
N=10, number of possible solutions: 3628800 !) Munkres' gives us a
solution to this problem, which is implemented in this module.
EXPORT
"assign" function by default.
INPUT
The input matrix should be in a two dimensional array(array of array)
and the 'assign' subroutine expects a reference to this array and not
the complete array. eg:assign(\@inp_mat, \@out_mat); The second argument
to the assign subroutine is the reference to the output array.
OUTPUT
The assign subroutine expects references to two arrays as its input
paramenters. The second parameter is the reference to the output array.
This array is populated by assign subroutine. This array is single
dimensional Nx1 matrix. For above example the output array returned will
be: (0, 2, 1)
where 0th element indicates that 0th row is assigned 0th column. 1st
element indicates that 1st row is assigned 2nd column. 2nd element
indicates that 2nd row is assigned 1st column.
SEE ALSO
1. http://216.249.163.93/bob.pilgrim/445/munkres.html
2. Munkres, J. Algorithms for the assignment and transportation
Problems. J. Siam 5 (Mar. 1957), 32-38
3. François Bourgeois and Jean-Claude Lassalle. 1971. An extension of
the Munkres algorithm for the assignment problem to rectangular
matrices. Communication ACM, 14(12):802-804
AUTHOR
Anagha Kulkarni, University of Minnesota, Duluth kulka020@d.umn.edu
Ted Pedersen, University of Minnesota, Duluth tpederse@d.umn.edu
COPYRIGHT AND LICENSE
Copyright (C) 2004-2005, Ted Pedersen and Anagha Kulkarni
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version. This program is distributed in the hope that
it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.