Hero Image
ジョン・フォン・ノイマンの生涯

年表 190312 月 28 日、銀行家の息子としてブダペストに生まれる。 1913父が貴族の称号を受け、息子は「フォン・ノイマン」となる。 1921ブダペストのルター派ギムナジウムを卒業。ユージン・ウィグナーと同じ学校で学んだ。 192319 歳で順序数の定義を発表する。 1926チューリッヒで化学工学の学位、ブダペストで数学の博士号を得る。 1927ベルリン大学で最年少の Privatdozent(私講師)となる。 1928ゲーム理論の基礎となるミニマックス定理を発表する。 1930プリンストンに移る。1933 年には高等研究所の最初の教授の一人となる。 1932『量子力学の数学的基礎』を出版する。 1943ロスアラモスで原子爆弾計画に加わる。 1944オスカー・モルゲンシュテルンとの共著『ゲームの理論と経済行動』を出版する。 1945プログラム内蔵式計算機を記述した EDVAC 報告書を書く。 1946スタニスワフ・ウラムとともにモンテカルロ法を開発する。 1952IAS の計算機が稼働を始める。 1955原子力委員会の委員に任命される。がんにかかっていることを知る。 19572 月 8 日、ワシントンで死去。53 歳だった。 ◀ 前へ 旅をたどる 次へ ▶ 1903–1921 ブダペスト12 月 28 日、銀行家の息子として生まれる。ルター派のギムナジウムで学び、ユージン・ウィグナーと同窓になる。 1921–1923 ベルリン父の強い勧めで化学を学びながら、ブダペストの数学の博士課程にも籍をおく。 1923–1926 チューリヒ工科大学で化学工学の学位をとる。ジョージ・ポリアの授業に出て、ポリアは後に、彼が唯一恐れた学生だったと語る。 1926–1927 ゲッティンゲンダフィット・ヒルベルトのもとで、数学の基礎と新しい量子力学の基礎を研究する。 1927–1930 ベルリン大学で最年少の私講師になる。1928 年にミニマックス定理を発表する。 1930–1957 プリンストン大学の教授となり、1933 年からはアインシュタインやゲーデルとともに高等研究所の教授になる。そこで IAS 計算機を作る。 1943–1955 ロスアラモス原子爆弾計画の顧問を務める。ウラムとともにモンテカルロ法を作る。 1955–1957 ワシントン原子力委員会の委員となる。1957 年 2 月 8 日、ウォルター・リード病院で癌のため亡くなる。 地図を見るには JavaScript を有効にしてください。各地点は下の一覧にあります。 ブダペストからワシントンへ。チューリヒ、ゲッティンゲン、ベルリン、プリンストン、ロスアラモスを経て。 地図:© OpenStreetMap 協力者

Hero Image
アラン・チューリングの生涯

年表 19126 月 23 日、ロンドンに生まれる。両親はインドに住んでいる。 1926シャーボーン校の寄宿生となる。 1930親友クリストファー・モーコムが亡くなる。 1931ケンブリッジのキングズ・カレッジに入る。 193522 歳でキングズのフェローに選ばれる。 1936「計算可能数について」を書く。プリンストンへ行く。 1938プリンストンで博士号。ケンブリッジに戻る。 1939ブレッチリー・パークでエニグマの解読に取り組みはじめる。 1940最初の電気機械式ボンブが動きだす。 1945国立物理学研究所に移り、ACE を設計する。 1948マンチェスター大学に移る。 1950模倣ゲームの論文を発表する。 1952形態形成の理論を発表する。同性愛を理由に有罪となる。 19546 月 7 日、ウィルムズローで亡くなる。41 歳。 ◀ 前へ 旅をたどる 次へ ▶ 1912 ロンドン6 月 23 日、メイダ・ヴェールに生まれる。両親はインドに住み、イングランド南部の里親のもとで育てられる。 1926–1931 シャーボーン寄宿学校でクリストファー・モーコムと出会う。1930 年のこの友人の死が、心と物質の関係を考えるきっかけになる。 1931–1936 ケンブリッジキングズ・カレッジで学び、22 歳でフェローとなり、「計算可能数について」を書く。 1936–1938 プリンストン別の道筋で同じ結果に達していたアロンゾ・チャーチのもとで博士号を取る。 1939–1945 ブレッチリー・パーク戦争中、ドイツ海軍のエニグマを解読する部門を率い、電気機械式のボンブを設計する。 1945–1947 テディントン国立物理学研究所で、プログラム内蔵式の計算機 ACE を設計する。 1948–1954 マンチェスター最初期の計算機の一つをプログラムし、模倣ゲームを提案し、形態形成を研究する。1954 年 6 月 7 日、近くのウィルムズローで亡くなる。 地図を見るには JavaScript を有効にしてください。各地点は下の一覧にあります。 ロンドンからマンチェスターへ。プリンストンとブレッチリー・パークを経て。 地図:© OpenStreetMap 協力者

