アルゴリズムと計算量の問題
互いに異なる 個の実数を並べた配列 から、最大値と最小値の両方を次のアルゴリズムで求める。
- 最初に 、 とする。
- の順に、次の操作を行う。
- まず と を比較する。 であれば とし、この についての操作を終える。
- そうでなければ、 と を比較し、 であれば とする。
個の数の並び方は 通りすべてが等確率 で起こるとする。このアルゴリズムで行われる要素どうしの比較の回数の期待値を求めよ。
この問題で使うもの
- 指示変数と期待値の線形性(説明と入口の問題)
この問題を解けるようになるまで(16 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
各 について、 との比較は必ず行われ、 との比較は「 が を更新しなかったとき」だけ行われます。比較回数を指示変数で表しましょう。
ヒント 2
となるのは、 が先頭 個 の中で最大のときです。並び方が等確率なら、その確率は です。
ヒント 3
比較回数を 、 が先頭 個の最大であるときに となる指示変数を とすると、 と表せます。あとは期待値の線形性を使います。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
各 について、 との比較は必ず 回行われる。 との比較は、 でなかったときだけ行われる。
番目の操作の直前には なので、 となるのは、 が の中で最大であるときである。この事象を とし、その指示変数を ( が起これば 、起こらなければ )とおく。
比較回数 は
と表せる。
並び方が等確率なので、先頭 個 のうちどれが最大であるかも等確率であり、
期待値の線形性より
ここで
なので、
(参考: 最悪の場合は が最大のときで 回、最良の場合は昇順に並んでいるときで 回である。)
別解
各 について、 と の比較が必ず 回行われる。 でなかった場合に限り、 と の比較がもう 回行われる。
の時点で である。要素が互いに異なり並びが一様ランダムなので、 が の中の最大である確率は 。したがって となる確率は 、そうでない確率は 。
番目の操作での比較回数の期待値は 。期待値の線形性より
検算: 比較回数は最小 ( が昇順のとき、毎回 との比較のみ)、最大 ( が最大のとき)で、 はこの範囲にある。 の場合に同じ式を使うと で、 通り(昇順なら 回、降順なら 回)の平均 と一致する。