「数学界で近年見つかった、TREE(3)と言うウルトラ巨大な数 11 (2019/02/14)」
新年数学コラム 数学界で近年見つかった、TREE(3)と言うウルトラ巨大な数についてのお話 11 Loader数
おさらい。
巨大数ランク表:
ランク | カテゴリ名 | スケール | 相撲スケール |
---|---|---|---|
0 | 特になし | 10 | 一般人 |
... | ... | ... | |
18 | Bachmann's collapsing | fψ(1,0.....0,0) | 横綱 |
19 | Higher computable | fθ(x) | 優勝 |
XX | Unreadable | 不明 | 人間じゃない |
ZZ | Uncomputable | 計算不可能。 | 生物じゃない |
TREE(3) = ランク18
SCG(13)=ランク19
より更に上の領域。Loader数と言う物があります。
しかもそれがなんとわずか512文字で書かれたC言語のコードと言うからオドロキ。
loader.c
#define R { return
#define P P (
#define L L (
#define T S (v, y, c,
#define C ),
#define X x)
#define F );}
int r, a;
P y, X
R y - ~y << x;
}
Z (X
R r = x % 2 ? 0 : 1 + Z (x / 2 F
L X
R x / 2 >> Z (x F
#define U = S(4,13,-4,
T t)
{
int
f = L t C
x = r;
R
f - 2 ?
f > 2 ?
f - v ? t - (f > v) * c : y :
P f, P T L X C
S (v+2, t U y C c, Z (X )))
:
A (T L X C
T Z (X ) F
}
A (y, X
R L y) - 1
? 5 << P y, X
: S (4, x, 4, Z (r) F
#define B (x /= 2) % 2 && (
D (X
{
int
f,
d,
c = 0,
t = 7,
u = 14;
while (x && D (x - 1 C B 1))
d = L L D (X ) C
f = L r C
x = L r C
c - r || (
L u) || L r) - f ||
B u = S (4, d, 4, r C
t = A (t, d) C
f / 2 & B c = P d, c C
t U t C
u U u) )
C
c && B
t = P
~u & 2 | B
u = 1 << P L c C u) C
P L c C t) C
c = r C
u / 2 & B
c = P t, c C
u U t C
t = 9 );
R a = P P t, P u, P x, c)) C
a F
}
main ()
R D (D (D (D (D (99)))) F
Loader数 > SCG(13) = ランク19 > TREE(3)=ランク18
なのは判明しています。
あんらまー。
あれだけ大きいと思ってたTREE(3)。それより更に巨大なSCG(13)までもが
あっさり抜かれてしまったゾ。^_^;
何が起きてるのか。
そもそもコンピュータープログラムを使えば
どれだけ巨大な数でも簡単に作れます。
例:
for (int i=0;i!=-1;i++) {;}
はい。これだけ。たった一行に収まる文章でさえも
i = 無限大 > Loader数 > TREE(3)
まで伸びます。^^;
本質的に言えばループ構造と言うのは
例:
int x=0;
for (int i=0;i<10;i++) {x+=i;}
=
x=0;
x+=0;
x+=1;
x+=2;
x+=3;
x+=4;
x+=5;
x+=6;
x+=7;
x+=8;
x+=9;
のショートカット表記と考えらます。
両者は同等のコードですが、
実際にCPUの演算器で実行されるのは後者の命令群になるわけですから・・・
本体は後者。前者はそのショートカット表記になるわけなんですねー。
それと同じで、Lodear.cも512文字のCコードの時点で見えてるのは
あくまでショートカット表現であって、
実際に実行される本体コードはループを展開したときに姿を見せます。
そんでループを展開したLoader.cの本体は・・・
宇宙の全原子を使っても足りないほどの文字数(命令群)になります。
それだけとんでもない数の文字を使って定義してるので
Loader数がTREE(3)より
大きくなっても不思議ではないんですねー。