Hero Image
チューリング機械:鉛筆とテープと規則で計算する

1936 年には計算機というものはなかった。英語の computer は、保険会社や天文台や役所で、鉛筆と紙で計算することを職業とする人を意味していた。チューリングはこの人から出発した。計算するとき、人は本当は何をしているのかを問い、本質的でないものをすべて取り除いていった。 計算する人から残るもの 論文「計算可能数について」のチューリングの推論は、ほとんど単純化の一覧である。 紙は、マス目に区切られたテープに置き換えられる。方眼紙の上の計算は、マスごとに一行に写せるからである。 各マスには、有限の一覧から選んだ一つの記号が入る。数字、文字、空白。 計算する人は一度に少しのマスしか見ない。一マス見れば十分である。いくつかを見るというのは、一つを見て、次に隣を見ることだからである。 計算する人には「足し算をしている」「繰り上げている」といった心の状態がある。そうした状態は有限個しかない。 各ステップは、現在の状態と読んでいる記号だけで決まる。ステップとは、記号を書き、一マス左か右に動き、状態を変えることである。 残るのは一つの機械である。テープ、読み書きするヘッド、そして規則の表。表の各行はこう言う。「この状態でこの記号を読んだら、これを書き、そちらへ動き、この状態に移れ」。 1 を足す機械 二進法で書かれた数に 1 を足す機械をつくってみよう。手で $1011+1$ を計算するときは右から左へ進む。最後の 1 は 0 になって「1 繰り上がる」。その前の 1 も 0 になって繰り上がる。次の 0 は 1 になり、計算は終わる。結果は $1100$、つまり $11+1=12$ である。 機械はまさにそれを行う。必要な状態は「足す」一つと、終わりの状態「停止」だけである。ヘッドは最後の桁から始める。 状態 読む 書く 動く 次の状態 足す 1 0 左へ 足す 足す 0 1 動かない 停止 足す 空白 1 動かない 停止 一行めは繰り上がりである。1 を 0 に替えて左へ進む。二行めは 0 を見つけたら計算を終える。三行めは、$111+1=1000$ のように桁がすべて 1 だった場合を扱う。ヘッドは数の左の空白に着き、そこに新しい 1 を書く。 この対話型の図を使うには JavaScript を有効にしてください。議論の全体は本文にあります。

Hero Image
停止問題:どの機械にも答えられない問い

