创建职责清单

时间:2014-09-27 15:49:32

标签: algorithm

假设我有一份工人名单和一份日常工作清单,我想为下个月生成一张工作人员,并指派工作人员,但我必须确保它是“合法的”,意思是:< / p>

  • 工人每天不能超过一个职责。
  • 如果没有在最后一次工作之间休息两天,工人就无法履行职责(如果我在周日清理主办公室,我不会在星期一和星期二做任何职责。
  • 只有管理人员才能履行职责(虽然管理人员也可以做其他任务,但也有一些只有他们才能做到)。

我知道这不是一个简单的问题,但我正在寻找关于如何处理这类问题的一些指导。

1 个答案:

答案 0 :(得分:0)

如果每天都需要履行相同的职责,问题就相对简单了。您只需要计算三天的时间表,然后根据需要重复。周日清理总部的人也会在周三,周六和下周二的周二清理它。

要构建三天时间表,首先将每个职责转换为三个任务,分别为第0天,第1天和第2天。使用Bipartite Matching将不同的人与每个任务相关联。图形将为每个人和每个任务提供一个顶点。每个人都将通过边缘连接到任何人都可以完成的每项任务。每个经理也对每个经理任务都有优势。

如果该问题没有包含每个任务边缘的解决方案,则原始问题的前三天没有解决方案。