我有一个问题困扰了我一段时间。
我们有“工人” w_0、w_1 ... w_n,以及任务 t_0、t_1、... t_m 和持续时间 D_ij,这样 w_i 可以在该小时数内完成 t_j。每个工人还有最多 m_0,m_1... m_n 可以工作的小时数。
多个工人可以按比例完成同一任务。例如,如果 D_11 = 2 和 D_21 = 4,那么工人 1 在任务 1 上的效率是工人 2 的两倍。所以你可以结合,例如 1 的 1 小时和 2 的 2 小时来完成任务。
我们如何确定可以完成所有任务的最少小时数。
我曾尝试使用贪心技术为每项任务选择最佳工人,但这不适用于每种情况。例如,工人 1 可以在 2 小时内完成任务 1,在 4 小时内完成任务 3。很明显,工人 1 将被选中从事任务 1,即使假设任务 3 对其他工人来说非常耗时,而工人 1 本来是完美的工作。
我曾考虑将问题简化为分配问题,但没有找到方法。
如何解决这个问题?