Hungarian Algorithm
Hungarian Algorithm
Step 0: If necessary, convert the problem from a maximum assignment into a minimum
assignment. We do this by letting C = maximum value in the assignment matrix.
Replace each cij with C − cij . (see example 2).
Step 2: From each column subtract off the row column min.
Step 3: Use as few lines as possible to cover all the zeros in the matrix. There is no easy
rule to do this – basically trial and error.
Suppose you use k lines.
Step 4: Starting with the top row, work your way downwards as you make assignments.
An assignment can be (uniquely) made when there is exactly one zero in a row. Once
an assignment it made, delete that row and column from the matrix.
If you cannot make all n assignments and all the remaining rows contain more than
one zero, switch to columns. Starting with the left column, work your way rightwards
as you make assignments.
Iterate between row assignments and column assignments until you’ve made as many
unique assignments as possible. If still haven’t made n assignments and you cannot
make a unique assignment either with rows or columns, make one arbitrarily by
selecting a cell with a zero in it. Then try to make unique row and/or column
assignments. (See the examples below).
Example 1
The Police Department of Fargo, ND begins the morning shift by informing all first-shift
patrol persons of the previous evening’s activities and giving assignments to the various
team members. On a particular day, the following three activites must be accomplished:
(1) delivery of a DARE (Drug Abuse Resistance Education) lecture at a local elementary
1
school; (2) instruction of the rookie ploice class in using the baton; and (3) preparation of
a report for the evening’s city council meeting on drug activities over the past three months.
To help fulfill the mayor’s promise of “keeping more police on the streets,” only three
officers will be assigned to these activities. The goal is to minimize the total time these
officers will be absent from street patrol. Given the expertise of each officer, the table
below shows the time estimates (in hours) for each activity, including any officer specific
preparation time. Because the assignments will be occurring simultaneously, each officer
will be assigned to one and only one of the activities.
2
Step 3: Use the minimum number of lines to cover all the zeros in the matrix. Put lines
through column 2 and row 2. Since the number of lines required is k = 2 < n = 3, we
set m = minimum uncovered number. So m = 1. We subtract m from every uncovered
number and add m to every number covered with two lines.
Step 3: Use the minimum number of lines to cover all the zeros in the matrix. The number
of lines required is k = n = 3, so we STOP.
Step 4: We can make no unique assignments with rows or columns. So we start with an
aribitrary assignment where a 0 appears in a cell. Assign Borel to DARE and delete this
row and column from the matrix. We are left with the following submatrix.
What if we had assigned Borel to Baton Training instead of DARE? Then, we would have
been left with the following submatrix.
We can make assignments arbitrarily at this point. So there are 3 optimal solutions. (What
are the other two?)
Example 2
The accounting firm of Barnes, Fernandez, and Chou (BFC) has just hired six new junior
accountants who are to be placed into six specialty areas within the firm. Each applicant
has been given an overall skills test in the specialty areas. The results are presented in the
table below.
3
Junior Corporate Personal Financial Information General
Accountant Auditing Tax Tax Analysis Systems Accounting
Amy Cheng 62 75 80 93 95 97
Bob Szary 75 80 82 85 71 97
Sue Crane 80 75 81 98 90 97
Maya Pena 78 82 84 80 50 98
Koo Thanh 90 85 85 80 85 99
Lyn Ortiz 65 75 80 75 68 96
a. If test scores are judged to be a measure of potential success, which junior accountant
should be assigned to which specialty?
We can formulate this as an maximum assignment problem. Observe that if we try to just
assign the highest scores we end up with
Can we do better? The Hungarian Algorithm will give the optimal assignment.
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct Row Mins
Amy 37 24 19 6 4 2 2
Bob 24 19 17 14 28 2 2
Sue 19 24 18 1 9 2 1
Maya 21 17 15 19 49 1 1
Koo 9 14 14 19 14 0 0
Lyn 34 24 19 24 31 3 3
4
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct
Amy 35 22 17 4 2 0
Bob 22 17 15 12 26 0
Sue 18 23 17 0 8 1
Maya 20 16 14 18 48 0
Koo 9 14 14 19 14 0
Lyn 31 21 16 21 28 0
Col Mins 9 14 14 0 2 0
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct
Amy 26 8 3 4 0 0
Bob 13 3 1 12 24 0
Sue 9 9 3 0 6 1
Maya 11 2 0 18 46 0
Koo 0 0 0 19 12 0
Lyn 22 7 2 21 26 0
Step 3: Use the minimum number of lines to cover all the zeros in the matrix. Put
lines through columns 3, 4, 5, and 6 and row 5. Since the number of lines required is
k = 5 < n = 6, we set m = minimum uncovered number. So m = 2. We subtract m from
every uncovered number and add m to every number covered with two lines.
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct
Amy 24 6 3 4 0 0
Bob 11 1 1 12 24 0
Sue 7 7 3 0 6 1
Maya 9 0 0 18 46 0
Koo 0 0 2 21 14 2
Lyn 20 5 2 21 26 0
Step 3: Use the minimum number of lines to cover all the zeros in the matrix. Put lines
through columns 4, 5, and 6 and rows 4 and 5. Since the number of lines required is
k = 5 < n = 6, we set m = minimum uncovered number. So m = 1. We subtract m from
every uncovered number and add m to every number covered with two lines.
5
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct
Amy 23 5 2 4 0 0
Bob 10 0 0 12 24 0
Sue 6 6 2 0 6 1
Maya 9 0 0 19 47 1
Koo 0 0 2 22 15 3
Lyn 19 4 1 21 26 0
Step 3: Use the minimum number of lines to cover all the zeros in the matrix. The number
of lines required is k = n = 6, so we STOP.
Step 4: Make the assignment as follows: Starting with the top row going down, we can
assign Sue to Financial Analysis and Lyn to General Accounting.
Going back to the top row, we assign Amy to Info Systems. The remaining rows have two
or more zeros in them so we switch to columns. Starting from the left column, we assign
Koo to Auditing.
We are left with a zero matrix which means we can make arbitrary assignments. Assign
Bob to Corporate Tax and Maya to Personal Tax. The total score of this assignment is 543.
b. In addition to the primary specialty area, each new junior accountant will be trained
in a second specialty so the company has two junior accountants with training in each
specialty. Eliminating the original assignments found in part a, what assignments now give
the maximal potential for the second specialty?
We’d like to use the Hungarian algorithm but to do so, we need to first eliminate the orig-
inal assignments from the cost matrix. We do this by putting a very low potential (i.e.,
zero) to these assignments.
6
Junior Corporate Personal Financial Information General
Accountant Auditing Tax Tax Analysis Systems Accounting
Amy Cheng 62 75 80 93 0 97
Bob Szary 75 0 82 85 71 97
Sue Crane 80 75 81 0 90 97
Maya Pena 78 82 0 80 50 98
Koo Thanh 0 85 85 80 85 99
Lyn Ortiz 65 75 80 75 68 0
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct Row Mins
Amy 37 24 19 6 99 2 2
Bob 24 99 17 14 28 2 2
Sue 19 24 18 99 9 2 2
Maya 21 17 99 19 49 1 1
Koo 99 14 14 19 14 0 0
Lyn 34 24 19 24 31 99 19
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct
Amy 35 22 17 4 97 0
Bob 22 97 15 12 26 0
Sue 17 22 16 97 7 0
Maya 20 16 98 18 48 0
Koo 99 14 14 19 14 0
Lyn 15 5 0 5 12 80
Col Mins 15 5 0 4 7 0
7
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct
Amy 20 17 17 0 90 0
Bob 7 92 15 8 19 0
Sue 2 17 16 93 0 0
Maya 5 11 98 14 41 0
Koo 84 9 14 15 7 0
Lyn 0 0 0 1 5 80
Step 3: Use the minimum number of lines to cover all the zeros in the matrix. Put lines
through columns 4, 5, and 6 and row 6. Since the number of lines required is k = 4 < n = 6,
we set m = minimum uncovered number. So m = 2. We subtract m from every uncovered
number and add m to every number covered with two lines.
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct
Amy 18 15 15 0 90 0
Bob 5 90 13 8 19 0
Sue 0 15 14 93 0 0
Maya 3 9 96 14 41 0
Koo 82 7 12 15 7 0
Lyn 0 0 0 3 7 82
Step 3: Use the minimum number of lines to cover all the zeros in the matrix. Put
lines through columns 4 and 6 and rows 3 and 6. Since the number of lines required is
k = 4 < n = 6, we set m = minimum uncovered number. So m = 3. We subtract m from
every uncovered number and add m to every number covered with two lines.
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct
Amy 15 12 12 0 87 0
Bob 2 87 10 8 16 0
Sue 0 15 14 96 0 3
Maya 0 6 93 14 38 0
Koo 79 4 9 15 4 0
Lyn 0 0 0 6 7 85
Step 3: Use the minimum number of lines to cover all the zeros in the matrix. Put
lines through columns 1, 4, 5, and 6 and row 6. Since the number of lines required is
k = 5 < n = 6, we set m = minimum uncovered number. So m = 4. We subtract m from
every uncovered number and add m to every number covered with two lines.
8
Auditing Corporate Tax Personal Tax Fin Anal Info Sys Gen Acct
Amy 15 8 8 0 87 0
Bob 2 83 6 8 16 0
Sue 0 11 10 96 0 3
Maya 0 2 89 14 38 0
Koo 79 0 5 15 4 0
Lyn 4 0 0 10 11 89
Step 3: Use the minimum number of lines to cover all the zeros in the matrix. The number
of lines required is k = n = 6, so we STOP.
Step 4: Make the assignment as follows: Starting with the top row going down, we can
assign Bob to General Accounting, Maya to Auditing , Koo to Corporate Tax, Lyn to
Personal Tax.
Going back to the top row, we can assign Amy to Financial Analysis and Sue to Informa-
tion Systems. The total potential of this assignment is 523.