1928 年、ドイツのダフィット・ヒルベルトは、Entscheidungsproblem、すなわち「決定問題」と呼ぶ課題を出した。論理の言葉で書かれたどんな数学の命題についても、それが真か偽かを有限の時間で答える機械的な手続きを見つけよ、というものである。もしそれがあれば、数学は組み立てラインになる。問いを書き込み、ハンドルを回せばよい。 ヒルベルトは答えは「ある」だと信じていた。八年後、チューリングとアメリカのアロンゾ・チャーチが、それぞれ別の道筋で、答えは「ない」ことを示した。 もっと簡単な問い チューリングはヒルベルトの問いに正面から挑んだのではなかった。まず、どの機械にも答えられない、もっとささやかな問いを見つけた。今日ではこう語られる。 プログラムと入力が与えられたとき、そのプログラムはいつか停止するか、それとも永遠に動きつづけるか。 すぐにわかる場合もある。数に 1 を足すプログラムはすぐ止まる。出口のないまま $1,2,3,\ldots$ と数えるプログラムはけっして止まらない。しかし、ごく短いのに誰も答えを知らないプログラムもある。たとえば次のプログラムは、2 より大きいどの偶数も二つの素数の和である、という有名なゴールドバッハ予想を調べる。 $n=4$ から始める。 $n$ が二つの素数の和でなければ、停止する。 そうでなければ、$n$ に 2 を足して 2 に戻る。 このプログラムが停止するのは、予想が誤りであるとき、かつそのときに限る。それが止まるかどうかを知ることは、1742 年から未解決の問題を解くことである。プログラムが止まるかどうかを判定する一般的な方法があれば、この問題も、ほかの多くの問題も一挙に片づく。 証明 背理法で、その仕事をする機械 $P$ があるとしよう。$P$ はプログラム $M$ の記述と入力 $x$ を受け取り、つねに有限の時間でこう答える。 $$P(M,x)=\begin{cases}\text{「止まる」}&M\text{ が入力 }x\text{ で止まるとき},\\ \text{「止まらない」}&M\text{ が永遠に動くとき}.\end{cases}$$$P$ を使って、新しい機械、あまのじゃくの $D$ をつくる。$D$ はプログラム $M$ の記述を受け取り、次のように動く。 $M$ が自分自身の記述を入力として受け取ったらどうなるかを $P$ に尋ねる。 $P$ が「止まる」と言ったら、$D$ は無限ループに入る。 $P$ が「止まらない」と言ったら、$D$ は停止する。 ここで致命的な問いが来る。$D$ が自分自身の記述を受け取ったら、どうなるか。 $D(D)$ が止まるなら、$P$ は $D(D)$ について「止まらない」と答えたことになり、$P$ はまちがえた。 $D(D)$ が止まらないなら、$P$ は「止まる」と答えたことになり、$P$ はやはりまちがえた。 どちらにしても $P$ はまちがえる。したがって機械 $P$ は存在しない。$\blacksquare$

Hero Image
計算可能数:ほとんどの数は計算できない

1936 年の論文の題名が語っているのは機械ではなく、数である。「計算可能数について」。チューリングはこう定義した。ある実数のすべての桁を、一つずつ、けっしてまちがえずに書き出す機械が存在するとき、その実数は計算可能である。 どの数が計算可能か 学校で出てくる数は、ほとんどすべて計算可能である。 分数: $\frac17=0.142857142857\ldots$ 機械は筆算で割り算をし、その循環を永遠にくり返す。 平方根: $\sqrt2=1.41421356\ldots$ 次の桁を求めるために、機械は 0 から 9 までを試し、付け加えても 2 乗が 2 を超えない最大の数字を選ぶ。 $\pi$ と $e$: いくらでも近づける級数がある。たとえば $e=1+\frac1{1!}+\frac1{2!}+\frac1{3!}+\cdots$ であり、それを使えば機械は遅かれ早かれどの桁でも書き出せる。 「ちゃんとした」数はすべて計算可能であるように思える。そしてここで驚きが来る。ほとんどどれも計算可能ではないのである。 機械は数え上げられる どのチューリング機械も、有限の規則の表で記述される。その表は決まった文字を使った文章として書けるので、一つの整数としても書ける。チューリングはそれを記述数と呼んだ。記号を一つずつ数字に置き換えればよい。 だから機械は一覧に並べられる。記述数がいちばん小さい機械、その次、というように。どの機械も記述しない数はたくさんあり、どんな数も書かない機械もたくさんあるが、それはかまわない。大事なのは、計算可能数は一覧 $c_1,c_2,c_3,\ldots$ に収まるということである。専門用語では、それらは可算である。 実数は数え上げられない 1891 年、ゲオルク・カントールは、実数は一覧に収まらないことを示した。証明は対角線である。0 と 1 のあいだのすべての実数の一覧があるとしよう。 $$\begin{aligned} r_1&=0.\underline{5}\,1\,3\,9\ldots\\ r_2&=0.2\,\underline{7}\,0\,4\ldots\\ r_3&=0.8\,8\,\underline{1}\,6\ldots\\ r_4&=0.3\,0\,2\,\underline{2}\ldots \end{aligned}$$対角線上の数字を取り替えて数 $d$ をつくる。5 があれば 6 にし、ほかの数字なら 5 にする。ここでは $d=0.6555\ldots$ である。この $d$ は $r_1$ と 1 桁めで、$r_2$ と 2 桁めで、$r_n$ と $n$ 桁めで異なる。一覧に載っていない。したがって、どんな一覧もすべての実数を含むことはできない。 二つの事実を合わせよう。計算可能数は一覧に収まり、実数は収まらない。どの機械からもはずれる実数が残り、しかもそれが圧倒的多数なのである。実数を無作為に一つ選べば、それが計算可能である確率はゼロである。 定義できるのに計算できない数 計算できない数に名前をつけることはできる。$0.d_1d_2d_3\ldots$ と書き、一覧の $n$ 番めの機械が空白のテープで止まるなら $d_n=1$、止まらないなら $d_n=0$ とする。この数は完全に定義されている。しかし、もしある機械がその桁を書き出せたなら、その機械は停止問題を解いてしまうことになり、それは不可能である。存在しているのに、誰もけっして書き出すことのない数なのである。 練習:対角線を使う一覧は $0.1234\ldots$、$0.5555\ldots$、$0.9090\ldots$、$0.3141\ldots$ で始まる。「5 は 6 に、それ以外は 5 に」という規則を使って、対角線の数の最初の 4 桁を書け。 対角線は $1,5,9,1$。取り替えると $1\to5$、$5\to6$、$9\to5$、$1\to5$。数は $0.5655\ldots$ で、四つの数のどれとも対角線の桁で異なる。

