我正在寻找一种有效的方法来实现最佳的工作/工人分配。我使用匈牙利算法,但有一个问题:一个工人一次只能被分配到一个工作,每个工作都有一个评级,每个工人都有自己的评级。评为4
的工作可由具有评级4
的工作人员或由多名工作人员解决,其组合评级等于作业的评级,例如: 2+2
或3+1
或2+1+1
或1+1+1+1
。被评为2
的工作可由两名被评为1
的工人或一名被评为2
的工人解决。我希望尽可能选择一对一的分配。
在这种情况下,是否有任何已知的算法或任何简单的方法来实现最佳分配?
答案 0 :(得分:1)
你的问题显然至少和Partition Problem一样难,甚至只是知道是否存在可行的解决方案。为了表明这一点,让我们有一个分区实例。通过创建两个作业以及与分区问题中的元素数量一样多的工作程序,可以轻松地将其转换为您的问题。每个工作的评级等于分区问题中相应元素的值。当且仅当分区问题有解决方案时,您的问题才有解决方案,从而证明您的问题是NP难的。
答案 1 :(得分:0)
如果我们考虑Subset Sum,我认为我们也可以提出一个问题,即问题至少和NP-Complete一样难。
将其转化为此决策问题:
给定一个评级为N的作业,其值在所有实数的集合中,并且M个评级为R i 的作业为[0,M]中的i,其中每个评级在集合中在所有实数中,是否有一部分工人的评级加起来为N?
在我们的案例中,我们可能将问题限制为正整数,但决策问题仍然存在,实际上更难,因为我们也有很多工作,我们希望最大化完成的工作数量。