Algorithm 我的贪婪算法有缺陷吗?

Algorithm 我的贪婪算法有缺陷吗?,algorithm,logic,greedy,proof,Algorithm,Logic,Greedy,Proof,我只是想知道你是否能看到我提出的贪婪算法在解决这个问题时有什么缺陷或问题。问题是: 他们是一群雇员 每个员工都有一个工作班次,即一周中的一段时间间隔。员工的班次有重叠的可能 一部分员工组成一个监督小组 监督小组有一个属性,即每个员工轮班的每一刻都有一名主管在工作 目标是产生一个规模尽可能小的监督小组 现在,我的贪婪算法来解决这个问题。 假设有一份员工名单: While(there are employee's who aren't supervisors and are not remo

我只是想知道你是否能看到我提出的贪婪算法在解决这个问题时有什么缺陷或问题。问题是:

  • 他们是一群雇员
  • 每个员工都有一个工作班次,即一周中的一段时间间隔。员工的班次有重叠的可能
  • 一部分员工组成一个监督小组
  • 监督小组有一个属性,即每个员工轮班的每一刻都有一名主管在工作
目标是产生一个规模尽可能小的监督小组

现在,我的贪婪算法来解决这个问题。 假设有一份员工名单:

  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
这样行吗?这真的会让最少的监管者返回吗?我不确定这是不是最好的方法


多亏了

每个员工只工作一个班次,很容易证明贪婪策略产生了一个最优解

让我们假设您的算法没有生成最优解。这意味着存在一名员工
E0
,该员工可以替换至少两名员工
E1
E2
,这两名员工被分配为两个背靠背间隔的主管。这意味着
E0
的移位至少早于
E1
s开始,晚于
E2
结束。然而,如果这是真的,那么贪婪的算法会选择
E0
而不是
E1
作为监管者,这是一个矛盾。这意味着您的算法可以找到问题的最佳解决方案