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

乱択クイックソート・乱択選択の期待比較回数

ピボットの選び方で場合分けして期待比較回数の漸化式を立て(全期待値の公式)、乱択クイックソート・乱択クイックセレクトの比較回数の期待値を小さい で求められる

前提

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

読み込み中…

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

一覧で見る(前提が先)
  1. 樹形図で数え上げる (算数 場合の数)
  2. 積の法則と和の法則 (算数 場合の数)
  3. 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
  4. 順列・円順列・重複順列 (数学A 場合の数と確率)
  5. 組合せ (数学A 場合の数と確率)
  6. 確率の定義と和事象・余事象 (数学A 場合の数と確率)
  7. 期待値 (数学A 場合の数と確率)
  8. 確率変数と確率分布 (数学B 統計的な推測)
  9. 平均と合計 (算数 いろいろな文章題)
  10. 平均値・中央値・最頻値 (中学数学 データの活用)
  11. 代表値(平均値・中央値・最頻値) (数学I データの分析)
  12. 分散と標準偏差 (数学I データの分析)
  13. 変量の変換と平均・分散 (数学I データの分析)
  14. 確率変数の期待値・分散と (数学B 統計的な推測)
  15. 確率変数の和と積(独立な場合) (数学B 統計的な推測)
  16. 指示変数と期待値の線形性 (大学数学 アルゴリズムと計算量)
  17. 分数のたし算・ひき算 (算数 計算と数のきまり)
  18. 小数の四則計算 (算数 計算と数のきまり)
  19. 正負の数の加法・減法 (中学数学 数と式)
  20. 分数のかけ算・わり算 (算数 計算と数のきまり)
  21. 四則の混じった計算の順序 (算数 計算と数のきまり)
  22. 正負の数の乗除・累乗と四則混合 (中学数学 数と式)
  23. 分配法則を使った計算のくふう (算数 計算と数のきまり)
  24. 文字式の計算(同類項・分配法則) (中学数学 数と式)
  25. 乗法公式による展開 (中学数学 数と式)
  26. 因数分解 (中学数学 数と式)
  27. 3 次式までの展開と因数分解 (数学I 数と式)
  28. 微分係数と導関数の定義 (数学II 微分法と積分法)
  29. 多項式の微分 (数学II 微分法と積分法)
  30. 多項式の不定積分 (数学II 微分法と積分法)
  31. 等間隔にならんだ数の和 (算数 計算と数のきまり)
  32. 等差・等比数列の和と Σ (数学B 数列)
  33. 数列の極限 (数学III 極限)
  34. 関数の極限 (数学III 極限)
  35. 積と商の微分 (数学III 微分法)
  36. 合成関数の微分 (数学III 微分法)
  37. 円の周の長さと面積 (算数 平面図形)
  38. おうぎ形の弧の長さと面積 (算数 平面図形)
  39. 弧の長さからおうぎ形の中心角と面積を求める (中学数学 平面図形)
  40. 三角形・四角形の面積 (算数 平面図形)
  41. 約数の見つけ方 (算数 整数の性質)
  42. 素因数分解と約数の個数 (算数 整数の性質)
  43. 平方根の意味と根号の簡単化 (中学数学 数と式)
  44. 三平方の定理 (中学数学 相似と三平方の定理)
  45. 特別な直角三角形の辺の比 (中学数学 相似と三平方の定理)
  46. 弧度法と単位円による三角関数 (数学II 三角関数)
  47. の極限 (数学III 極限)
  48. 加法定理と 2 倍角・半角・積和の公式 (数学II 三角関数)
  49. 三角関数の導関数 (数学III 微分法)
  50. 根号の乗除と加減 (中学数学 数と式)
  51. 指数の拡張と指数関数 (数学II 指数関数と対数関数)
  52. 対数の定義と性質 (数学II 指数関数と対数関数)
  53. 自然対数の底 (数学III 極限)
  54. 指数関数・対数関数の導関数 (数学III 微分法)
  55. 基本的な関数の不定積分 (数学III 積分法)
  56. 置換積分 (数学III 積分法)
  57. 部分積分 (数学III 積分法)
  58. 定積分の計算 (数学II 微分法と積分法)
  59. 定積分の置換・部分積分と偶関数・奇関数 (数学III 積分法)
  60. 重積分と累次積分 (大学数学 微分積分)
  61. 同時分布・周辺分布と独立性 (大学数学 確率・統計)
  62. 条件付き確率と乗法定理 (数学A 場合の数と確率)
  63. 条件付き分布と全期待値の公式 (大学数学 確率・統計)