Hero Image
フォン・ノイマン型アーキテクチャ:EDVAC 報告書

1945 年にペンシルベニア大学で完成した ENIAC は、当時世界最速の電子計算機だった。一万八千本近い真空管を使い、一秒間に五千回の足し算をした。だが計算を変えるには、パネルの上のケーブルとスイッチを配線し直さなければならず、それはプログラマーのチームが何日もかける仕事だった。 ENIAC の制御パネルを操作する二人のプログラマー。ペンシルベニア大学ムーア・スクール、1946 年ごろ。United States Army · Wikimedia Commons · パブリックドメイン ENIAC の技術者 J・プレスパー・エッカートとジョン・モークリーは、すでに次の機械 EDVAC を計画していた。そこではプログラムが記憶装置に保持される。フォン・ノイマンは彼らの会議に出席するようになり、1945 年 6 月、「器官」や「ニューロン」について語る抽象的な、ほとんど生物学的な言葉で、グループの考えを整理した文書を書いた。 『EDVAC に関する報告書の第一草稿』の表紙。日付は 1945 年 6 月 30 日。John von Neumann · Wikimedia Commons · パブリックドメイン 計算機の部分 『EDVAC に関する報告書の第一草稿』は、次のものからなる計算機を記述している。 計算を行う演算装置 命令を一つずつ読み、実行させる制御装置 数と命令を同時に保持する記憶装置。どちらも二進数字の列として書かれる 入力と出力の装置 決定的な新しさは 3 番目にある。プログラムがデータと同じ記憶装置に保持されるので、計算を変えるとは記憶装置の中の数を変えることであり、配線を変えることではない。しかもプログラムは自分自身の命令を計算し、書き換えることさえできる。これは 1936 年のチューリングの万能機械のアイデアを、真空管と水銀遅延線で実現したものである。 四行のプログラム 0 から 7 まで番号のついた八つの位置をもつ記憶装置と、アキュムレータと呼ばれるレジスタを考えよう。 位置 内容 意味 0 LOAD 5 位置 5 の数をアキュムレータに入れる 1 ADD 6 位置 6 の数をアキュムレータに足す 2 STORE 7 アキュムレータを位置 7 に格納する 3 HALT 終了 5 40 データ 6 2 データ 7 0 結果 制御装置は位置 0 から始め、実行しては次へ進む。三歩の後、位置 7 には $42$ が入っている。命令とデータは隣り合って住んでいる。STORE 1 という命令が二番目の命令を上書きするのを妨げるものは何もない。そして、それこそが、あるプログラムが別のプログラムを生成できる理由なのだ。

Hero Image
万能機械:プログラムもデータである

