なぜコンピューターは2進法で、人間はそうでないのか

なぜコンピューターは2進法を採用しているのでしょうか。
よく「2進法はONとOFFだけなので、実際に電気回路を作るのが簡単だから」という説明が為されています。
でも、電気にはプラスとマイナスがあるのだから、
プラス、マイナス、ゼロの3つを使った3進法の方が、ひょっとしたら効率的ってことはないですかね。



※以下、最初の説明はいきなり2状態のランプを前提としてスタートします。
この考えは、2状態素子による電子回路での最適は何か、ということにはあてはまるのですが、
最初から3状態以上の素子があったとしたら、という疑問には答えていません。(1/5追記)


実は、2進法には数学的な根拠があります。
最も数少ない部品で数字を表すことができるのは「e進法=2.71828・・・進法」だからです。
「点灯するか、消灯するか」の2状態しかないランプを使って、数字を表すことを考えてみましょう。
例えば999までの数を、2進法、3進法、10進法で表してみたのが下の図です。

2進法では10個のランプ、3進法では14個のランプ、10進法では27個のランプが必要です。
2進法が最も効率的ですね。

上の図の考え方を一般化してみましょう。
たとえば1000を表すのに必要なランプの数は、
10進法では 1000 = 10 ^ 3 と考えて、10 * 3 = 30 個です。(1/5修正)

たとえば999を表すのに必要なランプの数は、
10進法では 999 = 10 ^ 3 - 1 と考えて、(10 - 1) * 3 = 27 個でした。
ちゃんと見ると一致してはいないのですが、ここは -1 とかを無視して、大ざっぱに次のようにとらえてみます。
N進法で、ある数 M を表すのにK桁を要するとすれば、M = N ^ K 。
このとき必要なランプの数は N*K 個。
問題は、M = N ^ K を一定としたときに、N*K を最小とするようなNを求めよ、ということです。
M = N ^ K の両辺の対数をとります。
  log(M) = K log(N)
log(M) は一定の数なので、改めてCと置きましょう。
  C = K log(N)
ここから、KをNで表すことができます。
  K = C / log(N)
このKを、N*K に代入してKを消去すると、
  N*K = C * N / log(N)
つまり、問題は N / log(N) を最小にするNは何か、ということです。
 f(N) = N / log(N) と置いて、f(N)を微分してみましょう。
 f’(N) = ( 1 / log(N)^2 ) * ( log(N) - 1 )
ここで f’(N) = 0 となるのは、log(N) - 1 が 0 になるとき。
ということで、N = e となったときが、最も効率の良い表現方法になります。
e = 2.71828・・・なので、2進法か、3進法が良いということになる。
実際には、2進法の方が回路作りがシンプルだったので、
現在のコンピューターは(ほとんど)2進法を採用しているのです。


※ 2.71828・・・ってことは、上の理由だけでは2進法対3進法の完全決着は付いていない、ということですね。
現在のテクノロジーでは、回路作りという現実的な理由で2進法が圧倒的に優位ですが、
もし仮に3進法が表現できるような特別な回路素子があったら事情は変わってくるのかもしれません。(1/5追記)

* フォロー記事: さらにe進数について >> [id:rikunora:20090103]

以上で2進法には納得がいったと思うのですが、そうなると、また新たな疑問が生じてきます。
 「なぜ人間の頭脳は2進法ではないのか?」
もし2進法が最も優れた方式ならば、当然、人間の頭脳も2進法となって然るべきではないでしょうか。
「全か無かの法則」で、神経電位も、ニューロン発火も、あたかも2進法のように振る舞います。
人間のハードウェアは2進法っぽいのに、たまたま指が5本だったから、ソフトウェアは10進法なのか。
実のところ「指が5本だったから」には、ちょっとした疑念の余地があります。
というのは、世界には12進法を採用していたところもあるからです。
時計は12進法だし、英語の eleven, twelve だけ特別な言い方をするし。
時計が12進法になったのは、円周を半径の長さで区切ってゆくと正6角形になるからだと思います。
Wikipedia におもしろいことが書いてありました。
>> wikipedia:十二進法
「10 ではなく 12 が底になった理由として、片手の人さし指から小指の計 12 個の節を親指で示す数え方が示唆されている。」
指が10本という数え方は、それほど絶対的なものではない。
ひょっとしたら別のものになっていた可能性もあったわけです。
だとすれば、人間が素直に2進法を採用しなかったのは、いよいよもって不思議です。