説明

要素がすべて異なる長さ の列を、ピボット(基準の要素)を一様ランダムに選んで分割する乱択クイックソートや乱択クイックセレクト( 番目に小さい要素を探す方法)について、要素どうしの比較回数の期待値を求めます。方法は、「ピボットが何番目に小さい要素だったか」で場合分けすることです。こうすると、期待値の漸化式が全期待値の公式から立ちます。あとは と小さい順に計算すれば、具体的な期待値が分数で正確に求まります。アルゴリズムの平均的な速さを確かめるときや、実験値と理論値を比べるときに使います。

なぜそうしてよいのか

長さ の列で、ピボットを 個の要素から等確率 で選ぶとします。ピボットが小さい方から 番目の要素であることを「ピボットの順位が 」と書きます。分割では、ピボットを残りの 個それぞれと 1 回ずつ比べます。これで比較はちょうど 回です。その結果、列は「ピボットより小さい 個」と「大きい 個」に分かれ、それぞれについて同じ手続きをくり返します。この先のピボットも新しく一様ランダムに選ばれます。そのため、 個の異なる要素からなる部分列での比較回数の分布は、要素の値や並び順によらず個数 だけで決まります。そこで、その期待値を と書くことができ、 となります。

全期待値の公式 を使い、 の各値に確率 を掛けて足すと です。 が から まで動くとき、 も もちょうど を 1 回ずつとります。よって となります。右辺には より小さい添字だけが現れるので、小さい から順に計算できます。クイックセレクトでは、目標の要素を含む片側だけで手続きを続けます。ピボットがちょうど目標なら、そこで終わります。したがって、部分問題の期待値は 1 つだけ足されます。

答えの検算には指示変数も使えます。小さい方から 番目と 番目()の要素が比べられるのは、順位が 以上 以下の 個のうち、最初にピボットに選ばれるのが 番目か 番目の要素のときに限られます。その確率は です。期待値の線形性から、これらの確率をすべての組 について足したものも比較回数の期待値になります。たとえば では となり、漸化式の値と一致します。

手順

  1. 比較回数の数え方を確認する:要素はすべて異なるとする。分割 1 回で、ピボットと残りの要素をそれぞれ 1 回ずつ比べるので 回。要素が 0 個か 1 個のときは比較しない。

  2. ピボットの順位 (, )で場合分けし、条件付き期待値を書く。クイックソートでは となる。

  3. 全期待値の公式で平均する。クイックソートでは ()となる。

  4. クイックセレクトの場合: 番目に小さい要素を探すときの期待比較回数を とおく。 なら、その場で終わる。 なら左側の 個で 番目を探し、 なら右側の 個で 番目を探す。式にすると 、 となる。

  5. 初期値から小さい順に漸化式へ代入し、求めたい まで計算する。必要なら指示変数の和で検算する。

例題

互いに異なる 4 個の数からなる列を乱択クイックソートで整列する。各段階で、その部分列からピボットを一様ランダムに選び、残りの要素すべてと 1 回ずつ比較して分割する。要素が 1 個以下の部分列では比較しない。比較回数の期待値を求めよ。

例題の解答

手順 1: 個の場合の期待比較回数を とおく。比較が起こらないので である。

手順 2・3:ピボットの順位で場合分けし、全期待値の公式で平均すると が得られる。

手順 5:小さい順に計算する。
- :。
- :。
- :。

検算:組 が比べられる確率は である。 の組は 3 つで確率は各 、 の組は 2 つで各 、 の組は 1 つで 。合計は となり、漸化式の値と一致する。

答え:

よくある誤り

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

入口の問題

この技能を使う問題