アルゴリズムと計算量の問題
ある会議室を使いたい 件の予約希望があり、予約 ()は時刻 に始まり時刻 に終わる(区間 を使う)。
| 予約 | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| 開始 | |||||||||
| 終了 |
つの予約 は、 または のとき両立する(同時に採用できる)とする。次の貪欲法で、互いに両立する予約を選ぶ。
- 予約を終了時刻 の小さい順に並べる。
- その順に予約を つずつ調べ、それまでに選んだどの予約とも両立するならば選び、そうでなければ選ばない。
この貪欲法で選ばれる予約の番号 の集合を求めよ。
この問題で使うもの
- 区間スケジューリングの貪欲法(説明と入口の問題)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
まず 件の予約を終了時刻 の小さい順に並べかえましょう。
ヒント 2
終了時刻の順に選んでいくので、新しい予約が両立するかどうかは「開始時刻が、最後に選んだ予約の終了時刻以上か」だけで判定できます。
ヒント 3
最初に選ばれるのは終了時刻が最小の予約 で、次に開始時刻が 以上で最初に現れる予約 が選ばれます。続きを調べましょう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
終了時刻の小さい順に並べると(終了時刻はすべて異なるので順序は一意に決まる)
となる。
この順に調べると、選んだ予約はいつも終了時刻の小さい順に並ぶので、新しい予約 が選んだ予約すべてと両立するのは、 が最後に選んだ予約の終了時刻以上のときである。
- 予約 : まだ何も選んでいないので選ぶ。最後の終了時刻は 。
- 予約 : なので選ばない。
- 予約 : なので選ぶ。最後の終了時刻は 。
- 予約 : なので選ばない。
- 予約 : なので選ばない。
- 予約 : なので選ぶ。最後の終了時刻は 。
- 予約 : なので選ぶ。最後の終了時刻は 。
- 予約 : なので選ばない。
- 予約 : なので選ばない。
よって選ばれる予約は である(この貪欲法は、両立する予約の個数を最大にすることが知られている)。
別解
各予約の区間は 1:、2:、3:、4:、5:、6:、7:、8:、9:。
終了時刻の小さい順(終了時刻はすべて異なる)は、予約 2()、1()、3()、5()、4()、6()、8()、7()、9()。
順に調べる。
1. 予約 2 : 何も選んでいないので選ぶ。選択済み 。
2. 予約 1 : は偽、 も偽。両立しないので選ばない。
3. 予約 3 : 予約 2 と で両立。選ぶ。選択済み 。
4. 予約 5 : 予約 2 と で両立だが、予約 3 とは重なる。選ばない。
5. 予約 4 : 予約 3 と は偽、 も偽。選ばない。
6. 予約 6 : 予約 2 とは 、予約 3 とは で両立。選ぶ。選択済み 。
7. 予約 8 : 予約 6 と などで、選択済みすべてと両立。選ぶ。選択済み 。
8. 予約 7 : 予約 6 と重なる。選ばない。
9. 予約 9 : 予約 8 と重なる。選ばない。
検算: 選ばれた は互いに重ならない(、、)。選ばれなかった各予約は、選ばれたいずれかと重なっていることも上で確認した。
よって選ばれる予約の番号の集合は 。