第1章
1.1 効率の必要性
大きなデータセット
- Googleの検索に8.5秒も必要、とされているのは注釈欄のコンピューターの速度が数ギガヘルツ(数十億回/秒)なのを 回/秒として、85億件のWebページをすべて見ようとすると(データセットの要素をすべて見るという前提はその前の段落に書いてある) 秒かかるということ
- 38250台のサーバーが必要、とされているのは一つのリクエストに8.5秒かかるという前提で複数サーバーで並列処理できた場合、一つのリクエストに1秒でレスポンスするには1/8.5台のサーバーが必要。秒間4500クエリ受け付けているので 台のサーバーが必要ということ
1.3 数学的背景
1.3.1 指数と対数
- 自然対数と二進対数との比較
1.3.2 階乗
- の近似値はその前で示されているスターリングの近似( )を使って
1.3.3 漸近記法
ビッグオー記法は今までなんとなく使っていたが正しい定義は初めて見た。 は集合を表していて、nがある程度より大きいときは定数倍しても常に より小さくなる関数の集合、というような意味合いだった。 はどんな関数でも構わないはずだが、アルゴリズムの世界でよく使われるのが (定数)、 、 、 などなのだろう。ある関数が に含まれるということは定数倍しても に満たなく、ある関数とはアルゴリズムの世界では例えば実行時間である。つまり実行時間を表す関数が に含まれるということは、最悪でも 内には実行完了するし、 に含まれる関数の間での実行時間の差は大きくても定数倍なので丸めて で同じ、といってしまって良いよね、ということである。
1.3.4 ランダム性と確率
- コインをk回投げたときの表が出る回数の期待値を期待値の定義を使って求めている。 は のようである。 二項係数の性質 も、 で表される。