この O(n!) スケジューラの問題があるとします。
- 期間が異なる 10 個のタスクがあり、週 5 日間にスケジュールを設定したい
- 毎日 8 時間の作業時間があり、15 分に分けられます。スロット (1 日 = 8 時間 = 32 スロット)
- タスクには、「許可される日と時間の範囲」に関して異なる要件があります (たとえば、あるタスクは木曜日の午前 8 時から午前 9 時までの間のみ許可され、別のタスクは月曜日、火曜日、水曜日の午前 10 時から午前 11 時までのみ許可されます)。
要求された結果: 後で追加/他のタスクを割り当てるために利用可能な「連続した空きスロット」ができるだけ多くある必要があります
現在の解決策: BFS/DFS ソリューションを介して可能なすべてのスロットを結合しようとしましたが、その後、タスクと「空きスロットの最大のチャンク」を重複させずに最適な組み合わせを見つけました。このソリューションは、O(n!) の複雑さのために、パフォーマンスおよび/またはメモリに関して私を殺します。
質問: 限られた時間内にこの問題を解決するために、コンピュータ サイエンスが提供しなければならない (または、以前にこのような問題を解決した可能性がある) 最も「合理的な」アプローチは何ですか。