どのチューリング機械も一つのことしかしない。1 を足す機械は 1 を足し、$\frac17$ を書く機械は $\frac17$ を書く。別の計算をするには別の機械が要る。1936 年には、それが当たり前だった。機械式計算機も、パンチカードの集計機も、潮汐予測機も一つの仕事のためにつくられ、仕事を変えるには機械を替えるか配線をし直すしかなかった。 同じ論文で、チューリングはその必要がないことを示した。 機械を読む機械 どんな機械の規則の表も、文章としてテープに書くことができる。そこでチューリングは特別な機械 $U$、万能機械を記述した。$U$ は次のように動く。 テープの上で、機械 $M$ の記述と、そのあとに続く入力 $x$ を受け取る。 記述の中から、$M$ の現在の状態と、$M$ が読んでいるはずの記号に対応する規則を探す。 テープのうち $M$ のテープを表す部分でその規則を実行し、新しい状態を書きとめて 2 に戻る。 こうして $U$ は、表さえ与えられれば、どんな機械でも一歩ずつまねする。記号で書けば、 $$U(\langle M\rangle,x)=M(x)\quad\text{すべての機械 }M\text{ とすべての入力 }x\text{ について}.$$代償は遅さである。$M$ の一歩ごとに、$U$ は探したり写したりするのに何歩もかかる。しかし $U$ が計算できるものは、すべての機械を合わせて計算できるものとちょうど同じである。 メモリの中のプログラム 実際上の帰結は、プログラム内蔵という考え方である。仕事ごとに機械をつくるかわりに、機械は一台だけつくり、仕事はデータとして、数を入れるのと同じメモリに入れる。仕事を変えることは、文章を変えることになる。携帯電話でアプリを開くときに起きているのはまさにそれである。装置はいつも同じで、変わるのはそれが読む記述のほうである。 さらに、プログラムがデータなら、プログラムがほかのプログラムを読み、書き、書き換えることもできる。コンパイラーやオペレーティングシステムがしているのはそれであり、ある意味では、停止問題の証明で自分自身の記述を受け取った機械 $D$ もそうである。 パイロット ACE。チューリングの設計を縮小した版で、国立物理学研究所でつくられ、1950 年に動きだした。現在はロンドンの科学博物館にある。Philafrenzy · Wikimedia Commons · CC BY 2.0 紙から金属へ 戦後の 1945 年から 1946 年にかけて、チューリングは国立物理学研究所で、プログラム内蔵式計算機 ACE(自動計算機関)の完全な設計を書いた。大胆な設計だった。水銀遅延線のメモリ、毎秒百万パルスの速さ、そして機械が自分の命令を書き換えるようにプログラムできるという考えまで含まれていた。官僚主義と技術者不足のせいで建造は遅れた。縮小版のパイロット ACE がようやく動いたのは 1950 年で、しばらくのあいだ世界で最も速い計算機の一つだった。 その間、マンチェスターでは、フレデリック・ウィリアムズとトム・キルバーンが、1948 年 6 月 21 日、ベビーというあだ名の機械で、電子メモリに保存した最初のプログラムを動かした。チューリングは数か月後にマンチェスターに来て、それに続く機械の仕事にかかわった。

Hero Image
マージソート:併合して並べる

リストを並べ替えることは、計算機が最もよく行う仕事の一つである。名簿の名前、検索結果の価格、選挙の結果。1945 年、EDVAC がまだ紙の上にしかなかったころ、フォン・ノイマンは、報告書の機械が算術以外の仕事にも役立つことを示そうとして、リストを整列し併合するプログラムを手で書いた。これはプログラム内蔵式計算機のために書かれた最初期のプログラムの一つであり、彼が使った方法、今日マージソートと呼ばれるものは、今も最も広く使われる方法の一つである。 整列した二つのリストを併合する 基本の手順は、すでに順に並んだ二つのリストを併合することだ。それぞれの先頭の要素を見て、小さいほうを取り出し、これを繰り返せばよい。 $$[2, 5, 9] \text{ と } [3, 4, 10] \;\longrightarrow\; [2, 3, 4, 5, 9, 10].$$比較を一回するごとに、数が一つ正しい場所に収まる。合わせて $n$ 個の要素をもつ二つのリストを併合するには、高々 $n - 1$ 回の比較で足りる。 分割統治 任意のリストを並べるために、フォン・ノイマンはそれを要素 1 個ずつのブロックに分け(これらはもう整列している!)、隣どうしを併合して 2 個のブロックに、次に 4 個、8 個と進めた。 この対話型の図を使うには JavaScript を有効にしてください。議論の全体は本文にあります。 $n = 2^k$ 個の要素があれば、$k = \log_2 n$ 回のラウンドがあり、各ラウンドの比較は高々 $n$ 回である。合計は高々 $$n \log_2 n.$$最小の要素を探し、次に二番目に小さいものを探し、と続ける素朴な方法では、$\frac{n(n-1)}{2}$ 回の比較が必要になる。$n = 16$ なら、$120$ 回対高々 $64$ 回である。百万の名前なら、およそ二千万回の比較と五千億回の比較の差になる。数秒対数日だ。 方眼紙の上のプログラム 整列についてのフォン・ノイマンの 1945 年の手稿は、ドナルド・クヌースによって再発見・分析され、『The Art of Computer Programming』で紹介されている。EDVAC はまだ存在しなかったので、フォン・ノイマンはプログラムが何ステップかかるかを手で計算し、この機械は当時の専用機械である IBM のパンチカード分類機よりも速く整列できる、と満足げに結論した。 練習:比較の回数を数える$[2, 5, 9]$ と $[3, 4, 10]$ を併合し、比較の回数を数えよ。 $2$ 対 $3$:$2$ を取り出す。$5$ 対 $3$:$3$ を取り出す。$5$ 対 $4$:$4$ を取り出す。$5$ 対 $10$:$5$ を取り出す。$9$ 対 $10$:$9$ を取り出す。最初のリストが尽きたので、$10$ は比較なしで入る。6 個の要素に対して $5$ 回の比較で、上限 $n - 1 = 5$ の範囲内である。