人間が2進法ではない理由。
その答を現時点で明確に持っている人は、たぶんいないと思います。(もしいたら教えて下さい)
私なりにいろいろと考えたところ、大きく3つの方向性があると思います。
1.実生活上2進法は不便。
 -- つまり、理論上の最適と、実生活上の最適にはズレがある。
2.人間の頭脳は、まだ最適に達していない。
 -- 既存のソフトウェアには改善の余地があって、「もっと頭が良くなれる」。
3.人間の思考方法は、デジタルコンピューターとは根本的に異なる動作原理に基づいている。
 -- なぜ人間がデジタルで無いかを突き詰めれば、その先には想像もしなかった未知の世界が広がっている。
以下、順番に見ていきましょう。

1.実生活上2進法は不便。
実際に、ちょっとやってみれば分かりますよね。
1と0を、ずらずらずらーっと連続して書くのは、どう見ても無駄だし、間違いやすい。
数字の種類が少なければ、数字の桁数は長くなる傾向にある。
かといって数字の種類を増やせば、今度はその、たくさんの種類の数字を扱うのが煩雑です。
ということは、数字の種類と長さの間で、最もよいバランスがとれることになります。
ある数字Mを、N進法で表せば、その桁数Kは
  K = log[N](M)
となります。(log[N] は底を Nとする対数)
このとき、めんどうくささf(N) = 桁数K+基数N を最小にするNは、いくつでしょうか?
 f(N) = K + N
    = log[N](M) + N
    = { log(M) / log(N) } + N
何も書いてない log() は、e を底とする自然対数のこと。
底の変換公式ってやつですね。
でもって、最小値を探すために微分してみます。
  f(N)' = - { log(M) / log(N)^2・N } + 1
f(N)' = 0 となる最小ポイントを探しているのですから、
  log(M) / log(N)^2・N = 1
  log(M) = N・log(N)^2
うーむ、これ以上は簡単にできそうにないですね。
左辺にMが残りますから、Nの答は、扱う数Mによって変わってくる。
扱う数Mが小さければ、数字の種類も少しで良いし、
数Mが大きければ、数字の種類はたくさんあった方が良い。
考えてみれば当然でしょう。
上の関係式から、log(M) とNの関係をグラフに書いてみました。

横軸が基数N(N進法)、縦軸は扱う数Mの桁数(10進法での桁数)です。
上のグラフはNの範囲が10まで、下のグラフは20までです。
(グラフをよく見るとN=0.13 付近に小さいコブができているのがちょっとおもしろい。
 実は N=1/e^2 に極大点があります。本筋とはあまり関係ないですが。)
たとえば、扱う数を1000程度とすると、桁数は3桁ですから、
グラフの縦軸の値3を横にたどって、ぶつかった点、つまり4進法が最適ということになります。
2〜8進法で1000を表すと何桁になるかを、表にしてみました。

表の右端に「桁数+数字の種類」が書いてあります。
これを見ると、確かに4のときが最小になっていますね。
それでは、10進法で最適となるような数字Mは、どの程度の大きさかというと、およそ24桁。
つまり1000垓(がい、兆の1000倍)程度ということになります。
これはかなり大きな数ですから、10進法は、ちょっと記号が多過ぎなのでしょう。
ただ、最初に1回記号を覚えるのと、その後いちいち桁数の多い数字を書くとの、
トータルでどちらがめんどくさいかと言えば、やはり後から数字を書く方の労力の方が多いと思います。
そのことを考慮に入れれば、数字の種類は少し多めくらいでちょうど良いのでしょう。

