アルゴリズムと計算量の問題
互いに異なる 個の実数を並べた配列を、次のマージソートで昇順に並べかえる。
- 長さ の列はそのまま返す。
- 長さ の列は、前半の 個と後半の残り 個に分け、それぞれを再帰的に昇順に並べかえてから、次の手続きで併合する。
- 併合の手続き: 昇順に並んだ つの列 が与えられたとき、どちらも空でない間は、 の先頭と の先頭を 回比較し、小さい方を取り出して出力の末尾に加える。一方の列が空になったら、もう一方の列に残っている要素を、比較を行わずにそのまま順に出力の末尾に加える。
入力の 個の数の並び方は 通りすべてが等確率で現れるとする。このマージソート全体で行われる要素どうしの比較回数の期待値を求めよ。
この問題で使うもの
- ソートの平均比較回数と転倒数(説明と入口の問題)
- 指示変数と期待値の線形性(説明と入口の問題)
- ソート・探索の最悪比較回数(説明と入口の問題)
この問題を解けるようになるまで(30 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
- 分数のたし算・ひき算
- 小数の四則計算
- 正負の数の加法・減法
- 分数のかけ算・わり算
- 四則の混じった計算の順序
- 正負の数の乗除・累乗と四則混合
- 約数の見つけ方
- 素因数分解と約数の個数
- 平方根の意味と根号の簡単化
- 根号の乗除と加減
- 指数の拡張と指数関数
- 対数の定義と性質
- 樹形図で数え上げる
- 積の法則と和の法則
- 和の法則・積の法則と樹形図
- 順列・円順列・重複順列
- ソート・探索の最悪比較回数
- 組合せ
- 確率の定義と和事象・余事象
- 期待値
- 確率変数と確率分布
- 平均と合計
- 平均値・中央値・最頻値
- 代表値(平均値・中央値・最頻値)
- 分散と標準偏差
- 変量の変換と平均・分散
- 確率変数の期待値・分散と
- 確率変数の和と積(独立な場合)
- 指示変数と期待値の線形性
- ソートの平均比較回数と転倒数
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
再帰でどの長さどうしの併合が何回起こるかを書き出し、期待値の線形性で各併合の期待比較回数を足し合わせる。
ヒント 2
長さ と の併合の比較回数は ( は一方が空になったとき他方に残る要素数)。 の要素 が の全要素より大きい確率は である。
ヒント 3
併合は が 回、 が 回、 が 回。期待比較回数は で 、 で となる。残りは の場合を計算して合計する。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
再帰の構造 長さ の列は に分かれ、長さ の列はそれぞれ に、長さ の列は に分かれる。したがって行われる併合は
- 長さ と の併合が 回
- 長さ と の併合が 回
- 長さ と の併合が 回
である。期待値の線形性により、各併合の比較回数の期待値を足せばよい。
各併合の入力の分布 入力が一様にランダムな並びなので、ある併合に入る 個の要素について、そのうちどの値が前半側( 個)に入るかの選び方は 通りが等確率である。併合での比較の様子は、 個を大きさの順に並べたときにどの順位が前半側の要素かだけで決まる。
長さ と の併合の比較回数 一方の列が空になったとき、もう一方に残っている要素の個数を とすると、比較 回ごとに 個が出力されるので、比較回数は である。 が先に空になったとき に残るのは「 のすべての要素より大きい の要素」であり、 が先に空になる場合も同様である。よって
(片方の項は必ず )。 の特定の要素 が の 個すべてより大きい確率は、 と の 個の計 個の中で が最大になる確率で である。したがって
- :
- : (確認: 個の側の要素が 個中最小・中央・最大のとき比較回数は で平均 )
- :
合計
よって比較回数の期待値は である。
別解
入力は 通りが等確率なので、各部分列の相対順位は互いに独立で一様ランダムである。併合時の 列の相対順序も一様ランダムになる。長さ と の列を併合するとき、比較回数の期待値は である。これは、一方が空になった時点で他方に残る要素数の期待値を、全要素数から引いたものである。
- 長さ の列の整列は、 の併合なので 回。
- 長さ の列は に分かれる。長さ の整列に 回かかる。続く の併合は 回。直接数えても、長さ の要素が最小なら 回、それ以外なら 回なので平均 で一致する。よって長さ の整列は期待値 回。
- 長さ は に分かれる。前半・後半の整列に合計 回。続く の併合は 回。
合計は である。