読者です 読者をやめる 読者になる 読者になる

Line 1: Error: Invalid Blog('by Esehara' )

または私は如何にして心配するのを止めてバグを愛するようになったか

>> Zanmemo

あと何かあれは 「esehara あっと じーめーる」 か @esehara まで

文系にして数学が苦手だった俺が、如何にして(初等)整数論にハマッたか

はじめに

 数学に対してコンプレックスがあるエンジニアというのは、多少なりともいるかとは思う。かくいう自分も、「数学」に対しては、出来ないというコンプレックスがあった。とはいえ、単なるコンプレックスならば、それを克服すればよく、取っ掛かりになる分野を探したりしていた。

 もちろん、数学とはいえ、いろんな分野がある。例えば、論理学であったり、集合論であったり、あるいは解析学や、幾何学、巨大数論といったように、さまざまな分野がある。そして、これらの分野は、少なくともある程度までは、プログラミングの世界にも通じている。

 例えば、条件分岐を考えるときに、ドモルガンの法則を使うとすっきりするパターンとかもある。だから、全ての数学の分野がそのまま実務に使えるとは限らないけれども、しかしその分野と密接な部分は少なからずあることは疑い得ない。

 とはいえ、例えば微分・積分を現実の業務に使う必要性が出てきたからといって、それが本人にとって、数学を学ぶモチベーションになる分野かどうかは怪しい。業務で必要になることと、それが面白いから、その世界を俯瞰したいというモチベーションは明らかに違うからだ。

 だからこそ、「数学を始める」といったときに、何処に対して、自分の面白さを感じるかという分野を見つける必要はあると思うのだが、俺の場合は、その対象が「整数論」だったのだった。

きっかけ

 自分の場合、こういう学習のきっかけになるのは、「業務で必要になったから」という駆動学習と、「他人がそのことについて面白がっていたから、きっとそれは面白いのだろう」駆動学習というのがある。

 整数論は、根っこのところではプログラミングに貢献する場合もあるかもしれない(暗号技術は、整数論の知見が使われている)が、これは前者にあたる。だけれど、俺にとって興味があるのは後者だ。

 といっても、別に「整数論」に対して面白がっている人がいたわけではなく、一部の界隈において、突然の数学ブームが現れたからだ。そこでは集合論とか、数理論理学だったが、正直なことをいうと、そこに興味を持てなかったというのはある。そこで、個別に面白そうな分野を探したところ、たまたま整数論だった。

なぜ数学が嫌な気持ちになるのか

 冷静になって、俺みたいな人間が、なぜ「数学」というものに対して苦手意識を持つようになるのか。それは単純な話として、そもそも「数学」の読み方がわからないというのがある。

 よく揶揄されるように、数学記号だらけで、いったいこれがどういう意味を持つのかがわからない、というのがある。当然、その記号というのは、何らかの表記を簡潔に表現できるから、という意図があるように感じられる。しかし、初心者にとってはこれは面を食らってしまうし、「そもそも、この記号や数式が導入される理由」というのがよくわかなかったりする。

俺の数学遍歴

 そもそも、俺自身が、子供の頃から「1+1」といったときに、「この1+1という操作というのはいったいなんだろう」という疑問と、それと「この数式が唐突に出てくるけど、これはいったい何を導き出しているものなのだろう」という疑問が離れなかったからだ。

 中学生時代頃の、いわば「算数」の類は、それほど苦にならなかった記憶があるのだけれど、例えば高校時代になっていくと、あまりにも抽象的すぎて「なんだこれは?」ということになって、ドロップアウトしてしまった。私文系ということもあり、高校教程であるところの、数学III+Cは全く勉強していない。

 そういう歴史があり、まさに「文系プログラマーだ!プギャー」という煽りに対しては、ぐぬぬ……というしかほか無かった。

