Всем привет!
Недавно я ознакомился с венгерским алгоритмом решения задачи о назначениях. Мне стало любопытно, можно ли за полиномиальное время решить более общий случай: в таблице n × m выбрать числа таким образом, что сумма выбранных чисел была максимальна, причем в каждой строке были выбраны не менее Rmin и не более Rmax чисел, а в каждом столбце были выбраны не менее Cmin и не более Cmax чисел.
При Rmin = Rmax = 1 и Cmin = Cmax = 1 это задача о назначениях. А что можно сказать о более общем случае? Есть ли у вас какие-то мысли по этому поводу (может быть, хотя бы в более частном случае Rmin = Rmax = R и Cmin = Cmax = C)? Буду благодарен любым идеям.
Auto comment: topic has been translated by always_first (original revision, translated revision, compare)
In the case Rmin = Rmax = Cmin = 1, and general Cmax the problem reduces to Generalized assignment problem, which is NP-hard (and hard to approximate). I don't expect it to get any easier for general values of the bounds.
However, this kind of problems are usally simple to transform to Integer Program, so if you're instance is not big you can hope to get an exact solution using a good MIP solver
Reduction is not correct since the problem you mentioned has a more strong weight constraint: "sum of costs of tasks cannot exceed the budget of an agent". In our case all weights in this constraint are equal to 1.
Пара тривиальных наблюдений:
Задача о назначениях — это Rmin = 0, а не Rmin = 1 (или симметрично с C).
Rmin = Rmax = R и Cmin = Cmax = C — это взять всю таблицу.
Может быть, решаемая (за полином) задача получится при Rmin = 0 и Rmax = 2?..
Isn't it a simple minimum cost LR-flow problem? Consider the classical bipartite graph where rows correspond to the left part and columns correspond to the right part, and there exist edges
How do you enforce a minimum flow on each edge ?
It is described in this topic, also the link to the paper is given.
Thank you! Nice solution.
Does this solution work for not integer A[r][c] as well? In e-maxx site it is written that costs must be integers.
There is no need for costs to be integer. Min-cost flow doesn't use the fact costs are integral at any moment.
I see, thanks a lot.
Hi. I know this is not related to the topic, but can you point me some good resources for min cost flow algorithms?
Thanks!