2.人間の頭脳は、まだ最適に達していない。
10進法が最終的な答なのではなくて、もっと良い方法があるのではないか。
デジタル化の進んだ今日、最適なのは8進法か16進法なのではないか、私は個人的にはそう思っています。
その理由は「音楽」。
(今日主流となっている)音楽は1オクターブ8音ですし、
もっとも普及しているリズムは4拍子、8ビート、16ビート、と2の累乗の形をしています。
もし人間のハードウェアが2進法でできていたなら、人の刻むリズムはそれを反映して、自然と2の累乗になるのではないか。
あたかもコンピューターのクロックを分周するように。
これが、私が8進法を推す理由です。
もう1つの候補として16進法もあるのですが、上で計算した「最も効率的な数字記号の種類」からすると、
16進法はちょっと多すぎるかなと思うわけです。
ところで、2の累乗リズムはそれほど普遍的なのでしょうか。
まず、音楽には2拍子、4拍子の他に、3拍子もあります。
ワルツは3拍子。
なので、2の累乗リズムには例外もあるではないかと思えるのですが、ちょっと待ってください。
確か、理論上最も効率的なのは「e進法=2.71828・・・進法」でしたね。
つまり、実際に取り得るのは基本的には2進法なのだが、場合によっては3進法もありってことです。
これって、正に音楽が採用しているリズムそのものではないですか。
主流となる大多数の音楽は2進法タイプ。
中にはちょっと変わった3進法タイプもある。
5拍子以上のリズムは、よほど変わった現代音楽以外あり得ない。
これが最も自然なリズムなのです。
そして、自然なリズムにのって数を数えるなら、やはり2の累乗進法が優れています。
(3進法も候補には残るのですが、どちらかを選べというなら、やはり主流を残さざるを得ないので。)
ドレミファソラシドの8つの符号を使って曲を作れば、自然にノリの良い曲ができますけど、
0から9の10個の符号を使って曲を作ろうとすると、どうもうまく合わない。
5拍子をベースとする10進法なんて、全くノれない、Coolじゃないですよ。

3進法の可能性については、いろいろ考えた方もおられるようです。
* 三進法のコンピューターが、二進法のコンピューターより優れた点は?
>> http://oshiete1.goo.ne.jp/qa2083198.html
「ワルツを刻むコンピューター」なんて、ちょっとワクワクしますね。
でも現実的には、あえて主流を外れて3進法に乗り換えるメリットは、ほとんど無いように思えます。

ところで3・3・7拍子は、一見変則的に見えるリズムです。
あるいは、俳句は5・7・5。
七五調って言葉もあるくらいです。
なので、5拍子を切り捨てるのは日本人としてわびさびを解していないのではないか、という反論があるかもしれません。
でも、よく聞いてみてください。
3・3・7拍子も、俳句も、実は4拍子を基準としているんです。
ちゃっちゃっちゃ(休み)、ちゃっちゃっちゃ(休み)、ちゃっちゃっちゃちゃ、ちゃっちゃっちゃ(休み)。
この(休み)を入れてカウントすれば、実は4拍子でしょ。
俳句についても、詠んだときの余韻の長さまで含めてカウントすれば、普通に4拍子のリズムになってます。
これを聞いて確認してみよう。
* 初音ミクに「古池や・・・」を詠ませてみた。
>> http://brownian.motion.ne.jp/memo/OldPond.mp3
詩歌は余韻が大切なんですね。
ということで、2の累乗リズムには、実はかなりの普遍性があります。
このリズムを数え方の基底に置くのは、良いアイデアだと思うのですが、いかがかな?

3.人間の思考方法は、デジタルコンピューターとは根本的に異なる動作原理に基づいている。
えーと、やはり人間の脳には、未知なる原理が潜んでいて欲しいなと思います。
2進法を超えた「あいまい処理」みたいな。
でも、これについては未知なので、いまのところコメントのしようがありません。
脳は誰でも持っているので、自分自身でよーく考えてみてください。
なぜ人間は、2進数ではないアナログ感覚で数をとらえることができるのか。
きっとそこには、未知なる原理が潜んでいるに違いありません。

                                                                                                                              • -

※ 12/31 追記
ブックマークに「いやいや、オクターブは7進数でしょ。」という指摘があった。
あっ、その通りだ。1オクターブは7進法じゃないか。
なので、「1オクターブ8音」というのは根拠薄弱でした。
なぜ1オクターブはドレミファソラシなのか。
そのことは、この本に詳しく書かれています。

音律と音階の科学―ドレミ…はどのようにして生まれたか (ブルーバックス)

音律と音階の科学―ドレミ…はどのようにして生まれたか (ブルーバックス)


この本によると、
・人が不協和音を感じる実験データ
倍音、高調波の重ね合わせ
から、ドレミファソラシが導かれるとのことです。
これがすごく納得のゆく説明なんですよね。
確かに、ドレミはリズム(クロック)というより、ハーモニーから形になったという気がします。
なので、オクターブ=8進法は、やっぱりこじつけっぽい。
あえてこだわるなら、「ドレミファソラシド」の8音を口ずさむと、4拍子の自然なリズムに乗りやすい。
代表的な音を7つに収めたのは、口ずさんでちょうど良い程度の長さっていうのがあるかな、と思います。
  * Do☆Re☆Mi☆Fa☆Sol☆La☆Si☆Do【初音ミク
  >> http://www.nicovideo.jp/watch/sm4016258
この歌けっこう好き。。。ランキング1位にはなりそうもないけど。