アルゴリズムと計算量の問題
ある天文台には天体望遠鏡が 台しかなく、 件の観測希望(番号 〜)が出ている。観測希望 は時刻 に始まり時刻 に終わり、半開区間 ( 以上 未満)の間、望遠鏡を使う。時刻は整数で表し、ある観測の終了時刻と別の観測の開始時刻が等しい場合は、両方とも行うことができる。
| 観測希望 | |||||||
|---|---|---|---|---|---|---|---|
| 開始時刻 | |||||||
| 終了時刻 |
次の貪欲法で、互いに時間が重ならない観測希望を選ぶ。
「観測希望を終了時刻 の早い順に並べ、先頭から順に見ていく。その観測希望の開始時刻が、すでに選んだ観測希望のうち最後に選んだものの終了時刻以上であれば(最初の 件は無条件に)選び、そうでなければ選ばない。」
この貪欲法によって選ばれる観測希望の番号の集合を求めよ。
この問題で使うもの
- 区間スケジューリングの貪欲法(説明と入口の問題)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
区間スケジューリングの貪欲法を使います。まず 件を終了時刻 の早い順に並べ替えましょう。
ヒント 2
並べた順に見て、「開始時刻 最後に選んだ観測の終了時刻」なら選びます。等号のときも選べることに注意しましょう。
ヒント 3
終了時刻の早い順は です。最初に観測 (終了時刻 )を選ぶと、観測 と観測 は開始時刻が より前なので選ばれません。この続きを調べましょう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
手順 1:終了時刻の早い順に並べる。
終了時刻は なので、並べる順は
である(終了時刻はすべて異なるので、並べ方は一通りに決まる)。
手順 2:先頭から順に、重ならなければ選ぶ。 最後に選んだ観測の終了時刻を とする。
- 観測 :最初の 件なので選ぶ。。
- 観測 : なので重なる。選ばない。
- 観測 : なので重なる。選ばない。
- 観測 : なので選ぶ。。
- 観測 : なので重なる。選ばない。
- 観測 : なので選ぶ。。
- 観測 : なので重なる。選ばない。
手順 3:結果。 選ばれた観測希望は の 件で、 は互いに重ならない(観測 の終了時刻 と観測 の開始時刻 が等しいが、半開区間なので重ならない)。
よって求める集合は である。
別解
各観測希望の区間は 1:[0,6), 2:[7,11), 3:[1,4), 4:[6,8), 5:[4,7), 6:[3,5), 7:[9,10) である。
終了時刻の早い順に並べると 3(4), 6(5), 1(6), 5(7), 4(8), 7(10), 2(11) となる。終了時刻はすべて異なるので、並べ方は一通りに決まる。
先頭から順に見ていく。
- 3: 最初の1件なので選ぶ。最後に選んだものの終了時刻は 4。
- 6: 開始 3 < 4 なので選ばない。
- 1: 開始 0 < 4 なので選ばない。
- 5: 開始 4 ≥ 4 なので選ぶ。終了時刻は 7。
- 4: 開始 6 < 7 なので選ばない。
- 7: 開始 9 ≥ 7 なので選ぶ。終了時刻は 10。
- 2: 開始 7 < 10 なので選ばない。
選ばれるのは {3,5,7}。
確認として、[1,4), [4,7), [9,10) は互いに重ならない。
また、3件より多く選べるかを考える。時刻 4〜5 付近の区間 3, 6, 1, 5 のうち、重ならない組は高々2件で、区間 2, 4, 7 を含めても最大は3件になる。したがって3件は最大である。