我只是想知道你是否能看到我的Greedy算法存在任何缺陷或问题,我已经提出来解决这个问题。问题是:
目标是建立一个规模尽可能小的监督小组。
现在,我的贪心算法解决了这个问题。 假设有一份员工名单:
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
这会有用吗?这实际上会使最小的监督者群体回归吗?我不确定这是否是最佳方式。
由于
答案 0 :(得分:3)
每个员工只完成一个班次,很容易证明贪婪策略能够产生最佳解决方案。
让我们假装您的算法不会产生最佳解决方案。这意味着,有一名员工E0
可以替换至少两名员工E1
和E2
,这两名员工被分配了两个背靠背间隔的主管。这意味着E0
的转变至少早于E1
s开始,并以E2
的晚或晚结束。但是,如果这是真的,那么你的贪婪算法会选择E0
超过E1
作为主管,这是一个矛盾。这意味着您的算法找到了问题的最佳解决方案。