假设我们有 N 个工作和 K 个工人来做这些工作。但是对于某些工作,我们需要 2 名员工,而对于某些工作,我们只需要一名。员工也不能做所有的工作。例如,工人 1 可以从事工作 1,2 和 5,而不能从事工作 3 和 4。此外,如果我们雇用工人 1 从事工作 1,那么我们希望他从事工作 2 和 5,因为我们已经支付了他的工资。
例如,假设我们有 5 个工作和 6 个工人。对于工作 1,2 和 4,我们需要 2 个男人,而对于工作 3 和 5,我们只需要一个。这是每个工人可以做的工作清单和他需要的工资。
Worker 1 can do jobs 1,3,5 and he requires 1000 dollars.
Worker 2 can do jobs 1,5 and he requires 2000 dollars.
Worker 3 can do jobs 1,2 and he requires 1500 dollars.
Worker 4 can do jobs 2,4 and he requires 2500 dollars.
Worker 5 can do jobs 4,5 and he requires 1500 dollars.
Worker 6 can do jobs 3,5 and he requires 1000 dollars.
经过一点计算和逻辑思考,我们可以得出结论,我们要雇用工人 1、3、4 和 5,这意味着我们需要支付的最低工资是:1000+1500+2500+1500=5500 美元。
但是我们怎样才能找到一个有效的算法来输出这个数量呢?这不知何故让我想起了匈牙利算法,但所有这些额外的约束让我无法应用它。