書評個数を数える
大島利雄 著，数学書房選書７，数学書房，2019 年
早稲田大学基幹理工学部
池田岳

本書は，著者による理学部数学科の初年度講義「離散数学」の内容をもとに執筆された．高校までの数学の知識をもとに有限的なものを扱う数学を紹介している．特に，情報科学の分野で用いられる数学的な概念にも無理なく親しめるように配慮されている．

“あとがき” に著者の考え方が端的に現れているので引用してみよう．『数学を理解するには，自分で考えることが重要である．
（中略）数学は，知識と理解とが最も厳密に区別され，能動的学習なしには数学がわかるようにはならない．また，能動的学習が最も容易に実現可能な学問でもある』とある．我々，数学の教育に携わるものは皆，数学という学問のこのような性格を伝えるための実際的な方法を日々求めているものと思う．著者はさらに『このような学び方を身につけるには，すなわち「わかる」ということがどういうことなのかを身をもって知るには，意味がわかりやすい問題から始めるのがよい』
として，著者自身が「一筆書き」に関して，子供の頃にお母様との交流を通して「わかった」と感じた経験を語っておられる．詳しくはぜひ本を手にとってご一読いただければと思う．
読者が「わかった」経験をするための仕掛けとして，十進 BASIC を用いたコンピュータのプログラムが取り入れられていることが本書の大きな特徴である．十進 BASIC は無料で公開されていて，ほとんどのパソコンで実行できる．本書のプログラムは著者のホームページからダウンロードできるので，読者は自分のパソコンに十進 BASIC をインストールしてプログラムを実行して遊びながら読み進めるのがよいだろう．
本書全体を通したもう１つの特徴としては，母関数を用いることが多いということが挙げられる．数え上げの問題における母関数の活用はまったく自然な考え方である．様々な興味深い例を通して，読者はその威力を知り，理解を深めることができる．その意味で，数え上げの問題に対する本書の態度は一貫して正攻法であると言ってよい．母関数以外には第 15 章で包除原理が強調されるが，これもまた極めて素朴な原理である．突拍子もないアイデアを披露して読者を驚かせるのではなく，少数の基本的なアイデアが有用であることを淡々と示す．ときには技術的に煩雑に見え，泥臭く見えても，元のアイデアの簡明さを信じて実行し，数えきってみせる．そこに本書の意地のようなものが現れていると感じた．これまでに，著者の講演を拝聴する機会が度々あった．評者の浅学非才の悲しさに，話のとっかかりは「なぜそれを問題にするのかな」というような印象を持つのだが，すさまじい腕力で問題を解決してまとめ上げるのを目の当たりにして，強˙し˙ い．
˙
烈な印象が残ったことが何度かある．そのような意味で，本書はまことに著者ら以下，各章ごとの内容を見てゆく前に，大雑把な構成を眺めてみよう．著者が “はじめに” で述べているように，本書は必ずしも最初から通して読むのではなく，興味を持ったトピックを取り上げて読むことも推奨されているからである．本書は全部で 17 章からなる．第 1 章から第 9 章「様々な分割の個数についての母関数」まではひとまとまりと考えてよいだろう．第 1 章では，第 9 章のタイトルになっている問題の一例が算数オリンピックの問題として紹介される．次に，第 10 章「組合せの数」，第 11 章「定数係数の線形漸化式」が挿入される．第 12 章「整数と素数と無理数」の内容は初等整数論および無理数論でありそれ以前の内容と独立して読める．第 13 章「分割数」はタイトルからも分かる通り，第 9 章までの内容に続いている．第 14 章は組合せ論で取り上げられることが多いカタラン数の話題である．第 9 章を読み終えたら第 14 章に進むこともできる．第 15章の包除原理から，それを用いて再び素数の探求をするくだりは本書のクライマックスの１つだろう．第 12 章を読み終えたら第 15 章に飛ぶことも１つのいい考えだろう．第16 章，第 17 章は母関数のテクニックが有効な題材であり，独特の魅力がある．
第 1 章は自然数の分割 (partition) の数え上げの例題から始まる．それに対して著者は，極めてまっとうな場合分けを行い，総和記号 Σ とガウス記号 [ ] を駆使して解答する．
正直にいうと，評者はちょっとあっけにとられた．素朴な問題ではあるが，著者の腕力がすでに全開なのである．読者へのアドバイスとしては，ここで本を閉じないこと！ 答がもっと小さな数になるような問題を自分で作って，全て書き上げることからやってみるべきである．第 2 章は，第 1 章で苦労した後で「辞書式順序」のありがたみを噛み締めるという仕組みになっている．第 3 章「ヤング図形」には，第 1 章の 2 つの問いの答が同じになったことの種明かしがある．そのことを通して，全単射という概念を理解するのだ．第 4 章は 2 進数の解説だが，通り一遍ではない．ここで，2 進数をカラダで覚えておけば，本の後半の理解はがぜん深まるだろう．第 5 章は「階乗進数と順列・組合せ」である．評者は「階乗進数」を知らなかった．時間をかけて親しむ価値がありそうで，なおかつ，プログラムを書く頭の訓練になりそうである（評者はまだ十分に親しんでいないことを告白する）．第 6 章もまた，通り一遍でない「数学的帰納法」の解説である．ここで取り扱われている一筆書きの問題もまた，本書で身に付けることのできる思考の典型である．第 7 章で第 1 章の問題を母関数を用いて説明する．「わかった」が必要な箇所である．第 8 章には，形式べき級数に関する解説がある．特に，形式べき級数の逆元や商などについて，基本的なことをこれほど丁寧に書いたものを評者は目にしたことがない．第 9 章で，いよいよ第 1 章の問題の一般化が母関数を用いて解かれる．その際，十進 BASIC のプログラムが示される．本書は十進 BASIC の入門書ではないので仕方がないが，初めて登場するプログラムとしてはかなり難しいと感じた．十進 BASIC にはサンプルプログラムが付属している．本書でも取り扱われている内容として，エラト
ステネスの篩，フェルマーテスト，ユークリッド互除法，自然数の分割などが含まれる．
本書のプログラムは全体を通して「十進 BASIC ではこんなことまでできるんだ！ すごい！」という印象を受けるが，初心者には敷居が高いのも事実であるので，読者は上述のサンプルプログラムを参考にしてみるのが良いと思う．
第 10 章は組合せの数，重複組合せの数，上昇べき，下降べきが説明される．それらは後の章で用いられる．第 11 章は定数係数線形漸化式の理論の本格的な解説である．例題としてハノイの塔が扱われている．十進 BASIC の再帰呼び出しの威力を体験できる．なお，ハノイの塔を理解するだけならば，前半の一般論は必要ない．
第 12 章は上で述べたように，その他の部分と独立して読める．ユークリッドの互除法，素数と合同式，素数判定，共通鍵暗号と公開鍵暗号，鳩の巣原理と無理数，無理数と連分数，というのが節のタイトルである．素因数分解の一意性（定理 12.12）を互除法の議論によらずに示している．定理 12.14 の前のコメント「このことから次の結果もわかる」
は誤解を招く．定理 12.14 に対して与えられている証明は定理 12.12 ではなく互除法のみによっているからである．ミラー・ラビンによる素数判定の方法がプログラムとともに示されている．無理数に関する議論が鳩の巣原理と関連付けて行われている．
第 13 章は第 9 章からの続きで，分割数に関してさらに深い議論を行っている．その材料はオイラーの五角数定理であって，その証明にはヤング図形の組合せ論が用いられている．ここまでに理解してきたことの応用としてまことに味わい深いものである．最後に分割数の大きさの評価に関する議論がある．そこで用いれるスターリングの公式は高校の数学を超えているが，大学の微積分でこういうことも学ぶのだと知ることは意義がある．第 14 章「カタラン数」では種々の解釈や，母関数が説明される．母関数の考えさえわかっていれば，独立して読める．最後にランダムウォークへの応用が示される．第 15 章
「包除原理」ではまず集合の包除原理を特性関数を用いて証明する．それが「n 組夫婦のランダムな男女のペアで夫婦のペアが生じない確率」などに応用される．素数の話題に転じ，素数が無限にあることのザイダックによる 2006 年の証明，素数の逆数和が発散する
ことのエルデシュによる証明，N 以下の素数の個数 π(N ) に対する評価 π(N ) ≥ [log N ]の易しい説明などが続き楽しい．そこで包除原理の応用として π(N ) の表示が登場する．
それはエラトステネスの篩につながるのは自然である．ただし，上でも述べたが，ここで示されているプログラムは，初めて学ぶ者にとっては技術的すぎる．付属のサンプルプ
ログラムの Eratos.bas を見てから自分で考えるのが良い．第 16 章，第 17 章はスターリング数とベルヌーイ数に関するものである．どちらも，著者一流の簡潔な解説が読める．
言うまでもなく，ものの個数を数えることは数学の出発点である．本書を通して，数えることの喜びをより深く享受する人が増えることを期待してやまない．