この問題を解決するために思いついた欲張りアルゴリズムに欠陥や問題が見られるかどうか疑問に思っていました。問題は:
- 彼らは一組の従業員です
- 各従業員には、1週間の1つの時間間隔である1つの勤務シフトがあります。従業員のシフトは重複する可能性があります。
- 従業員のサブセットが監督グループを形成します。
- 監督グループには、すべての従業員のシフトのあらゆる瞬間に、上司も働いているという特性があります。
目標は、可能な限り小さいサイズの監督グループを作成することです。
さて、これを解決するための欲張りアルゴリズム。従業員のリストがあると仮定します。
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
これは機能しますか?そして、これは実際に可能な限り最小の監督者グループを返すのでしょうか?これがこれを行うための最良の方法であるかどうかはわかりません。
ありがとう