アルゴリズムと計算量の問題
互いに異なる 個の実数からなる集合を、次の乱択クイックソートで昇順に並べかえる。
- 大きさ 以上の集合 を処理するときは、 の要素から 個をピボット として等確率で選ぶ。 を のほかのすべての要素とそれぞれちょうど 回ずつ比較し、 を より小さい要素の集合 と より大きい要素の集合 に分ける。そのあと、 と をそれぞれ同じ方法で処理する。
- 大きさ または の集合を処理するときは、何もしない(比較を行わない)。
ピボットの選択はそれぞれ独立に行うものとする。最初の集合 個全体を処理し始めてから終わるまでに行われる比較のうち、小さい方から 番目の要素がかかわる比較の回数の期待値を求めよ。
この問題で使うもの
- 指示変数と期待値の線形性(説明と入口の問題)
この問題を解けるようになるまで(16 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
と各要素 が比較されるかどうかを表す指示確率変数の和に分けて、期待値の線形性を使おう。
ヒント 2
小さい順に とする。 と ()が比較されるのは、 の中で最初にピボットに選ばれたのが か のときに限る。
ヒント 3
と が比較される確率は 。求める期待値は である。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
個の要素を小さい順に とする。求めるのは がかかわる比較の回数の期待値である。
つの要素が比較される条件 比較はピボットとほかの要素の間でしか行われず、ピボットに選ばれた要素はその後の部分集合に入らないので、同じ 要素が 回以上比較されることはない。
とし、 とおく。 の要素は、 の中から初めてピボットが選ばれるまでは、つねに同じ集合に入っている(それまでのピボットはすべて より小さいか より大きいので、 を分けない)。 の中から最初に選ばれたピボットを とすると、
- または ならば、 と はこのとき比較される。
- ならば、 は に、 は に分かれ、以後比較されることはない。
ピボットは集合の要素から等確率で選ばれるので、 の 個の要素のどれが最初のピボットになるかも等確率である。よって
期待値の計算 と ()が比較されるとき 、されないとき をとる確率変数を とすると、 がかかわる比較の回数は である。期待値の線形性より
各項を計算すると
- :
- :
- :
- :
- :
- :
したがって
別解
小さい方から 番目の要素を とする。 と ()が比較されるのは、 の 個のうち最初にピボットに選ばれるものが か のときに限る(それ以前にその間の要素がピボットに選ばれると、 と は別々の集合に分かれ、以後比較されない。また一度比較されるのはちょうど 1 回)。最初にピボットになるのは、この 個の中から等確率なので、比較される確率は 。
3 番目の要素 がかかわる比較の回数の期待値は、指示確率変数の線形性より
: 、: 、: 、: 、: 、: 。
合計は 。
検算: 左側 、右側 。和は 。一致する。