Hero Image
エニグマ:1.59×10²⁰ 通りの鍵と一つの欠陥

アメリカの国家安全保障局の国立暗号博物館に展示されている、ローター三つのエニグマ。上がローター、中ほどがランプ、下がキーボード、手前がプラグボード。National Security Agency · Wikimedia Commons · パブリックドメイン エニグマは、木の箱に入ったタイプライターのように見えた。操作員がキーボードで文字を押すと、ランプ盤で別の文字が光る。二人めの操作員が光った文字を書きとめ、その文字列がモールス信号で無線送信された。受け手の側では、同じように設定した同じ機械で操作員が暗号文を打ち込み、ランプでもとの文を読んだ。 キーとランプのあいだで、電流は迷路を通った。プラグボード、中で配線が交差した三つのローター、電流を送り返すリフレクター、ふたたび三つのローター、そしてふたたびプラグボード。しかもキーを押すたびに最初のローターが一つ回り、迷路全体が変わった。 鍵を数える ドイツ軍がエニグマを信頼したのは、設定の可能な数の多さのためだった。1939 年の陸軍型について、パスカルが教えてくれた組合せ論で数えてみよう。 ローター。 5 個入りの箱から 3 個を選び、順序も区別する。 $$5\cdot4\cdot3=60.$$初期位置。 各ローターは 26 文字のどれかから始まる。 $$26^3=17\,576.$$プラグボード。 10 本のケーブルが文字を二つずつつなぎ、入れ替える。26 文字から 10 組をつくる方法は何通りか。26 文字を $26!$ 通りのどれかの順に一列に並べ、最初の 20 文字で二つずつ組をつくる。残りの 6 文字はつながず、その順序は関係ないので $6!$ で割る。10 組の順序も関係ないので $10!$ で割る。各組の中の順序も関係ないので $2^{10}$ で割る。結果は $$\frac{26!}{6!\cdot10!\cdot2^{10}}=150\,738\,274\,937\,250.$$合計。 かけ合わせると $$60\cdot17\,576\cdot150\,738\,274\,937\,250\approx1.59\times10^{20}.$$ローターのリング設定を数えなくても、約 1.59×10²⁰ 通りの鍵がある。毎秒百万通り試しても、すべてを試すにはおよそ五百万年かかる。 欠陥 リフレクターには実用上の利点があった。同じ設定のまま、機械で暗号化も復号もできたのである。しかし生まれつきの欠陥ももたらした。電流はいつも別の道を通って戻ってくるので、どの文字も自分自身には暗号化されない。A はけっして A にならない。 ささいなことに見えるが、これが決定的だった。暗号解読者たちは、多くの通信に予想できる語が含まれていることを知っていて、それを crib(カンニング)と呼んだ。6 時の天気予報は WETTERVORHERSAGE で始まり、多くの報告は KEINE BESONDEREN EREIGNISSE、「特記事項なし」と書かれていた。クリブが暗号文のどこにあるかを見つけるには、それを暗号文に沿ってずらしていき、どこかの文字が真下の暗号文の文字と一致する位置をすべて捨てればよかった。 Q F Z W R W I K T Y R E S X B F O G K U H Q W E T T E R V O R H E R S A G E ← S の上に S:ありえない W E T T E R V O R H E R S A G E ← 一致なし:ありうる 最初の位置では、クリブの S が暗号文の S の上に来てしまうが、エニグマはけっしてそうしない。この位置は捨てられる。4 文字先では、どの文字も一致せず、この位置は候補として残る。

