多对一分配问题是 NP-hard 吗?

问题描述

如果有人问过类似的问题,我深表歉意。我正在解决N 个任务和M 个人的多对一分配问题。每个人可以得到多个任务,而每个任务只能分配给一个人。如果将任务i分配给人员j,我们可以获得利润Pij

我知道匈牙利算法可以在多项式时间内以最佳方式解决一对一分配问题。我认为这个问题比一对一分配问题更难,也是广义分配问题(GAP)的一个特例,我们对一个人可以分配的任务数量没有限制。 (当然,我们可以限制一个人的任务数,但在这种情况下每个任务的权重是相同的,所以它仍然是GAP的一个特例。)

我相信我们可以通过应用启发式方法来获得次优解决方案,无论是否限制分配给一个人的任务数量,但是否有任何算法可以在多项式时间内解决这个问题?这个问题是 np-hard 问题吗?

解决方法

由于任务大小不同,广义分配问题很困难。自然线性程序存在完整性差距。

这个问题没有这样的差距,实际上可以表述为最小成本流通问题的一个实例,可以在强多项式时间内解决。假设任务利润是正的(通过向任务的所有潜在利润添加一个常数,不失一般性),建立一个网络,其中每个任务都有一个节点,每个人都有一个节点,以及一个源/汇。从源/接收器到每个任务有一个容量为 1 的弧,成本为 0。从每个任务 i 到每个人 j 有一个无限容量弧,成本为 -Pij。从每个人到源/汇有一条弧,其容量等于该人可以完成的任务数且成本为 0。

要获得解决方案,请根据流程将任务读给人物弧线。