有限のシーケンスに対して数学的には可能ですが、必要な数が非常に急速に大きくなるため、あまり実用的ではありません.シーケンスとそれ以上の整数。
このような関数の簡単な例として、シーケンス [1,6,7,8,9,45,67] を値 2 1 * 3 6 * 5 7 * 7 8 * 11 9 * 13 45 * 17 67にマップします。 . 底は素数で、ベキは数列の要素です。
逆マッピングは除算によって計算されます。値を除算できる回数は2
、シーケンスの最初の要素などです。値の最大の素因数は、シーケンスの長さを示します。
数列と正の数を許可する場合0
は、素数を累乗するときにすべての要素に 1 を追加します。または、代わりに の累乗を使用し2
てシーケンスの長さを指定し、 で始まる要素のエンコードを開始し3
ます。
ゲーデルは、不完全性定理の証明でこのようなエンコーディングを使用しました。
Kendall Frey が言うように、整数の各無限シーケンスを別の整数にマップする関数を定義することはできません。{true, false}
これは、自然数のベキ集合が可算でないというカントールの証明の結果です。整数からの要素のすべての無限シーケンスは言うまでもなく、からの要素のすべての無限シーケンスを整数に単射的にマッピングすることさえできません。
より実用的なアプローチについては、整数のシーケンスを数値ではなくバイトのシーケンスとしてエンコードするという観点から考えてください。バイトの有限シーケンスはバイナリ値と簡単に見なすことができます。したがって、それは数値であり、実際にはそのように使用することはありません。サンプル シーケンスの一般的な表現はバイト シーケンスです[1,6,7,8,9,45,67]
。たとえば、JSON で使用されます。これは 136 ビットの数値です。このマッピングを逆にする数学関数には、256 の累乗を法とする算術演算、48 の減算、10 の乗算などが含まれます :-)