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

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

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

を 列に並べた配列 がある。並び方は 通りのどれも同様に確からしいとする。この配列を、次のバブルソートで昇順に並べかえる。

の順に、各 について の順に次の操作を行う: ならば と を入れかえ(交換し)、そうでなければ何もしない。

このバブルソートで行われる交換の回数の期待値を求めよ。

この問題で使うもの

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

ヒント

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

ヒント 1

「ソートの平均比較回数と転倒数」の技能を使う。隣どうしの交換 1 回で転倒数がどう変わるかを考えよう。

ヒント 2

隣り合う逆順の 2 つを入れかえると転倒数はちょうど 1 減るので、交換回数ははじめの転倒数に等しい。ランダムな並びの転倒数の期待値は 。

ヒント 3

位置の組 は 組あり、それぞれが転倒である確率は である。

答えと解説

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

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

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

手順 1:1 回の交換で転倒数はちょうど 1 減る。
隣り合う を入れかえると、この 2 つの組の転倒は解消される。ほかの要素との大小関係の前後は変わらない(ほかの要素から見ると、2 つの要素の位置が隣どうしで入れかわるだけである)ので、ほかの組の転倒の有無は変わらない。よって転倒数はちょうど 減る。

手順 2:交換回数 = はじめの転倒数。
バブルソートが終わると配列は昇順になり、転倒数は になる。交換以外の操作では配列は変わらないので、交換回数をはじめの転倒数を とすると、交換回数はちょうど である。

手順 3:転倒数の期待値を指示変数で求める。
位置の組 ()ごとに、転倒なら 、そうでなければ をとる指示変数 を考えると である。並び方は同様に確からしいので、 と は対称で、それぞれ確率 。よって期待値の線形性から

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

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

別解

バブルソートは隣接する要素が逆順のときだけ交換する。1回の交換で転倒数( かつ となる組の数)はちょうど1減る。整列後の転倒数は0である。したがって、交換の回数は初期配列の転倒数に等しい。

与えられたアルゴリズムは のパスをすべて行う。バブルソートは パスで必ず整列が完了するので、交換の回数の合計は転倒数に一致する。

転倒数の期待値を求める。各組 ()について、 となる確率は対称性より である。組の数は なので、期待値は となる。

検算: のとき期待値は で、公式 と一致する。 では である。

この問題の確認

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

間違いを報告する

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

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

関連する問題