アルゴリズムと計算量の問題
互いに異なる 個の実数を並べた配列 の最大値と最小値を、次のアルゴリズムで同時に求める。
- 最初に , とする。
- の順に、次の操作を行う。
- まず と を比較する。 ならば とし、この についての操作を終える( とは比較しない)。
- ならば、続けて と を比較する。 ならば とする。
配列の並び方は 通りのどれも同様に確からしいとする。このアルゴリズムで行われる要素どうしの比較( と の比較、 と の比較)の回数の期待値を求めよ。
この問題で使うもの
- 指示変数と期待値の線形性(説明と入口の問題)
この問題を解けるようになるまで(16 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
比較の総回数を、各 の操作での比較回数 の和に分け、期待値の線形性を使いましょう。
ヒント 2
番目の操作で比較が 回で済むのは、 が の中で最大のときです。その確率は何でしょうか。
ヒント 3
より です。これを で足し合わせます。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
各 ()について、 番目の操作で行われる比較の回数を とする。 と の比較は必ず 回行われ、 と の比較は のときだけ行われる。よって
である。
番目の操作を始める時点で は の最大値である。したがって となるのは、 が の 個の中で最大であるときに限る。並び方がすべて同様に確からしいので、この 個のうちどれが最大であるかも同様に確からしく、
となる。よって
比較の総回数は であり、期待値の線形性より
ここで、分母を にそろえると
したがって
(約 回。最悪の場合の 回より少し少ない。)
別解
各 について、 と の比較は必ず 回行われる。このとき は の最大値である。
となるのは、 が の中で最大のときである。配列は一様ランダムで要素は互いに異なるので、その確率は である。
それ以外(確率 )のときは、 との比較がさらに 回行われる。
したがって 番目の操作での比較回数の期待値は である。
期待値の線形性より、全体の期待値は
。
ここで である。
よって となる。
検算: 。一方 で一致する。