アルゴリズム・サイエンス:入口からの超入門

書籍情報
シリーズ名アルゴリズム・サイエンスシリーズ 全16巻 超入門編 【1】巻
ISBN978-4-320-12167-6
判型A5 
ページ数244ページ
発行年月2006年10月
本体価格2,400円
アルゴリズム・サイエンス:入口からの超入門 書影
アルゴリズム・サイエンス:入口からの超入門

 本書は,アルゴリズム・サイエンス シリーズの第1巻として刊行されるもので,非常に重い責任を負っている。最初に「超入口」の執筆依頼を受けたときには,どのような内容にすべきか非常に悩んだが,第1巻の意図は,高校生にもわかるようにやさしくアルゴリズムを紹介して,アルゴリズムのことをもっとよく知ってもらうということなので,ひたすら途中で飽きられないように心がけた。長々とした文章を続けることを避けて,質問を入れたり,まとめを入れたりして,アクセントをつけることを試みた。大学の講義用のテキストとずいぶんスタイルがちがうことに違和感を感じられるかもしれないが,著者の意図を理解していただければさいわいである。本書を読んで,アルゴリズム研究の楽しさを少しでも感じてもらえれば,それ以上の喜びはない。
 むずかしい理論をむずかしい用語と概念を用いて説明するのは,研究者にとってはむしろ簡単なことであり,むずかしい理論をやさしく説明するほうがかえってむずかしいものである。たとえば,数学の勉強で定理の証明に慣れない学生にとっては苦痛以外の何物でもないが,なぜ苦痛なのだろうか。それは人間の思考過程と逆の順序で説明されているからである。定理を最初に考えついた人は,はたして最初に定理の言明を思いついて,それを証明したのだろうか。私の知るかぎり,そのような例はほとんどない。ふつうは,何か興味のある問題があって,それを解こうとして,たくさんの例題をこなしているあいだに一般的な法則らしいものを見つけ,それが本当に成り立つのかを証明しようとするが,だいたいは試行錯誤のくり返しである。できたと思った証明が一晩明けてみるとまちがいであったことに気がつくというのは,研究者なら誰しも経験のあることである。証明自体にしても,最初の証明はやたらに長くて,とても発表に時間制限のある学会では説明しきれない。そこで,どうすれば短く説明できるかを工夫することになる。そのための常套手段は,一般化である。証明で必要な一部の性質を定義するのである。かくして,定義が登場する。ところが,実際に論文に書くときには,最初に定義があり,次に定理の証明が続くのである。これは明らかに逆の順である。これでは定理を証明した人の頭の良さを披瀝するのが目的ではないかとさえ疑いたくなる。しかし,これが現実である。この状況を本書では少しでも改善したいと推敲を重ねたつもりである。
 勉学の意欲が掻き立てられるようなテキストがもっとも望ましいが,ではどうすればよいかが最大の問題である。人はなぜ勉強をするのだろうか.勉強が本当に好きだという人もいるようだが,恋愛よりも遊びよりも勉強が好きだなどとはとても人前では言えない。人生の教訓を得るために小説を読むという人も少ないだろう。小説を読むのは,あくまでおもしろいからである。では,アルゴリズムのテキストを読もうという人は何を期待しているのだろう。それはいうまでもなく,勉強しない人から自分を差別化したいからであろう。勉強しなかった人には歯が立たない問題でも,勉強した人にとっては簡単だということがある。素人とプロには超えられない差があるからこそ,プロの存在意義があるのである。したがって,素人にはまったくできないが,勉強をした人にとっては非常に簡単だということが多ければ多いほどよい。それと,素人にできないことであっても,それが魅力のないものであれば,その技量や知識は高く評価されることはない。したがって,素人とは明確な差がついて,しかも,だいじな仕事ができるというのが理想的である。
 現在の理科系離れの原因のひとつとして,受験勉強をあげる人が多い。大学入試センターの数学の問題を見ると,たしかに洗練された良い問題が多いことは認めるが,時間制限がすべてをぶち壊しにしている。受験生にとって試行錯誤の時間はない。問題を見た瞬間に解答の粗筋が浮かんでこないといけないのである。したがって,反復勉強により,このタイプの問題ならこの解き方,というパターン学習が幅を利かすことになる。多様な解き方を教えるとかえって混乱するから,解き方は1つだけ教えるのが鉄則である。しかし,そのために学問のおもしろさが伝わらない。柔軟な頭をもつことが究極の目標であったはずなのに,これでは頭を柔軟にしてはいけないと教えているようなものである。アルゴリズムを考える楽しさは,まさに試行錯誤にある.どんなにすばらしいと思えるアルゴリズムが得られても,けっして満足することなく,何か改良すべきことがないかどうかを探し続けるのが,アルゴリズム研究の真髄である。
 日本人がもっとも苦手なことは何だろうか.学問の分野でいうと,講演後の質問であろう。欧米では良い質問をすることが能力を誇示することだという発想から,どんな気の利いた質問をしようかと考えながら講演を聞いている。日本では,こんなことを聞くと恥ずかしいとか,こんなことを聞くと失礼だとかが先に立ってしまうことが多い。お義理の質問でお茶を濁すことがけっこう多い。そこで本書では,本文の中で「質問」を多用することにした。あたかも読者と著者がおたがいに話をしているように,議論を進めていくのである。
 本書の目的は,高校生を含め幅広い読者にアルゴリズム研究の楽しさを伝えることであった。どの程度,成功したのかは,本書の売行きに反映されるであろう。ただ,執筆していて,本当はこういうことを伝えたかったのに,この文章ではうまく伝えることができていないなと感じることも多かった.そこで,あまり他のテキストにはないが,「著者の独白」として著者が伝えたかったことを記した。どの程度,著者の意図が実現できていたか評価するつもりで読んでもらえればさいわいである。
