ホームページ目次前の話次の話

最近なんだかアルゴリズムの本が見当たらない

2003年7月8日

最近、なぜだかやたらに忙しかったが、 その原因は、『Cプログラミング診断室』にある。それも、改訂新版という やつであり、その本の中に理由はしっかり描かれているので分かるであろう。

先日、池袋へ行ったついでに、ジュンク堂という大型書店に立ち寄って、 ふらふらしてしまった。東京の書店としては、書店内に椅子を置いて、 座り読みを本格的に奨励した最初の書店ではないかと思う。

色々なジャンルの本も見たのだが、ついでにコンピュータ関係も見てみた。 色々な本を見るが、大型書店に行ったときは、どうしても他ではあまり 置いていないような本を探してしまう。

そういうとき、決まって探すのは「アルゴリズム」の本である。 サーチやソートとか、あるいはハノイの塔や8クイーンあたりで終わっている 入門書を探している訳ではなく、もうちょっと突っ込んだ話が書かれているものを いつも探している。しかし、そういうのがほとんどないのである。

このところ多いのは、遺伝的アルゴリズムの本であり、これは確かに多いが、 そういうのではなくて、普通のアルゴリズムで、もうちょっと深く深く書かれ た本で、例題をちょっとプログラムしていたら、延々と時間が経過してしまう ような、じっくり読める本を探しているのだが、最近はなかなかそういう本が 書店で見つけられなくなってしまった。

アルゴリズムは、それがメインテーマになるのは何と言ってもパズルであるが、 それ以外にも、仕事で開発するプログラムの一部で、今まで人間が適当にやっ ていたことを、うまくやる手法を考えてやってくれ、なんてことは数限りない ほどあった。画像処理とか、3次元処理関係、文字列処理関係など、はっきり した分野のアルゴリズムをまとめたものはあるのだが、仕事の場合、 極めて特化した仕事の一部を、何とか適当にうまく処理して欲しいという ぜいたく極まりない要求はよくある。人間がいろいろ工夫してやっても、 なかなかうまくいかないものを、コンピュータを使えばもっと良い、 もしかしたら最適解が簡単に求まるのではないかと甘い期待をされた事は 数限りない。

単純にしらみつぶしで調べ切れる場合は問題ないが、ちょっと問題の規模が 大きくなると、この方法は一瞬で破綻してしまうのが常である。コンピュータ のメモリや、速度が、まるっきり足らなくなる。オセロならそろそり全探索 が可能かも知れないが、まだチェスはそこまでは難しく、せいぜい世界チャン ピオンにコンピュータが勝ったとか言っている程度であり、囲碁になっては 一部の限定された詰め碁のような場合に何とかなる程度である。

そこで、いろいろな問題を、しらみつぶしではなく、上手に探索して、 答の有無とか、最適解とか、解の一意性など、何とかできないものかと、 コンピュータを使い始める前から本を読みあさっていたが、いまだに これはというような本にたどりつかない。

先日立ち寄ったジュンク堂でも、タイトル名や副題等にアルゴリズムが含まれ る本はそれなりにあるのだが、どの本を開いても、同じようなレベルのことが 多くて、ぱらぱらとめくっては本棚に戻すという作業の繰り返しになってしまっ た。

その中の1冊に、箱入り娘というスライド系パズルを紹介していたのがあった。 箱入り娘は、手数が81手なのだが、その本の最小手数は100手以上になっていた。 よくみると、同じ駒を連続で動かした場合に1手を数えず、1マス分動かすご とに1手を数えるという、ちょっと安直過ぎる方法で解説してあった。 他の問題も見たけれど、あまり良くなさそうなので、そのまま棚に戻した。

アルゴリズムの本を読んで、あれこれ考えるのは、もちろんパズルのためなのだが、 そういうので鍛えていると、ときには仕事のプログラムに応用できてしまうことがある。

最近は、どうもGUI的な部分と、DBをはじめとする用意された仕組みを組み合 わせて動かしてしまう仕事の割合が大変増えている。確に、最近のJavaを見て いると、平衡木(Balanced Tree)を自分で作らなくても、TreeMapというのまで 用意されていた。本当に、アルゴリズム的な部分さえもどんどん出来合で済む ようになりつつあるようだ。

TreeMapは、非常に高速なのだろうか。まあ、そのうち、パズルのプログラム で検証してみようと思う。

ところで、やっぱりアルゴリズムの本って、出版点数が激減しているのだろうか?


ホームページ目次前の話次の話