アルゴリズムイントロダクション輪講 #3 が終わりました

今回は第1回インターンid:tarao (ダイアリー書いてない (´;ω;`)) さんの担当、5章の確率論的解析と乱択アルゴリズムでした。前章までは各アルゴリズムの最悪の時間計算量を考えていましたが、現実には最悪の場合の入力ばかりがやってくるのではなく、典型的・平均的な場合の時間計算量を求めたいこともあります。確率論的解析がこういう時に必要になるようです。また、その時指標確率変数というのを用いると計算が楽になる (ことが多い) ということです。
今回は輪講中に、いくつか練習問題にも触れました。

5.1-3

偏ったコインを用いて 0,1 をそれぞれ 1/2 の確率で出力するアルゴリズムを作るには? → 2回振って (表、裏) か (裏、表) と出たらそれぞれ 0, 1 を返し、そうでなければやり直し、を繰り返す。

5.3-2

恒等置換以外の任意の置換をランダムに生成するアルゴリズム? → 1つでも位置が変わらない要素があるような置換も生成されないからダメ。

5.3-3

要素 A[i] の交換を A[i..n] とじゃなくて A[1..n] とにしたら? → (たぶん) 先頭のほうの要素ほど交換されやすくなる為一様にならないのではないか?

次回から具体的なアルゴリズムに入り、6章はヒープソートです。次は数式が少なくなりそうです。