著者の定義によると、アルゴリズムとは「問題を解決するために必要な手順を正確に規定したレシピ」である。コンピュータ・サイエンスを専門とする大学教授の手による本書は、現在当たり前のように使われている偉大なコンピュータ・アルゴリズムがなぜ必要とされたのか、どのように考え出されたか、そして、それが実際にどのような仕組みで動いているのかを教えてくれる。
このように紹介すると、コンピュータやプログラミングが苦手な人は手が遠のいてしまうかもしれないが、どうかご安心を。本書を楽しむのに、コンピュータプログラミングやコンピュータ科学の知識は必要ない。必要なのはじっくりと考えることだけだ。
一口にサイエンス本といっても面白いポイントはそれぞれに異なるが、本書の面白みは間違いなく、過去の偉人たちの難問への挑戦を疑似体験できるところにある。その面白みを満喫するためにも、頭から煙を出しながらじっくりと考えながら読むことをオススメする。レシピを見ただけでは美味しい料理は出来上がらないように、ただパラパラと文字を追うだけでは本書の楽しさは味わえない。楽しみながら頭を鍛えた後には、普段使っているコンピュータの仕組みへの理解が深まるというオマケつきだ。
本書で扱うテーマは、検索エンジンのインデクシング、ページランク、公開鍵暗号、誤り訂正符号、パターン認識、データ圧縮、データベース、デジタル署名、決定不能性である。聞き慣れないものもあるかもしれないが、私たちは毎日これらのアルゴリズムの恩恵に預かっている。気になる旅行先をネットで検索、ワードで作った議事録の回覧、ネットでのクレジットカードによる買い物、どれもここで上げたアルゴリズムなしには実現できない。知らないうちに、あなたは本書で説明されているアルゴリズムを活用しているのだ。
物理や化学とは異なり、コンピュータ科学の内容が高校以下の教育機関で教えられることは稀である。遠く離れた惑星の軌道や目に見えない分子の構造についてはみっちり教え込まれるのに、毎日使うコンピュータがどのように動いているのかについては見当もつかないというのは、よく考えれば不思議なものである。そんな知識のない読書のために著者は巧みに比喩を利用しながらアルゴリズムについての説明を展開する。そのおかげで、「プログラミング?それって美味しいの?」というレベルの私でも、コンピュータ科学の楽しみを垣間見ることができた。
例えば、第四章「公開鍵暗号法-葉書で機密情報を書き送る」では絵具を使った比喩で公開鍵のアルゴリズムについて説明がなされている。以下にあげる条件で、その下にある目的を達成する方法を思いつけば、あなたは公開鍵暗号法のアルゴリズムの作成に随分近づいたことになる。
【条件】
- 部屋の中には事前に何の情報も共有していないあなた、友人と敵の3人が居る
- 2者間の内緒話はできない(友人に何かを伝えると、必ず敵にもその内容が知られる)
- 3人とも無限の種類の色(要素色)を持っている
- 2種類以上の要素色を混ぜて混合色をつくることができる
- 混合色の色合いは、要素色の種類とその含有量で決まる
- 混合色からどの要素色がどの割合で混ぜられているかを知ることはできない
【目的】
- あなたと友人の2人だけにしか分からない、秘密の色を設定する
(あなたと友人で秘密の色がどんな色であるかを共有する)
「赤と白を1:1で混ぜようぜ!」と友人に伝えるのは得策ではない。その内容は敵にも知られてしまい、もはやその色は2人だけの秘密ではなくなってしまうからだ。では、どうすればいいのか。皆さんの楽しみを奪うわけにはいかないので、ここではヒントを出すだけに止めよう。この暗号の名前は“公開”鍵暗号である。秘密にすべき暗号が“公開”されているところが、このアルゴリズムのミソである。
このような公開鍵暗号法はネット通販時のクレジットカード番号転送等に用いられている。本書では上記のような抽象化された説明の後に、実際に用いられている暗号鍵のための数学的手法についての解説もある。もちろん、こちらの数学的解説を理解するためにも高度な数学の知識は必要ない。唸りながら本書の論理を追っていけば、その考え方の概要が理解できるようになっている。
本書で紹介されているアルゴリズムは、多くの人々に毎日使われ、世界に大きな影響を与えている。それだけのことはあって、どれもそのからくりを知った後にはポンと膝を付きたくなるものばかりである。現実の世界で用いられている数学やコンピュータ言語は高度なものであろうが、その考え方は意外な程にシンプルなものが多い。
今後本書で紹介されている偉大なアルゴリズムは他の新たなアルゴリズムに取って代わられるのだろうか。細かなテクニックは変わっていくが、大きな考え方は今後もその重要性を失わないと著者は予想する。なにしろ、本書のアルゴリズムはその説明のためにコンピュータ科学の知識を必要としないほどに普遍的なものなのだ。
コンピュータに使われないようになるためにも、本書でコンピュータが使っているアルゴリズムへの理解を深めておこう。
________________
本書の第6章「パターン認識-経験から学ぶ」で取り上げられている、コンピュータによる画像認識の研究の歴史をコンパクトにまとめた一冊。研究活動の現場の活き活きとした躍動感が伝わってくる。こういう本を読むと、大学院時代の研究生活の楽しい思い出がよみがえってくる。この内容で800円以下というお買い得な一冊である。
あらゆる仕事の機械化、自動化はとどまることを知らない。世界中で失業率の上昇が懸念されているが、コンピュータに仕事を奪われないためにも読んでおきたい一冊。コンピュータは何が得意で、何が苦手なのか。人間にしかできない、人間らしい仕事について考えさせられる。
コンピュータに限らない、アルゴリズムの歴史に迫る。文庫化の際に購入して読み進めていたのだが、引越しを機に行方不明になってしまった。どこに行ったか分からなくなった本を瞬時に見つけ出せるアルゴリズムをご存知の方はどうかご一報ください。