Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I use the Hungarian algorithm to find max cost?

The Hungarian algorithm solves the assignment problem in polynomial time. Given workers and tasks, and an n×n matrix containing the cost of assigning each worker to a task, it can find the cost minimizing assignment.

I want to find the choice for which cost is max? Can I do it using Hungarian or any similar method? Or this can only be done exponentially?

like image 1000
codersofthedark Avatar asked Jul 08 '13 06:07

codersofthedark


1 Answers

Wikipedia says:

If the goal is to find the assignment that yields the maximum cost, the problem can be altered to fit the setting by replacing each cost with the maximum cost subtracted by the cost.

So if I understand correctly: among all the costs you have as input, you find the maximum value. Then you replace each cost x by max - x. This way you still have positive costs and you can run the Hungarian algorithm.

Said differently: Hungarian tries to minimize the assignment cost. So, if you are looking for the maximum, you can reverse the costs: x -> -x. However, some implementations (don't know if all or any) require positive numbers. So the idea is to add a constant value to each cost in order to have positive numbers. This constant value does not change the resulting affectation.

like image 150
Maxime Chéramy Avatar answered Sep 30 '22 13:09

Maxime Chéramy