整数論に出会う

 しかし、そんな俺が、なぜいまさら整数論なのか。本当にガチの整数論者からすると、頓珍漢なことを言うかもしれないが、俺が魅力を感じる部分を挙げて生きたい。

 まず一つに、整数論は、それほど複雑な数学的操作が必要がないということ。

 もちろん、自分がやっているところが初等整数論という、いわば整数論一年生の基礎的な部分であることは疑いない。例えば、『初学者のための整数論』(アンドレ・ヴェイユ)では、次のような性質を仮定することから出発する。

  1. (x + y) + z = x + (y + z)
  2. x + y = y + x
  3. 方程式 a + x = b は、(a, b がZ(整数全体の集合)に属するときには、Zに、Q(有理数全体に属するときはQに)一つの会を持つ
  4. 0 + x = x

 これは、直感的には自明なことかもしれないが、ここで重要なのは、「今、使えるのはこの式の変形だけである」ということだ。そして、これを活用することによって整数の性質を明らかにしていく。

 同様に、掛け算の基本的な性質も仮定できる。例えば

  1. (xy)z = x(yz)
  2. xy = yx
  3. Qに属するa,b、かつ aが0ではない場合、ax=b は Qに属する1つの解を持つ
  4. 1 * x = x
  5. (分配律) x(y+z) = xy + xz

 さて、このような仮定を認めるとした場合、例えばいろいろといわれている

 -1 * -1 = 1

 という性質が証明できるようになる。これに関しては、初歩の証明なので、おそらく整数論の本、あるいは新教程の教科書(2011年から整数の性質というのが、数学I+Aに入ったということを知った)ので、各自参照して欲しいと思う。

整数論の苦しみ

 さて、「整数論に俺は今はまっているんだ」といったところで、では整数論が簡単かというとそうではない。確かに整数論はこのような「なんだか当たり前に見えるようなことを徐々に積み重ねていく」というスタイルをとっている(ように見える)ので、証明から導き出された公式を一つずつ理解していけば、おのずと次のステップへと結び付けられるし、そういう意味では、自分の性分に合っている。

 だけれども、しかし逆にある証明がわからないときは、その証明を考えているうちに、一日に1ページも進まないことはざらにある。特に『初学者のための整数論』は、証明はちゃんと書かれていて好感が持てるが、ここの解説がいまいち不明なこともあるので、雪江氏の『整数論I 初頭整数論からp進法へ』を副読本にしつつ、こなしていく必要がある。

 ただ、この苦しみは、どちらかといえば、まだ過去の公理や系を、この証明においてどのように運用するべきなのか、という問題だと思うので、そういう意味では、まだ大丈夫ではある。

暫定的な整数論の勉強法

 整数論、というより数学全般の勉強法について、手探りでやっているので、どうにもこうにも自身が無いのだが、現在、自分は下のような方針でやるといいのではないか、ということで、この方針を使っている。もし他にいい方法があればご教授を願いたい。

証明を書き写す

 パラパラと一読した限り、整数論において重要なのは証明だ。しかし、俺が整数論に入ってきたときに、そもそも「証明」とはどういう風にするべきなのか、という理解が追いついていない、という無知が存在している。なので、まず愚直に、証明を書き写す。

 ただし、証明を書き写しているときに気がつくのだが、同時に二つの公理を一度に適用している場合がある。そのとき、適用を二つに分割し、一つ一つに対して、どの公理を適用した結果、何を導き出せるのかを分解する。証明としては冗長にはなるのだが、理解には役に立つ。

そのとき使われている定義、定理、公理、系を書き写す

 今読んでいる本に限っていうならば、「この式は(公理 1.1.40)が適用できる」といったように、過去の公理の番号で省略することが多い。確かに、そのつど戻ればいいのかもしれないけれど、しかしやはり「(公理 1.1.40)といえば、あのことだな」ということがわかるのが最善だし、いちいち本を戻る必要はなくなるので、そのつど書き写している。

 書き写すことによって、その公理の定着もはかどるし、何しろ、そこを見ただけで、どういう公理が使われているかがわかるようになる。なので、基本的に公理は書き写している。

ところどころを自分の説明とする

 恐らく、本の説明においては数学的な記述であって、信頼にたることはあるかもしれないが、しかし数学的な記述と、自分にとってしっくりくる説明というのは違うし、自分の場合、論文を書いたり、あるいは数学向けの説明をするための原稿を書いているわけではない。あくまでも自分が理解し、その式を運用し、証明し、次のステップに結びつけるものだ。だから、「自分だったらこういう説明するとしっくりくるかな」というのを書き足していく。

 もちろん、その文章がそのままで理解できるなら、それにこしたことはないけれど。もしその説明がしっくりこず、また自分なりの言いかえが出来ないとするなら、そこが躓きの種である可能性は十分にあるわけだから、そこを重点的に何度も復習するような方針にしている。

とにかく紙を使う

 これは俺の悪い癖でもあるのだけど、たいてい本を一読して、頭の中で理解しようとする傾向にあるのだけれど、しかし、整数論の場合、とにかくノートに書きなぐってみるということが、非常に有効な手段だというこがわかった。ノートが嫌なら、コピー用紙を注文してひたすらそこに書きなぐってもいい。とにかく量=パワー。少なくとも頭の中で「ああ、あれはアレだな」と思い浮かぶのは強い。

 ちなみに、こういう方針を使ったのは、この記事の影響が強い。この中で、「大学ノート1冊を使った」というエピソードが出てきている。それくらい書きまくっているわけだから、自分もそうやって数式を体にしみ込ませる必要があるなあ、と思ったのでそうしているし、それはだいぶ間違っていなさそうでもある。

まとめ: やさしくて厳しくて苦しくて、でも楽しい整数論

 俺自身もエンジニアをやっていて、数学的な分野に触れることが多いし、例えば機械学習を勉強しようとしたさいに、微分積分の式をみて「はっ、これは何を言おうとしているのだ」と混乱することが多く、手元にある『パターン認識と機械学習』は綺麗なまま放置されている。俺の業務上、機械学習なんて全く使わないし、ヒヨッってO'Reilly Japan - word2vecによる自然言語処理で遊んでいるくらいの能力しかない。その程度の弱小エンジニアだ。

 確かに、工学的な意味での数式というものは、俺が推測するに、その式が「何を示しているか」というよりは「如何にして使うものなのか」ということのほうが重要に思える。例えば、バブルソートとか、クイックソートのオーダー数の証明よりは、実際にどういうオーダーになるのかというほうが重要なように、と思うし、それは工学的には全く正しい気がする(マサカリは認める)。

 とはいえ、俺のように数式一つ一つに対して「これ、なんでこれが導かれたのだろうか」ということが気になって仕方ないタイプの人間もいるだろうし、また元々「1+1ってなんだよ」という、よくわからない哲学的な疑問を持ってしまい、それが気になって先に進めなくなる人もいると思う。

 そういう人にとって、僕は整数論というのはお勧めだと思う。特にいきなり「記号としてこれとこれとこれを定義しよう」というのが無いので、とっかかりにもよい。

ブックガイド

やっているもの

初学者のための整数論 (ちくま学芸文庫)

初学者のための整数論 (ちくま学芸文庫)

  • 作者: アンドレ・ヴェイユ,片山孝次,田中茂,丹羽敏雄,長岡一昭
  • 出版社/メーカー: 筑摩書房
  • 発売日: 2010/09/08
  • メディア: 文庫
  • 購入: 3人 クリック: 59回
  • この商品を含むブログ (4件) を見る

 非常に薄い本でありながら硬派であるものの、演習問題と解答を行き来しながら、証明のコツというか、勘所を養うのにはすごく役に立った。そして、「あ、整数論って凄く面白いじゃないか」と思わせてくれたのも、この本のおかげ。

 ただ、ところどころで「これは自明なので……」というのが出てくるので、そこは「自明じゃねーよ」という感じで、自分なりの穴埋めする形で使っている。文庫サイズだけれど、電車の中で読むのはお勧めしない。最初の三ページで一週間くらい使った記憶がある。

整数論1: 初等整数論からp進数へ

整数論1: 初等整数論からp進数へ

 全三巻のうちの一巻にして、整数論では新しめの本であるようなので購入。進みやすく、実例もちゃんとあり、またExcelを使った簡易暗号の方法があるなど、豊かな本ではあるが、だからといってやわらかいわけではなく、内容はかなり硬派。基本的にこの本で紹介されている証明を書き写しながら、勉強を進めている。

副読本

現代数学の考え方 (ちくま学芸文庫)

現代数学の考え方 (ちくま学芸文庫)

 読み物としてはこちらがお勧め。たいてい、こういう入門書みたいなのは、文章であいまいな説明ばっかりしていて「ふざけんな、数式でどうなるかやれ(わがままだな)」と思うこともあるけれど、この本は、いい意味で脱力した図式を使いながら、同時に数学的見地も織り交ぜてきて、簡単さ・難しさのバランスが良いように感じる。

 数学の魅力を、数学らしく概観するための愛読本。

これから読もうと思うもの

初等整数論講義 第2版

初等整数論講義 第2版

俺は無知なので知らなかったけど、数学者の大家である高木貞治氏が書いたという初等整数論の本らしい。いつか手に入れようと思うけど、まず最初につんである本を消費することから、ということを考えているので、まだ先延ばし中。

はじめての数論 原著第3版 発見と証明の大航海‐ピタゴラスの定理から楕円曲線まで

はじめての数論 原著第3版 発見と証明の大航海‐ピタゴラスの定理から楕円曲線まで

これは注文していまった……。Amazonぺージにある「プログラミングで確認してみよう」という部分に心を引かれてしまった。届いたら、感想を書きます。