一進法
一進法(いっしんほう)とは数の表現方法の1つで、1を底とする非標準的な記数法である。その名に反し、N 進法で N を 1 にしたものとは異なるが、後述のように両者に関係はある。単進法と呼ばれることもある [1]。
この記法で書かれた数値を一進数(または単進数)と呼ぶ。
概要
編集一進法とは、任意の記号を N 回繰り返すことで数 N を表すもので、自然数を表現するもっとも単純な記数法である。例えば記号として 1 を利用した場合、十進法の 1, 2, 3, 4, 5, 6 は一進法で以下のようになる:
- 1, 11, 111, 1111, 11111, 111111
一進法には 0 を表す記号がなく、0 は空文字列(何も書かない)によって表す。しかし、何も書かないと読者に判らなくなるので、便宜上はεで空文字列を表すこともある。
N 進数との関係
編集N 進数表記
は自然数
を表している。ここで、形式的に
とすると、表記
- (1 を N 個並べたもの)
が
を表すことになり、一進数表記と一致する。これが「一進数」と呼ばれる由縁である。
具体的な用例
編集例えば、記号として縦棒である |(タリーマーク、tally mark)を使うと、6は |||||| 、9は ||||||||| 、十進法の12は |||||||||||| として表現される。この記数法を画線法という。指を折って数える方法も一進法であるといえる。一進法は、スポーツの試合で得点を数えるなど進行中の結果を集計するのに便利である。これは書き足していくだけの漸増的な記数法で、中間結果を消したり、捨てたりする必要がないからである。漢数字の 一・二・三 や、ローマ数字の I・II・III なども一進法的な由来であろうことが想像される。
| を使うのは、欧米では最も一般的な方法である。単位となるマークは、読みやすいように奇数(三つか五つ)ごとのグループに統められることが多い。偶数では、四つか六つごとのグループに統められる場合もある。これは、十進法など様々なN進法で「100,000,000」として表現される大きな数を読みやすくするために、スペースや区切り記号(コンマなど)を使うのに似ている。グループの中の最初、第三(三つ区切りの場合)、第五(五つ区切りの場合)のマークは、容易に識別できるように、他のマークに対して斜めに書かれたり、横線を入れたりすることがある。
5で区切る場合には、5を表すマークは five-bar gate とも呼ばれ、「縦線4つに横線1つを入れる」方法で表現する。3で区切る場合には、3は「H」の横線を両脇に出張らせる方法で表現する。偶数も同じで、4で区切る場合には「♯」や「口」、6で区切る場合には「縦線4つに横線2つを入れる」や「⊠」(口の中に×) などの方法で表現する。
奇数(三つか五つ)区切りの場合には、グループを二つ統めて円で囲んだり(3×2=6、5×2=10)、四つ統めて円で囲んだり(3×4=12、5×4=20)することもある。同様に、四つ区切りの場合には、三つか五つで統めて円で囲んだり(4×3=12、4×5=20)、六つ区切りの場合には六の冪数で統めて円で囲んだりする(62=36、63=216)こともある。
日本や中国では五画の漢字である正を書いて数える方法があるが、これも5つごとのグループで統める一進法である。
アルゼンチンやブラジルでは、 Truco (en) というゲームを遊ぶときなどに一進法が広く用いられる。
「H」が四つに達したら新しい記号を出す(十二進法)、「正」が四つに達したら新しい記号を出す(二十進法)といった標準的なN進法と比較して、大きな数の計算には一進法は不便なので使われない。また、固定的な文書で使われることもほとんどない。
計算理論などにおける一進法
編集一進法には、計算理論において計算量を「人工的に」減らすため、などといった応用がある。例として、自然数の素因数分解問題は入力が二進法で与えられる場合には、入力長 n の多項式時間では実行不可能だと考えられている(素因数分解仮定)。しかし、入力が一進法で与えられるならば、入力長の多項式時間で実行するのは容易である(エラトステネスの篩で十分)。二進法での入力長 n は入力の数 N の対数 log N に比例するが、一進法での入力長は入力の数 N それ自身に比例するからである。
他にもコンピュータ科学などには多くの応用がある。たとえば、チューリングマシンの初歩的な例題などでは、テープ上に数字を並べてそれを位取り記数法で扱うのは相当に煩雑であるが、一進法であれば「右に進んでいって1があれば0に書き換えて、今度は左に進む」といったような手順で簡単に扱うことができる。