ごちゃごちゃした工具やコンピューター部品で埋め尽くされた、薄暗い雰囲気の整備士のガレージから物語は始まる。
散らばった工具を片付けるのはいつも彼女だ。
誰も手伝わないというわけではない。ただ、彼女の処理速度が他を圧倒しているのだ。
「・・・・わかりました、はっきりさせておきましょう。私の言う”アルゴリズム”は魔法ではありません」
ぼろきれの上で手をぬぐいながら、ぶつぶつ言いました。
「それはステップであり、仕事を終わらせるために従うべきルールだ。そんな単純なものなの」
彼女は空のコーヒーカップを蹴り飛ばし、最も基本的な説明から始めた。
「この山を見てごらん」
と、整備士は作業台に並べられた未整理のボルトの山に身振りで示した。
線形探索アルゴリズム
「特定のボルトが必要だとしたら、1つの端から探索を始めて1つずつ確認する。これが、線形探索アルゴリズムと呼ばれるものです」
「汚い方法だが、一握りの人にとってはこれで十分。データや対象が少ないときは、そうやって使うのです」
彼女は乱暴に山を押しのけた。
バブルソート
次のトピックに移り、彼女はサイズごとに並べられた一連のレンチを手に取った。
「ここにあるレンチが全部混ざっているとしよう。それぞれのペアを比較して並べ替えたり、順番が間違っていたら入れ替えたりできる。このスワップ(入れ替え動作)が不要になるまでこれを続けます。それがバブルソートだ」
バイナリ探索
彼女の最後のレッスンはもう少し複雑だった。
彼女は作業台の真ん中に見えない線を引いた。
「さて、これらの道具をすべてきちんと整理したが、特定のものが必要だとしよう。どうすればいいか。chumpのように端からチェックを始めますか??とんでもない。こういう時は束を二つに分けて真ん中を確認する」
「私が探しているツールが真ん中のモノより小さい場合、大きい方の半分は無視して小さい方を探索対象にして続けます。その逆もまた然り」
「この方法で、私は検索スペースを半分に減らし続ける。これこそが、みんな、バイナリ検索なのだ」
「荷物が”整理”されて大きな山になったときに最適な探し方だ。時間と労力を節約できる。同じことは、あなたの豪華でソートされたデータセットにも言えるだろう」
彼女は指の関節を割って話し終えた。
ガレージが再び静かになると、ストリップのかすかなハム音が彼女の思考の唯一の伴奏を照らした。彼女は身を乗り出し、すべてのシンプルさとエレガンスを満喫しながら満足げな笑みを顔に広げた。
『IT』に関するおすすめ書籍
アルゴリズム図鑑 増補改訂版 絵で見てわかる33のアルゴリズム
中小企業診断士 最速合格のためのスピード問題集(5) 経営情報システム 2023年 [スピードテキストとの反復学習で効果抜群の問題集!](TAC出版)
コメント