Hero Image
モンテカルロ法:サイコロを振って計算する

1946 年、ロスアラモスでのフォン・ノイマンの同僚、ポーランドの数学者スタニスワフ・ウラムは脳炎から回復する途中で、一人トランプをして時間をつぶしていた。彼は、一回のゲームが上がる確率はどれくらいだろうと考えた。組合せ論で求めようとすると、絶望的に複雑だった。だが別の方法があった。何百回もやってみて、何回上がったかを数えるのだ。計算機があれば、何千回もできる。 ウラムがこのアイデアをフォン・ノイマンに話すと、彼はすぐにその射程を見てとった。同じ手が、ロスアラモスで二人が取り組んでいた問題、つまり爆弾や原子炉の中の中性子の経路にも使える。中性子は一つ一つ、ランダムにそらされ、吸収され、あるいは増殖する。方程式を解く代わりに、何千もの中性子をシミュレートし、それぞれに何が起こるかをくじで決め、平均をとればよい。ニコラス・メトロポリスは、ウラムのおじが賭けをしに通っていたモンテカルロのカジノにちなんで、この方法に名をつけた。 FERMIAC を手にするスタニスワフ・ウラム。FERMIAC はエンリコ・フェルミの小さな台車で、手でランダムに選んだ中性子の経路を紙の上に描いた。機械仕掛けのモンテカルロである。Los Alamos National Laboratory · Wikimedia Commons · パブリックドメイン 1948 年、最初のシミュレーションが ENIAC の上で走った。コードの多くを書いたのは、フォン・ノイマンの妻で、歴史上最初期のプログラマーの一人であるクラーラ・ダーン・フォン・ノイマンだった。 ランダムな点で π を計算する 最も簡単な例はこうだ。$x$ と $y$ がともに $0$ と $1$ の間にある点 $(x, y)$ をランダムに選ぶ。点が四分円 $x^2 + y^2 \le 1$ の内側に落ちる確率は面積の比、$\frac{\pi/4}{1} = \frac{\pi}{4}$ である。したがって $$\pi \approx 4 \times \frac{\text{内側の点の数}}{\text{選んだ点の数}}.$$ この対話型の図を使うには JavaScript を有効にしてください。議論の全体は本文にあります。 推定はゆっくりとしか良くならない。典型的な誤差は $\frac{1}{\sqrt{n}}$ のように減る。小数を一桁増やすには百倍の点が必要だ。$\pi$ を計算するには、はるかに良い方法がある。だが、変数の多い問題、たとえばエネルギー、方向、衝突の種類をともなう三次元の中性子の経路では、モンテカルロ法がしばしば唯一可能な方法になる。その誤差が次元の数によらないからである。 偶然を製造する 計算機は決定論的な機械である。「ランダムな」数はどこから来るのか。1949 年、フォン・ノイマンは平方採中法を提案した。四桁の数をとって二乗し、結果を八桁で書いて、真ん中の四桁をとる。それが次の数である。彼は、これが本当のランダムではないことを十分に承知していた。 算術的な方法で乱数字をつくろうと考える者は、言うまでもなく、罪の状態にある。 — ジョン・フォン・ノイマン「乱数字に関連して用いられる種々の技法」(1951) この数列はやがて繰り返すか、ゼロに落ちる。だが速く、しかも結果を再現して計算を確かめることができた。今日ははるかに良い生成法が使われているが、フォン・ノイマンの原則は生きている。生成法に求めるのは本当のランダムさではなく、問題が必要とする統計的検定に通ることなのだ。 練習:平方採中法$1234$ から始めて、平方採中法で数を三つつくれ。 $1234^2 = 1\,522\,756$、八桁で $01522756$ と書くと、真ん中は $5227$。$5227^2 = 27\,321\,529$、真ん中は $3215$。$3215^2 = 10\,336\,225$、真ん中は $3362$。数列は $1234, 5227, 3215, 3362, \ldots$ と始まる。

Hero Image
模倣ゲーム:機械は考えることができるか

