高効率の3進法

1.天才の自認

昨日、私は天才だった。
それは以下の問題を解いた後の話である。

各桁の数字が互いに異なり、どの2つの数字の和も9にならないという条件を考える。
(1桁の自然数はすべて条件を満たすものとする)
(1)条件を満たす4桁の自然数は何個あるか。
(2)条件を満たす自然数で、小さい方から2000番目のものは何か。

典型問題であり、面倒くさい計算を終わらせたあとに、あることを思いついた。(ちなみに答えは(1)が1728個で(2)が8695)
この答えは、10進数以外の場合、まったく違う値となる。
では、他の2進数や3進数ではどうなるのか。
この条件を取っ払って、組合せ論における自然数の作り方を考えていると、予想外の収穫があった。
それは、e進数がもっとも効率が良い表現方法であるということである。

2.e進数の効率の良さ

例えば、0〜999までの数字を10進数で表すときに、何個の数字が必要だろうか。
1桁目は0〜9の10通り、2桁目は0〜9の10通り、3桁目も0〜9の10通りであるから、合計で30個の数字が必要となる。

これを2進数で考えるとどうなるか。
2^10=1024なので、少し多くなるが0~1111111111(=1023)のすべてを考えると、1桁目は0〜1の2通り、2桁目は0〜1の2通り、…、10桁目は0〜1の2通りであるから、合計20個の数字が必要となる。

10進数は0〜999を表すのに30個の数字が必要で、0〜1023を表すのに20個の数字が必要である。
つまり、2進数の方が少ない数で多くの数字を表現できる。
これを一般化すると、自然数Nをp進法で表現したときに、必要な数字は
p × log(p)N
となる。(log(p)Nはpが底、Nが真数)
この最小値、つまり最も効率の良いpの値は、微分して極小値を考えることで、p=eとなることがわかる。

私は、やるべきことをほっぽり出して、上記の推論を楽しんでいた。
私は天才だ。
そう思いながら数式をこねくり回すのは、何年ぶりだろうか。
この結論を見出した後、イデア界の頂点に立ったかのような優越感に被覆されていたが、実際は誰かの轍であったことをすぐに知ることとなる。


天才ではない私に、初夏の太陽が学生時分の熱病を、少しの間だけ幻想させたのだろう。

3.未来のコンピュータ

私は、e進数がもっとも効率が良い事を示したが、(上記の関数が効率を示していると仮定している)それならば2進数よりもeに近い3進数の方が効率が良さそうである。
そうならば、未来のコンピュータは3進数となっているだろうか。

大学で数理論理学を習った際に、教授に言われたことを思い出した。

私達は、今から命題の解釈として、真と偽の2値だけをとるものとして考えますが、実際は2値論以外も考えられるということは理解していてください。

私はあまりコンピュータ理論に詳しくないが、真と偽のみを取る2値論が、2進数と密接な関係を持つことは知っている。
数理論理学者の中には、3値論の研究をしている方もいるかもしれない。
その論理の世界は、恐らく2値論とは大きく異なっているだろう。
それがどんな世界か、そうした興味にそそられるときほど、進学をしなかった後悔を噛みしめることはない。




この記事が気に入ったらサポートをしてみませんか?