(「まえがき」より)

目次

第1章 数式における括弧の威力
1.1 電卓とコンピュータの能力比較
1.2 計算に必要なメモリの個数
1.3 コンピュータが苦手なこと
1.4 括弧つきの計算
1.5 逆ポーランド記法に基づく数式の計算
1.6 著者の独白

第2章 変数の威力
2.1 変数による一般化
2.2 プログラムにおける変数
2.3 電卓の裏技との関係
2.4 著者の独白

第3章 プログラムの威力
3.1 プログラム内蔵方式
3.2 分岐命令
3.3 関数の威力
3.4 著者の独白

第4章 コンパイラの威力
4.1 コンピュータのしくみ
4.2 数値の取り扱い
4.3 演算装置の構成
4.4 コンパイラ
4.5 著者の独白

第5章 ループの威力
5.1 不定回数の反復
5.2 数学的帰納法
5.3 ループと再帰
5.4 最大公約数の計算
5.5 著者の独白

第6章 配列の威力
6.1 変数と配列
6.2 配列の威力
6.3 データの並べ替え
6.4 2次元配列
6.5 著者の独白

第7章 データ構造の威力
7.1 配列の威力
7.2 ハッシュ法
7.3 著者の独白

第8章 分岐命令の威力
8.1 直線型プログラム
8.2 分岐の除去(1)
8.3 分岐の除去(2)
8.4 著者の独白

第9章 再帰の威力
9.1 再帰的な定義
9.2 再帰に適した問題
9.3 再帰と漸化式
9.4 ファレイ数列
9.5 再帰呼出しの危険性
9.6 著者の独白

第10章 2分探索の威力
10.1 探索問題
10.2 なぜ2分探索か
10.3 著者の独白

第11章 乱数の威力
11.1 乱数を用いたアルゴリズム
11.2 乱数の生成
11.3 行列積の検算
11.4 著者の独白

第12章 計算幾何学の威力
12.1 計算幾何学における典型的な問題解決
12.2 点集合の分割問題のむずかしさ
12.3 点と直線の関係
12.4 点集合の重みつき2分割問題
12.5 著者の独白