技能一覧 › 大学数学 アルゴリズムと計算量

ソートの平均比較回数と転倒数

ランダムな並びの転倒数の期待値 などを使い、挿入ソートなどの比較回数の期待値を求められる

前提

この技能までの道筋(29 技能)
算数中学高校大学大学院

読み込み中…

右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。

一覧で見る(前提が先)
  1. 分数のたし算・ひき算 (算数 計算と数のきまり)
  2. 小数の四則計算 (算数 計算と数のきまり)
  3. 正負の数の加法・減法 (中学数学 数と式)
  4. 分数のかけ算・わり算 (算数 計算と数のきまり)
  5. 四則の混じった計算の順序 (算数 計算と数のきまり)
  6. 正負の数の乗除・累乗と四則混合 (中学数学 数と式)
  7. 約数の見つけ方 (算数 整数の性質)
  8. 素因数分解と約数の個数 (算数 整数の性質)
  9. 平方根の意味と根号の簡単化 (中学数学 数と式)
  10. 根号の乗除と加減 (中学数学 数と式)
  11. 指数の拡張と指数関数 (数学II 指数関数と対数関数)
  12. 対数の定義と性質 (数学II 指数関数と対数関数)
  13. 樹形図で数え上げる (算数 場合の数)
  14. 積の法則と和の法則 (算数 場合の数)
  15. 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
  16. 順列・円順列・重複順列 (数学A 場合の数と確率)
  17. ソート・探索の最悪比較回数 (大学数学 アルゴリズムと計算量)
  18. 組合せ (数学A 場合の数と確率)
  19. 確率の定義と和事象・余事象 (数学A 場合の数と確率)
  20. 期待値 (数学A 場合の数と確率)
  21. 確率変数と確率分布 (数学B 統計的な推測)
  22. 平均と合計 (算数 いろいろな文章題)
  23. 平均値・中央値・最頻値 (中学数学 データの活用)
  24. 代表値(平均値・中央値・最頻値) (数学I データの分析)
  25. 分散と標準偏差 (数学I データの分析)
  26. 変量の変換と平均・分散 (数学I データの分析)
  27. 確率変数の期待値・分散と (数学B 統計的な推測)
  28. 確率変数の和と積(独立な場合) (数学B 統計的な推測)
  29. 指示変数と期待値の線形性 (大学数学 アルゴリズムと計算量)

説明

並びの中で「大小の順序が逆になっている 2 つの組」を転倒(反転)といい、その個数を転倒数といいます。挿入ソートやバブルソートのように隣どうしを入れ替えて並べる方法では、入れ替えの回数が転倒数とぴったり一致し、比較回数も転倒数を使って表せます。ランダムな並びの転倒数の期待値 を指示変数で求めれば、これらのソートの平均的な手間を正確に計算できます。

なぜそうしてよいのか

相異なる 個の数の並び で、 かつ となる位置の組 を転倒といいます。すべて昇順なら転倒数は 、すべて降順なら最大の です。挿入ソートで要素 を左へ送るとき、 が追い越す要素は「 より左にあって より大きい要素」、つまり が右側を担う転倒とちょうど 1 対 1 に対応します。1 回追い越すごとに転倒がちょうど 1 つ解消され、他の組の前後関係は変わりません。したがって、ずらし(隣どうしの入れ替え)の総回数は転倒数そのものです。

通りの並びが等確率で現れるとします。位置の組 を 1 つ固定し、事象「」の指示変数を とします。ある並びの 番目と 番目の値を入れ替えると別の並びが得られ、この対応は「その組が転倒している並び」と「転倒していない並び」の間の 1 対 1 対応になります。よって です。転倒数は と書けるので、期待値の線形性から となります。 どうしは独立ではありませんが、期待値の線形性は独立性がなくても成り立ちます。

比較回数は、ずらし回数とは少しずれます。 を挿入するとき、大きい要素を追い越すたびに 1 回比較し、さらに「自分より小さい要素に出会って止まる」ための比較が 1 回加わります。ただし先頭まで行き着いた場合は、止まるための比較がありません。先頭まで行くのは、 が の中で最小のときです。最小値が 個の位置のどこにあるかは対称なので、その確率は です。以上から、比較回数の期待値は転倒数の期待値に補正を加えて求められます。

手順

  1. 数えたい量(入れ替え回数・比較回数など)が転倒数とどう結びつくかを確かめる。隣どうしの入れ替え 1 回で転倒数はちょうど 1 減るので、入れ替え回数 転倒数 となる。

  2. 転倒数を指示変数に分ける:。対称性から なので、。

  3. 比較回数を「転倒数 + 補正」の形で表す。挿入ソートでは、 番目の挿入()の比較回数は、 が先頭まで行けば(左の大きい要素の個数)、そうでなければ(左の大きい要素の個数)。よって比較回数 は と書ける。ここで は「 が の最小値」となる ()の個数。

  4. 補正の項も指示変数で期待値を出す: が最初の 個の最小値 より、。ここで とする。

  5. 線形性で足し合わせる:。最後に具体的な を代入する。

例題

相異なる 4 個の数を並べた列で、 通りの並びが等確率で現れるとする。これを次の挿入ソートで昇順に並べる。 の順に、 を取り出して左隣の要素から順に左へ向かって比較する。比較した要素が より大きければそれを 1 つ右へずらして比較を続け、 より小さい要素に出会うか左端に達したら、その位置に を置く。このとき、要素どうしの比較回数の期待値を求めよ。

例題の解答

【手順 1】 を挿入するとき、左にあって より大きい要素は 1 つずつ追い越されます。その個数は、 が右側になっている転倒の個数です。 について足し合わせると、ずらしの総数は転倒数 になります。

【手順 2】、 なので、。

【手順 3】各挿入では、追い越すときの比較に加えて、止まるための比較が 1 回あります。ただし左端に達したときはその 1 回がありません。左端に達する回数を とすると、比較回数は です(挿入は の 3 回)。

【手順 4】 が左端に達するのは、 が の最小値のときで、その確率は です。よって 。

【手順 5】。

(確認) 番目の挿入だけを見ると、比較回数の期待値は です。これを使うと となり、一致します。

答え:

よくある誤り

この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。

入口の問題

この技能を使う問題