我只是想知道您是否可以看到我为解决此问题而提出的贪婪算法的任何缺陷或问题。问题是:
- 他们是一组员工
- 每个员工都有一个工作班次,这是一周中的一个时间间隔。员工的轮班有重叠的可能性。
- 一部分员工组成一个监督组。
- 监督组有一个属性,即在每个员工轮班的每一刻,都有一名主管在工作。
目标是产生一个规模尽可能小的监督组。
现在,我的贪心算法来解决这个问题。假设有一个员工列表:
While(there are employee's who aren't supervisors and are not removed )
Choose first employee working with longest work shift to be supervisor.
Remove any employee whos finish time is less than the current supervisor finish time.
If(supervisor shift is ending)
Turn employee whos shift interests with supervisor shift,
with longest work time remaining into a supervisor as well.
end if
End while
return list of supervisors
这行得通吗?这实际上会返回尽可能少的主管群体吗?我不确定这是否是最好的方法。
谢谢