今回、私は特集記事の第3章「アルゴリズム再入門 C#編」を書きました。
最初にお話を頂いたときには「Visual Basicを例に……」ということだったんですが、C#で書きました。
あ、でも、C#依存な部分はほとんど出してませんので、食わず嫌いしないでくださいね……MS技術がアウェイなのは重々承知していますけれども。
内容なんですが、
「アルゴリズム」を一言で言うと、仕事をやりとげるための作業手順を並べたものになります。本来は数学用語ですが、日常生活にもアルゴリズムを見つけることはできます。たとえば、インスタント焼きそばのアルゴリズムはこんな感じでしょう。
- お湯を沸かす
- ふたを開ける
- かやく袋とソース袋を取り出す
- かやくを乗せる
- 麺が浸るまでお湯を容器に注ぐ
- ふたをかぶせる
- 3分程度待つ
- ふたの湯切り口からお湯をすべて捨てる
- ふたを開ける
- ソースをかける
- かきまぜる
一つ一つの手順だけを取り出してみても役には立ちませんが、それらが組み合わさることで、私達は味がまろやかな焼きそばを食べることができるのです。(この「組み合わさって意味がある」ところをフィーチャーしたのが「ピタゴラスイッチ」の「アルゴリズムたいそう」なんでしょうね。)
……みたいな、勢いで書いた部分はカットしたんですが、それでも当初の目論見より大幅に長くなってしまいました。
もっと簡潔に、もっとうまく書けるように、精進します。
あと、書いてみたかった(というか、書いてみたけどやめた)のは、
- ハッシュ法 (これはデータ構造の章にあります。すばらしいです)
- 木の探索 (traversal)
- 平衡木 (AVLとか)
- その他の有名なソート (バブルソート、シェルソート、ヒープソート、etc)
- Skip List (これはどちらかと言うとデータ構造メインな話なのでためらった)
- BM法 (というかQuick Searchのほうが簡潔なのでそっち)
などなど。
あと、数学的なアルゴリズム話(エラトステネスのふるいとか、ニュートン法とか、モンテカルロ法とか)も……
夢は膨らむばかりですが、実力と時間が足りない。