『三体』というSF小説をおススメしたけれど、『三体』は長い。
もっとお手軽にスナック感覚で同作者のSFを読んでみたくはないかな?
そういうわけで短編『円』についての記事を書いた。
今回は 旗振り人間計算陣形の解説編 その2だ。
その1はこちら↓
さて、というわけで前回は1+1を計算して終わって…
終わってないじゃん!!
1+1の話書いてたはずなのに、1+1の計算に入れてないんだけど!?
まあいい。
今回はその続きで1+1を計算していこう。
さて前回は兵を用いて数字を表す方法を扱った。
バイナリという「黒」と「白」の旗だけで数字を表す世界での やり方だ。
このバイナリ世界における「1桁の数字の足し算」を考えよう。
バイナリ世界では1桁の足し算の組み合わせはそう多くない。
パターンは4つだけだ。
0+0(白+白)
0+1(白+黒)
1+0(黒+白)
1+1(黒+黒)
これを計算させる。
どう計算させるかは一旦おいておいて、答えを表示することを考えよう。
兵士2人が示す数字の足し算は兵士が何人いれば答えを表せるか?
1人いれば二通りまでは答えを示せる。
計算パターンは4つで答えは0、1、2の三通り。
おっと三通りだと一人だけでは答えを表しきれないな…
というわけで、X+Y=Z(ただしXとYは一桁の整数とする)を表現する場合…
「計算係」をどうするかは置いておいて、少なくとも4人の兵士が必要だとわかる。
すなわち「Xの数字を示す兵士」「Yの数字を示す兵士」の二人と
「二人一組で、Zを表す兵士たち」だ。
『円』の荊軻に習って順に「入力一」「入力二」「出力一」「出力二」と呼称しよう。
さて、4パターンの計算結果表示は以下のようになる。
まず0+0=0
入力一は足し算の左側担当だった。
0を表す白旗を掲げよう。
入力二は足し算の右側担当だった。
同じく白旗を挙げさせよう。
答え担当の二人も0だ。
0+0=0
白+白=白白
次に0+1=1と1+0=1を考えよう。とはいえ出力一と出力二の上げる旗が入れ替わってるだけで両方にたようなものだ。
0+1=1
白+黒=白黒
1+0=1
黒+白=白黒
最後にいよいよ1+1だ…
1+1=10
黒+黒=黒白
これで4パターンだ。
ここまでくれば「足し算に数字を書き込むこと」と「答えを表現させること」が可能になったわけだ。
肝心の「計算係」は何人必要で、どんなことをするんだろうか?
実はその答えは既に小説にて描かれている。
「計算係」などいらないのである。
強いていうなら「答えを表示する兵」つまり「出力一」「出力二」こそが、
計算を瞬時に終えているのである。
そう、それこそが《計算陣形》の力なのだ。
ではどのように計算するか見ていこう。
まず計算陣形を取り仕切る始皇帝が計算すべき式を命じる。
つまり4パターンのどれを計算するかを考えるのだ。
ここでは試しに1+0を計算させよう。
始皇帝「1+0を計算せよ!」
荊軻「入力一は黒い旗をあげろ! 入力二は白い旗を挙げよ!」
その後、出力一および出力二は事前に訓練された通りに旗をあげる。
誰かに命令されることなく、自身の担当する陣形をしっかり覚えておくだけでいいのだ。
出力一が答えの一桁目、出力二が答えの二桁目を表示するとして、
事前に二人にはそれぞれこう命じておけばよい。
荊軻「出力一、君はここに立って入力一と二を見るんだ。そして『排他的論理和門』陣形を取れ。まさか忘れているなんてことはないだろうが大事業のための確認だ。いいか君の仕事は単純だ。入力の二人が『同じ色の旗を挙げた』時は白を挙げろ。『違う色の旗を挙げた』時は黒を挙げろ。わかるな?」
荊軻「出力二、君も入力の二人を見て旗をあげろ。ただし君が取る陣形は『論理積門』陣形だ。つまり入力が二人とも黒をあげたときにだけ黒をあげればいい。片方でも白、あるいは二人とも白い旗をあげたら君は白をあげるんだ」
では改めて何が起こるか見てみよう。
1+0を計算せよ!と始皇帝が命じる。
実際に入力一と入力二の挙げた旗は黒と白だ。
出力一は『排他的論理和門』陣形を取っているので「二人の旗の色が違う」のを見て黒をあげる。
出力二は『論理積門』陣形だ。「白い旗が見えた」ので白い旗をあげる。
おお! 見よ!
始皇帝が出力の二人組を見るとそこには出力一の黒い旗と出力二の白い旗が…!
一桁目が黒、二桁目が白…すなわち…1である…!!!!
なんたることか!
計算陣形は一瞬で1+0=1という答えを導き出したのだ!!!!
馬鹿にしているのか? と思われるかもしれないが、
計算陣形の偉大なところはこの単純さと速さにある。
人数を増やしてもそれらの兵士への教育コストは非常に低い。
難しい数字の読み書き計算でなく二人の旗を見て白か黒か判断するだけでいいのだから。
そして動作は旗をあげるだけで終わる。余計な計算は必要がない。
1+0=1を計算するにはそれでも遅いくらいだが、桁数が大きくなるほどその力は高まる。
人数を確保し、適切に陣形を組めば3657+189のような計算も入力後は一瞬で答えが出る。
普段我々がするような計算方法では計算担当を何人増やしたところで計算速度は劇的に早くなったりしない。精々、もっともその中で早いものが答えをだす時間までだ。
だが計算陣形は桁数に見合った適切な人員がいれば一瞬で計算を先に進められる。
「人数を計算の速さに変換できる」
これこそ計算陣形の一番の強みであり、同時に荊軻が始皇帝に大量の兵を集めさせた理由である。
300万人の数学のできない兵士と9人の数学者が10進法で何十分もかかる計算を解くときに、300万人は…もっといえば300万と8人は無駄だ。
もっともはやいものが何十分もかけて答えたのが最速となる。
人数は計算速度をあげたりしない。
だが、計算陣形ならたちどころに答えが現れる。
さながら電卓をたたくがごとし!
というかまあ電卓こそまさにラストで荊軻がひらめいた計算機械そのものであるのだから当然だろう。
というわけで無事に一桁の足し算はできるようになった。
次回はこれを二桁以降に拡張する方法になるのかな…。
正直疲れたので「こんな感じで計算に使うんだよ」で終わってもいい気がする。
気が向いたら次回は(バイナリ世界における)答えが二桁の足し算、すなわち2+2=4とかについて書くかもしれない。