「機械は考えることができるか」という問いを考察することを提案する。 — アラン・チューリング「計算する機械と知性」(1950) チューリングが 1950 年に哲学誌『マインド』に発表した論文は、こう始まる。そしてすぐ次の文で、彼はこの問いをあきらめる。答えるには「機械」と「考える」を定義しなければならず、どんな定義も言葉をめぐる終わりのない議論になってしまうからである。チューリングはこれを、検証できるという利点をもつ別の問いに置き換えることを提案する。 ゲームの規則 もとのゲームには三人が参加する。男性、女性、質問者で、それぞれ別の部屋にいる。質問者は書いたメッセージだけでほかの二人とやりとりし、どちらが男性でどちらが女性かを見抜かなければならない。男性は質問者をだまそうとし、女性は助けようとする。 さて、男性を機械に置き換えよう。問いはこうなる。参加者の一人が機械のとき、質問者は同じくらいの頻度でまちがえるか。質問者が人と区別できないほど機械がうまく会話するなら、それが「本当に」考えているかという議論は脇に置こう、とチューリングは提案する。これが模倣ゲームであり、今日ではチューリング・テストと呼ばれている。 論文には会話の例まである。「34957 に 70764 を足せ」という問いに、機械は 30 秒ほど待って「105621」と答える。正しい答えは 105721 である。論文の先のほうでチューリングは、このゲームのうまい機械は、人間らしく見せるために、ときどきわざと計算をまちがえるだろうと説明している。 予言 チューリングは、当時の機械がテストに合格するとは言わなかった。数を使って予言をしたのである。 およそ五十年後には、記憶容量が約 10⁹ の計算機をプログラムして、平均的な質問者が五分間の質問のあとで正しく見分ける見込みが 70% を超えないほど、模倣ゲームをうまくこなさせることができるようになると私は信じている。 — アラン・チューリング「計算する機械と知性」(1950) 「$10^9$」は二進数字、つまりビットでの容量である。今日の言葉でいえば、$10^9$ ビットは $\frac{10^9}{8}=1.25\times10^8$ バイト、約 125 メガバイトで、どの携帯電話のメモリより小さい。チューリングはメモリについてはよく当て、時期については控えめすぎた。機械との説得力のある会話が現れたのは 2020 年代になってからで、それを実現した大規模言語モデルは、彼が想像したより何千倍も多いメモリを使っている。 反論 論文の半分は反論への答えにあてられている。いくつか挙げよう。 **神学的反論:**考えることは不死の魂のはたらきであり、神は魂を人間に与え、機械には与えなかった。チューリングは、神が望めば機械にも魂を与えられるだろうと答える。 数学的反論:チューリングの定理やゲーデルの定理は、どの機械にも答えられない問いがあることを示している。チューリングはそれを認めつつ、人間に似たような限界がないと考える根拠は何もないと指摘する。 **ラブレス夫人の反論:**1843 年、エイダ・ラブレスは、バベッジの解析機関は「何かを生み出すことをまったく意図していない。私たちが命じ方を知っていることなら何でもできる」と書いた。チューリングは、機械はしばしば自分を驚かせると答え、学習できる機械なら、プログラマーが予見しなかったことをするだろうと言う。 この最後の答えが最も予言的である。論文の終わりでチューリングは、大人の脳をプログラムするかわりに「子どもの機械」をプログラムし、報酬と罰で教育するほうがよいだろうと示唆している。わずか数行の中に、機械学習の考え方がある。 ロボットではないことを証明する CAPTCHA、つまりウェブサイトが表示する、ゆがんだ文字や信号機の写真の入った小さな枠は、逆向きのチューリング・テストである。この名前は、英語の「コンピューターと人間を区別するための、完全に自動化された公開チューリング・テスト」の頭字語である。テストを出すのは機械で、人間であることを証明しなければならないのはあなたのほうである。 練習:10⁹ ビットはどれくらいか1 ページ 2000 文字、1 文字 8 ビットとすると、$10^9$ ビットに 500 ページの本は何冊入るか。 1 冊は $500\cdot2000\cdot8=8\times10^6$ ビット。$10^9$ ビットには $\frac{10^9}{8\times10^6}=125$ 冊入る。チューリングは、小さな図書館ほどのメモリがあれば人間のように会話するには足りると考えていた。 練習:70% とは何を意味するか質問者が二人の参加者のどちらかを当てずっぽうで選ぶとしたら、当たる確率はいくらか。「70% を超えない」とはどういう意味か。 当てずっぽうなら 50% の確率で当たる。「70% を超えない」とは、五分たっても平均的な質問者がゲームの少なくとも 30% でまちがえる、ということである。機械はすべての人ではないにせよ、多くの人をだます。