Contents
ToggleHungarian algorithm
Also called algorithm of Kühn, the Hungarian algorithm, or Hungarian method solves assignment problems of the cost table type. Consider a number of machines and as many tasks. Each machine performs a task at a certain cost. The objective is to determine the machine on which each task will run, in parallel.
Let us take a simple example in order to show the process of the algorithm. Let 5 machines (row) and 5 tasks (column) give the following cost table:
17 | 15 | 9 | 5 | 12 |
16 | 16 | 10 | 5 | 10 |
12 | 15 | 14 | 11 | 5 |
4 | 8 | 14 | 17 | 13 |
13 | 9 | 8 | 12 | 17 |
Step 1 Hungarian algorithm: reduction of the initial table
12 | 9 | 4 | 0 | 7 |
11 | 10 | 5 | 0 | 5 |
7 | 9 | 9 | 6 | 0 |
0 | 3 | 10 | 13 | 9 |
5 | 0 | 0 | 4 | 9 |
This standardization of machine and task costs makes it possible to have at least one zero per row and per column.
Hungarian Algorithm Step 2: Find a Workable Solution
We are looking for the line with the fewest non-crossed zeros. In the event of a tie, we will take the highest line.
- We surround one of the zeros of this line (arbitrarily the one furthest to the left).
- All zeros in the same row and column as the one selected are crossed out.
- We start again until all the zeros are boxed or crossed out.
If we have framed a zero by row and by column, we have an optimal solution. Otherwise we go to step 3.
12 | 9 | 4 | 0 | 7 |
11 | 10 | 5 | -0- | 5 |
7 | 9 | 9 | 6 | 0 |
0 | 3 | 10 | 13 | 9 |
5 | 0 | -0- | 4 | 9 |
Step 3 Hungarian algorithm: creation of the pivots
The sub-table allows by subtraction to have a configuration making it possible to find an optimal solution. The construction of the pivots is done as follows:
- We mark any line that does not contain any framed zero.
- Any column with a crossed out zero is marked on a marked row.
- We mark any row having a framed zero in a marked column.
- Repeat 2 and 3 until no more changes.
A line is then drawn on any unmarked line and on any marked column. In our example, row 1 and 2 are marked, as well as column 4. Double-marked items are marked with a star.
12 | 9 | 4 | -0- | 7 |
11 | 10 | 5 | -0- | 5 |
-7- | -9- | -9- | *-6-* | -0- |
-0- | -3- | -10- | *-13-* | -9- |
-5- | -0- | -0- | *-4-* | -9- |
Step 4 Hungarian algorithm: modification of the table
The cells not crossed by a line constitute a partial table.
- We subtract from all the boxes of this table the smallest element thereof.
- This element is added to all the boxes of the table crossed out in both directions (accompanied by a star).
Steps 2 to 4 are repeated until an optimal result is obtained. In our example, we get an optimal result after the first iteration.
8 | 5 | 0 | 0 | 3 |
7 | 6 | 1 | 0 | 1 |
7 | 9 | 9 | 10 | 0 |
0 | 3 | 10 | 17 | 9 |
5 | 0 | 0 | 8 | 9 |
The minimum allocation is calculated from the initial table: 9 + 5 + 5 + 4 + 9 = 32.
The following figure shows the changes in the bipartite graph with the Hungarian algorithm.