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

アルゴリズムと計算量の問題

難易度 1教科書の例題レベル大学数学 アルゴリズムと計算量

互いに異なる 個の実数を並べた配列 を、次のバブルソートで昇順に並べかえる。

の順に、 の順で と を比べ、 ならば と を交換する。

最初の並びは、 個の数の 通りの並べ方のどれもが同様に確からしいとする。このソートで行われる交換の回数の期待値を求めよ。

この問題で使うもの

この問題を解けるようになるまで(30 技能)

ヒント

行き詰まったら、上から順に 1 つずつ開いてください。

ヒント 1

技能「ソートの平均比較回数と転倒数」を使います。隣り合う 個の交換で転倒数がどう変わるかを考え、交換回数を転倒数で表しましょう。

ヒント 2

回の交換で転倒数はちょうど 減ります。ランダムな並びの転倒数の期待値は です。

ヒント 3

交換回数は転倒数 に等しくなります。各組 が転倒になる確率は で、組は 個あります。

答えと解説

答えを見る
結果を記録する(このブラウザにだけ保存されます):
解説を読む

手順 1:交換回数を転倒数で表す。

かつ となる位置の組 を転倒といい、その個数を転倒数という。

隣り合う を交換すると、この 個の大小の順だけが入れかわり、ほかの組の大小の順は変わらない。したがって、 回の交換で転倒数はちょうど 減る。ソートが終わると昇順になるので、転倒数は である。

よって、交換回数は最初の並びの転倒数 に等しい。

手順 2:転倒数の期待値を求める。

の各組について、 のとき 、そうでないとき をとる指示変数 を考えると、

である。

と の値を入れかえる対応は、 となる並びと となる並びを 対 に対応させる。したがって、

である。

期待値の線形性( どうしが独立でなくても成り立つ)を使うと、

となる。

これは公式 に を代入した値 と一致する。

したがって、交換回数の期待値は である。

別解

バブルソートで行われる交換は、隣り合う要素の逆順対を1つ解消するので、交換の総回数は初期配列の転倒数(i<j かつ A[i]>A[j] となる対の個数)に等しい。

各対 (i,j)(i<j)について、A[i]>A[j] となる確率は、数がすべて異なり並べ方が同様に確からしいので 1/2 である。対の個数は なので、期待値は線形性より 。

検算:n=2 のとき期待値は 1/2 で、実際 (1,2) は交換0回、(2,1) は交換1回なので平均 1/2 となり一致する。また n=3 のとき 3/2 となる。転倒数は 0,1,1,2,2,3 で合計 9、平均 9/6=3/2 となり一致する。

答え:

この問題の確認

AI が作成した問題です。公開前に次の確認を行いました。確認の方法について

間違いを報告する

この問題の誤り・分かりにくい点・難易度や学年のずれを知らせる
どこについての報告ですか

報告の内容と問題の番号を保存します。名前やメールアドレスは保存しません。

関連する問題