道産子エンジニア

悲観主義は気分に属し、楽観主義は意志に属する

数学の言葉で世界を見たら 〜父から娘に贈る数学〜 大栗博司

さっそく今年の目標の毎月2記事以上書くというのを6月で破ってしまった…悲しい… 会社で大きな動きがあったり、身の回りの変化も激しくてつい…(言い訳はここまで。 映画、読書、展示などはきちんと見ていたので順々に記事にしていきます。

今回はまたまた数学本を読んでいたので。(友人と読書リレーで受け取った本読まねば)

www.amazon.co.jp

数学の本の良さ

前回のエントリでも書いたが、 数学について勉強する、本を読むのにはまっている。本書の終わりの方に出てくる言葉がしっくりきているので引用。

本書は、21世紀に有意義な人生を送るのに必要な数学について語ってきた。リスクを判断するための確率や大きな数を見積もる方法など、 日常生活でもすぐに役立ちそうな話題もあったけど、今回の「方程式がべき根で解けるか」というような、純粋な知的興味に発した問題も考えてきた。

古代ローマ帝国が滅びた後に、再びヨーロッパを統一したカール大帝は、 「別な言葉を習うことは、もう一つの魂を得ることになる」と語ったと言われている。

これまで語ることのできなかったことを語り、解くことのできなかった問題を解くための、新しい言葉を作る。 これは、人間の知的活動の最も素晴らしいもののひとつだろう。

「もうひとつの魂を得る」ことも、数学を学ぶ大切な意義だと思う。

たとえば、日本語には「私」や「あなた」を表す単語が沢山ある。敬語や丁寧語も発達している。そのため、 日本語を使うときには、相手との関係をよく考えて話すことになる。

インターネットによって、世界中の知識が瞬時に手に入るようになりました。情報の洪水に押し流されず、 本質を捉え、新しい価値を創造するためには、自分で考える力がこれまで以上に大切になります。

自分がこれまで思いつきもしなかった論理的な考え方、ものの見方、捉え方、話し方などは全て数学が教えてくれたのかもしれない。 最近では、周りの人に「きちんと理解しやすく話を進めてくれる」なんて言われる時も多くなって、ちょっと成長してるかも。

同期との勉強会ではTaPL本を使って型システムの勉強会をしているが、 こちらにも大量に数学の知識が必要になる。数学は自分の中で人生の必須科目みたいな感じになっているので、 少しずつでもいいのでどんどん勉強する。プログラミング言語における「型」とはなんなのか?なぜ型付き言語を用いて、 オブジェクト指向な言語や関数型言語が「世の中の問題を計算できるのか?」を紐解いていくいい勉強になる。 でも、とっても難しいので時間はかかりそう。

www.amazon.co.jp

またこの本の特徴として、お父さんが娘に語りかけるような論調なので、本のテイストが非常にまろやかなのも良い。 では、本書を読んで考えたこと、感じたこと、思いついたことなどを適当にメモする。

リベラルアーツ

最近、自分の会社では多くの変化があって、社内のムードは一喜一憂といった波があるように感じる。 自分は地元での高校時代にこういう体験を初めてした。二つの高校が合併する年の、片方の高校の最後の入学生だった。 自分は不安もありながら、「こんな体験は二度とできない」「友達が二倍になる」とワクワクしていたけど、 周りには不安に押しつぶされそうな友達、忙しさに慌てふためく教師のみなさんなどがいて、騒がしかった。 でも純粋に好奇心で自分はワクワクしていた。

本書では、現代社会がまさにそのような状態であると大栗さんが語っている。

高等教育が世界中で行われるようになり、社会ルールはどんどん変わっている。世界中が発展へのエンジンがかかっていて、 ふと休んでいると置き去りにされるかもしれない世界になってきている。

そんな社会で必要なのは「リベラルアーツ」。つまり教養だと書かれている。

「リベラル・アーツ」とは、自らの意思で運命を切り開いていくことが許される自由人の教養のことだったんだ。 …古代ローマではリベラル・アーツは、「論理」「文法」「修辞」「音楽」「天文」、 そして「算術」と「幾何」の7つの部門からなっていた。

古代ローマの時代から数学は教養として扱われていた。各教養は、それぞれにないものを表現する手段だとされていたと考えられる。 変化の激しい今だからこそ、教養を身につける。

そういえば学生時代に読んだ、「武器としての〜」シリーズで有名なディベートの達人とも言える瀧本哲史さんも教養について多く語っていた。 瀧本さんは古代ローマでいう「論理」「文法」「修辞」が得意な先生かもしれない。だいぶ遅くなってしまったけど、 これから教養を身につけるために、変化を生き抜くために数学をすると思うと、昔と変わらずワクワクする。 数学の役割は本書で書かれているように、

数学とは、英語や日本語では表すことができないくらい正確に、物事を表現するために作られた言語だ。 だから、数学がわかると、これまで言えなかったことが言える、これまで見えなかったことが見える、 これまで考えたこともなかったことが考えられるようになる。

その通りだと思った。

数学論と人生論

本書の面白いシーンの一つに、「数学なんて勉強しても人生の役に立たない」を真っ向から否定していくところがある。 これは爽快だ。ギャンブルの話題から発展して、この節のタイトルを「証明」してみせるんだ。

小さな努力を続けることと、確率論

ルーレットは赤と黒のポケットが18ずつあって、どのポケットに入るかを掛けるギャンブルだけど、0と00のポケットがあって、 そこに入ると胴元にお金が入る。なので赤か黒の1/2の確率で勝てるゲームではなく、18/38=0.47で負ける確率が大きい掛けだ。 このたった3%の差がゲームを長く続けるほど負ける可能性を高くしてしまう要因になる。99.75%の確率で負ける。 逆に、ほんの少しでも勝つ確率が大きいゲームは、続けるほど勝つ可能性が高い。 これは人生で「小さな努力を続ける」ことが成功に繋がることを確率が示しているのと同じだと書かれている。

よく「毎日の積み重ねが大切だ」といわれるけど、確率P(m,N)の公式を使うと、そればどのくらい大切なものか、 数字としてはっきりわかる。それが数学の力だ。

とっても格好いい。

経験に学ぶことと、ベイズの定理

条件付き確率の計算にはベイズの定理を使う。大学の時にバスの遅延時間を正確に測る研究をしていた。 そのときは今よりずっと数学に疎かったので、感覚でしか影響のありそうな要因を探せなかったのが今でも悔しい。 学長が顧問してくれて、数学的なヒントを何度もくれていたことを今思い返している。そんな話はさておき、 乳がんの検診についての話題から、関係のある二つの事象の確率を考えるのにベイズの定理を使うテクニックが書かれている。

乳がんにかかっている人を早期に見つけるために始まったアメリカの政策なのだが、 検査で陽性になる人は全体の90%に及ぶが、その中で実際に乳がんにかかっている確率はたったの9%になるという話だ。

心理的な不安や身体的負担の大きい検査をしても、ほとんどの確率で乳がんでない検査を受けるのはおかしい。 こういった、あるひとつの事象から短絡的に行動を起こすのではなく、根本の原因を関係する事象からどの程度起こりうるか? を計算するのがベイズの定理の得意なところだという。

ある事象と関係のある、「異なる事象」がもたらす確率の変化をベイズの定理で求めることができる。 これはつまり「ある経験に学んで、次に生かすこと」と変わらない。人は経験に学ぶということを数学で表すことができる。

とっても格好よくない?

このあと、福島第一原発の事故についての東京電力が主張する「事故の起こる確率」が、 実際に事故が起こってしまったあとはほとんど信頼性のない主張だったことを書いている。 これはつまり、「信頼はある一つの結果で一瞬にして失われる」ことを数学で表している。

進歩とは、経験を積むごとに、より正確な知識を持つようになるということだ。新しい情報が入ったときに、 これまでの判断を変えることのできる勇気とやわらかい心を持とう。ベイズの定理はそんなことを僕らに教えてくれているように思う。

自分もよく主張を曲げられない人にならないように気をつけている。これまで、たくさんの主張を曲げられない人に出会い、 プライドなどがあるのはわかるけど、周りを巻き込んでまで自分が正しいと嘘をつき続けることの醜さを見てきた。

自分の記事にしばしば登場していただいている、こにふぁーさんの記事を読んだりして、自分も後輩ができてこんな状況になったときに、硬い頭ではなく、臨機応変に、 そのときいいと思うものをしっかりと考えて、飲み込んで、判断を変えていける人間になろうと思う。

このあとに「自分の知らないことをどうして探求することができるのか」とメノンに問われ、 返答したソクラテスの話がでてきてすごくいい。

われわれは自分が知らないことを発見することはできないし、そのようなものを探求すべきでもないというふうに考えるよりも、 人は自分が知らないことを探求すべきであると考えるほうが、よしすぐれた者であり得るし、より勇敢であり、 より怠けないものであり得るのだ。

作図できる=現実世界の問題を解ける=二次方程式の解がある?

最終章で方程式についてどんどん現代の数学の話が出てきて、ガロアのところで置き去りになった。笑 方程式の解の公式と図形、群について述べられているんだけど、結構難しい。紙もペンも用意しないで読んでいたので、 この辺はちゃんと読み返していきたい。その話に続く前に「作図できない」ことを証明するという話が出てきて、 それはかの有名なガウス二次方程式を使って、「加減乗除と平方根の有限回の組み合わせで表せる」つまり、 二次方程式を解く方法で表現出来るものは作図可能だ。と証明したそうだ。

数学は面白いほどに現代社会の問題を解決していっているではないか。この辺から面白さも加速していく。

恋人選びと数学

Gravitation can not be held responsible for people falling in love. Albert Einstein

物理学の天才は頑なに数学で恋愛を表現しなかったけど、表現できるものもあるかもしれない。 本をそのまま引用する。

「恋人選び」の問題がある。恋人の候補がN人いて、1人ずつ順番に面接するときに、最初の(m-1)人の候補とは、 ただ会ってみるだけで、全員断ることにする。そして、m人目になったところで、本気モードのスイッチを入れ、 これまでに面接したどの候補よりも気に入った人が来たら、その人を選ぶことにする。そのときに、 自分がいちばん好きな人を選ぶためには、何人目から本気になったらよいかという問題だ。

これはエキサイティングだと思ってしまった。笑 自分も恋人を探すときに使ってみようと思ったが、冷静に気持ち悪くなって我に返った。笑

でも、良い相手を選ぶときになんの戦略やアイデアもなしに、気分だけで決めるほうがよほど怖くないだろうか? 幸せになる確率が一番高い戦略をとって何が悪いんだろうか?自然科学と倫理の問題な気がするので、この辺にしておこう。

正解は候補者の総数をネイピア数で割ったm=N/e≒0.368×Nで、そのときに成功する確率自身も1/eとネイピア数で表される。

つまり、15人の候補者がいたら、3または4人目から本気で選び始めると、もっともいい相手に会う確率も高い。 言葉にせずに、心の中でお試しあれ。

素数RSA暗号方式と私

素数とは「二種類の因数しか持たない自然数のこと」である。つまり、1と自分自身以外では割れない数だ。 いちばん最初に出会ったのは中学校、悩まされたのは高校、忘れかけた大学、興味が出てきた今頃って感じだ。 大学のときに、公開鍵暗号方式で嫌というほど叩き込まれた気もするけど、今改めて勉強してみると、その美しさがわかってきた。 C言語のプログラミングの授業で、エラトステネスの篩を作ったときに、少し興味が湧いていたが、

数学者は、数の秘密を解き明かすカギが、素数にあると考えている。素数の研究が、整数論の中心的問題の一つになっているのはそのためだ。 …素数の性質を解き明かしながら、純粋数学が現代社会に果たしている役割について考えてみよう。

これをみてもっとワクワクした。また、RSA方式の原理はやっぱりワクワクしたし、なんだ実装できる! って思って成長を感じている。自分は普段インターネットを使って生活している。仕事もしている。 むしろ人生の一部になっている。その中で重要になっている技術が、通信の秘密を守る暗号化の技術だ。

第二次世界大戦でも活躍したドイツ軍の暗号通信機「エニグマ」。ちょうど映画イミテーションゲームでも話題になっていたが、 これを群論を使って解き、戦争の戦況が大きく変わるほど、暗号にとって鍵は重要となる。

数学で鍵をかけて、かけ方はわかるのに、開け方がわからない(厳密に言えば、計算する時間が足りない)方法がある。 それがRSA暗号方式。これには素数が大きく関係している。ポイントになるのは、

ということだ。フェルマーの小定理を一般化したオイラーの定理がこの暗号の基本原理であり、計算は難しくない。 自分が生活の中て無意識に使っている技術が、数学のおかげで成り立っている。 数学は自分の業界では最重要な学問だと言えるかもしれない。

鍵の複合化に必要になる最大公約数を求める、ユークリッド互除法のプログラムは簡単だ。

public int gcd(int x, int y){
  return x % y == 0 ? y * gcd(y, x % y);
}

この計算は再帰呼び出しとなっている。Java再帰計算が得意ではないため、警告がでるかもしれない。 普段の仕事では書かないが、こういうアルゴリズムを書けるようになったのは数学のおかげだ。

ほとんどのJavarは再帰ではなく、繰り返しの条件文で書くのだろう。メモリ効率はいいが、 計算効率は悪いという感覚すら生まれないままに手が動く。Javaの怖いところだ。 この辺は、しっかりとJVMを読んだりしないといけないので、軽率な予想はやめておく。 最近、Javaパフォーマンス買ったので、時間かけて読んでいこうと思います。

www.amazon.co.jp

自分は日々Javaを書いているが、この記事を何度も読み返しては、関数型の勉強、型への理解を深めようとしている。

Javaスクールの危険 - The Joel on Software Translation Project

色あせないし、プログラミングをしていく人生をワクワクさせてくれる記事だ。 この中にあるパーツを一つ一つ埋めていき、もっと問題解決能力を高めていきたい。 (ようやく再帰アルゴリズムを数秒でかけるようになったけどね!)

美しさと数学

式の難しさと形の美しさという章で、

群の複雑さが、幾何学図形の美しさを表していると言える。

とある。その難しさを数学で表現したのがガロアだった。 昨年流行ったノンデザイナーズ・デザインブックでも、 美しさは論理的に表現出来ると主に心理学の先生たちの理論が登場する。それらは突き詰めると脳の計算であり、 脳は数学を用いているとすれば、数学で美しさは表現できるはずだ。

幾何学は芸術に近い。自分はまだ、数式を見て愛したり、美しいと感じるほどではないが、 整然としたリズムの幾何模様は美しく思う。また、カオスが生み出す模様も美しいと感じる。

これらは偶然ではないはずだ。数学が人間の美しいと思う感覚を数字にできるんだ。 ちょっと怖いけど、アナログハックってやつができるきっかけにだってなると思うんだ。(BEATLESS参照)

この辺ももっと勉強しなければ。ノンデザイナーズ〜についてはこのスライドがいい。

speakerdeck.com

本書を読んだけど、まだちゃんと理解しきれなかった部分

高校のときもなんだか理解しにくかったけど、やっぱりまだしっかり理解できていない。 伸ばすとか回転とか、言わんとしていることはわかるし、想像上の数なんだけど実数を表現できるし、 もっと理解が必要。しっかり勉強し直したい。

同期の数学好きから初めて学んだ言葉だったのだけど、どうにもこうにも興味が湧いてきている。 ここもちゃんと勉強せねば。良い本を探したい。


この本は前回読んだ数学の本の内容と被る部分も多かったけど、最後のほうが無限というものの理解の話であったか、 方程式の解が求まるかどうかの話であったかが大きな違いだったように感じた。また、どちらの本にも、 ガウス先生は登場して「なんだ神か」みたいな雰囲気があること、ユークリッドの「原論」が多く参照されて、 幾何学の発展やん次元の幾何の問題、公理と定理から導く推論のような論理数学の話をする点において共通だった。

あと、最後の付録に語彙索引が付いているのはすごく嬉しい構成。

本書の途中で登場したチューリングの「停止判定ができるプログラムが存在する」、 という自己言及のパラドクスの証明は、型プログラミングでのヒントになるのでこの辺を別の本で補っていきたい。 抽象的な論調なので結構メタ視点鍛えられるからいい。ふとしたときにメタ視点は重要。 また、理解しきれなかった複素数群論についての本も読もう。他にもRSA暗号方式のところがエキサイティングだったので、 この次はその数式、プログラムできますか?を読む。 やっぱ結城先生の数学ガールシリーズ読まないとダメかなぁ。

また新しい魂を探して。読書に更けよう。速読は禁物だ。