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

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

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

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

の順に、各 について の順に次の操作を行う: ならば と を交換する。

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

この問題で使うもの

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

ヒント

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

ヒント 1

「ソートの平均比較回数と転倒数」の技能を使う。隣り合う 2 つの交換で転倒数がどう変わるかを考え、交換回数を転倒数に言いかえよう。

ヒント 2

隣り合う転倒した 2 つを交換すると転倒数はちょうど 1 減るので、交換回数は入力の転倒数に等しい。ランダムな並びの転倒数の期待値は である。

ヒント 3

交換回数を とすると ( は の指示変数)で、各組について 。組の数は である。

答えと解説

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

方針:交換回数を転倒数に言いかえる。

配列の転倒数を、 かつ となる組 の個数とする。

(1) 1 回の交換で転倒数はちょうど 1 減る。
のとき隣どうしの 2 つを交換すると、この 2 つの組の大小関係だけが「転倒」から「転倒でない」に変わる。ほかの要素との位置関係(どちらが前か)は変わらないので、ほかの組の転倒の有無は変わらない。よって転倒数はちょうど 減る。

(2) 交換回数 = 入力の転倒数。
バブルソートが終わると配列は昇順になり、転倒数は になる。交換するたびに転倒数がちょうど ずつ減るので、交換回数を とすると、 は入力の転倒数に等しい。

(3) 転倒数の期待値を求める。
の各組について、 のとき 、そうでないとき をとる指示変数 を考えると

すべての並べ方が同様に確からしいので、 と を入れかえた並べ方を対応させると、 となる並べ方と となる並べ方は同数である。よって 。

組 の個数は なので、期待値の線形性より

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

答え:

別解

バブルソートで行われる交換は隣接要素の逆順対を1つ解消するたびに1回であり、各交換で転倒数はちょうど1減る。ソート完了時の転倒数は0なので、交換回数は初期配列の転倒数に等しい。

転倒数は、 かつ となる組の個数である。一様ランダムな順列では、各組 が転倒となる確率は である。組の総数は なので、期待値は線形性より となる。

検算: のとき期待値は で、公式 と一致する。 のとき転倒数は 0,1,1,2,2,3 で平均 となり、公式 と一致する。

答えは 。

この問題の確認

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

間違いを報告する

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

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

関連する問題