ふぃっしゅ数ver3の急増加関数の評価
①関数とは?
簡単にいうと、何かを入れると何かしらを返すような仕組みを持つ箱のようなもの、でしょう。
基本的には下記のように表されます。
f(x)
fはfunctionの略でfunctionは関数という意味があります。
では問題。次の関数の中身を答えなさい。
①f(1)= 2。f(2)= 3。f(3) = 4
②f(1) = FALSE。f( あいうえお ) = FALSE。f(∞) = TRUE
③f(1) = 0。f(∞) = 0。f( あいうえお ) = 0
では解答
① これはただ1を足す関数です。
f(x) = x + 1と答えても正解です。
②これはかっこに∞が入ったときにTRUEを返す関数です。つまり下記のような感じになります。
f(x) = TRUE (x = ∞)、f(x) = FALSE (x ≠ ∞)
③これは何を入力されても0で返す関数です。
f(x) = 0
さて、関数のイメージは掴めてきたでしょうか?では次に、急増加関数について説明していきます。
②急増加関数とは?
関数にあるルールを付け加えた関数と考えてくれて構いません。定義は下記の通りです。
①f_0(x)= x + 1
②f_(n + 1)(x)= (f_n)^x(x)
③f_n(x) = f_n[x](x)
今回③の定義は使わないので覚えなくて大丈夫です。というか、作者自身も使ったことないので(ぇ
①の定義については分かりやすいですね。単純に1を足すだけ。前の問題でもやりました。今回は関数に添字がついていますが考え方は同じです。
問題は②についてです。ぱっと見ただけでは分かりづらいので計算しながら解説していきます。
記号の説明からですが「^」は基本的にべきのことを表します。
例えば
2^2は2の2乗と読むことができます。
では次に関数のべきについて考えましょう。先に結論から書きますと
(f_0(x))^2 ≠ (f_0(x))^2(x)
では、何が違うのか?
x = 1 として考えてみます。
左辺 = (f_0(1))^2
f_0(x) = x + 1 であることから
f_0(1) = 1 + 1 = 2
よって
(f_0(1))^2 = 2^2 = 4
右辺 = (f_0(x))^2(x)
これは先ほどと違い関数全体にかかっているわけではなく、関数そのものにかかっています。
関数の数え上げ。正確には合成関数と言った方がいいでしょう。
つまり、何が言いたいのかと言うと
(f_0(x))^2(x) = f_0(f_0(x))
ということです。
f_0(1) = 2 であることは先ほど示しました。つまり
f_0(2)= 2 + 1 = 3
よって
(f_0(1))^2(1) = 3
になります。
先ほど書いた②の定義が少し分かってきたでしょうか?
②f_(n + 1)(x)= (f_n)^x(x)
とはつまり、今の関数をn回合成関数すると、次のレベルの関数と等しくなります。
実際にやってみましょう。
f_0(x) = x + 1
(f_0)^2(x)= f_0(f_0(x)) = (x + 1) + 1 = x + 2
(f_0)^3(x)= f_0((f_0)^2(x)) = (x + 1) + 2 = x + 3
ここで
f_0(x) = (f_0)^1(x)とも書けますよね?
すると、関数を合成する数と最後に足す数が一致している事がわかります。
(f_0)^1(x) = x + 1
(f_0)^2(x) = x + 2
(f_0)^3(x) = x + 3
つまり
(f_0)^x (x)= x + x = 2x
②f_(n + 1)(x)= (f_n)^x(x) より
f_1(x)= 2x
次のレベルも見てみましょう。
(f_1)^2(x)= f_1(f_1(x)) = 2(2x) = 4x
(f_1)^3(x)= f_1((f_1)^2(x)) = 2(4x) = 8x
(f_1)^4(x)= f_1((f_1)^3(x)) = 2(8x) = 16x
これは2のべきで増えていることがわかります。
f_1(x)= 2x = (2^1)x
(f_1)^2(x)= 4x = (2^2)x
(f_1)^3(x)= 8x = (2^3)x
(f_1)^4(x)= 16x = (2^4)x
(f_1)^x(x)= (2^x)x
これだと後々計算が面倒なため、
2^x
で近似します。
本来は近似の記号を使うべきですが、環境によっては見えなくなったり使えなかったりするので「≒」を使います。
(f_1)^x(x)= (2^x)x ≒ 2^x
つまり
f_2(x)= 2^x
では、次ですが新たに演算子を定義します。
クヌースのタワー表記と言われているもので定義は下記の通りになります。
x^y = x↑y
x(↑^2)y = x↑↑y = x↑x↑x↑……↑x (xがy個)
x(↑^n)y = x(↑^(n-1))x(↑^(n-1))x(↑^(n-1))……(↑^(n-1))x (xがy個)
そして、急増加関数は以下のようになっていきます。
f_2(x)= 2^x = 2↑x
f_3(x)= 2↑↑x
f_4(x)= 2↑↑↑x
ではもし、急増加関数の添字が大きかったらどうなるでしょうか?
数は
1,2,3……N……
と続きますが、こんなNのことをωで表します。
数学的には極限順序数や超限順序数なんかと言われます。
もっと簡単に言うとωは無限です。
では急増加関数にωがはいるとどういうことになるかというと以下のようになります。
f_ω(x)= 2(↑^x)x
ちなみにこの次のレベルも存在します。
f_ω(x)= 2(↑^x)x
f_ω(x)^2 ≒ 2(↑^( 2(↑^x)x ))x
f_ω(x)^3 ≒ 2(↑^( 2(↑^( 2(↑^x)x ))x ))x
f_(ω+1)(x)≒ 2(↑^)x x-1回の2(↑^x)yが入る
別表記だと
f_(ω+1)(x) = 2→x→x→2
数が増え続け、いつしかタワー表記をx回することに等しくなります。
ちなみに有名なグラハム数を急増加関数で表すと以下のようになります。
f_(ω+1)(64) ≒ グラハム
チェーン表記(→)について説明していると長くなるのでここでは割愛させていただきます。
では、いよいよ「ふぃっしゅ数ver3」の解説に移ります。
------------------------------------------------------------------------
ふぃっしゅ数ver3の定義は以下の通りです。
[1]関数から関数への写像s(n)(n > 0)(s(n)変換)を以下のように定める。
s(1)f := g; g(x) = f^x(x)
s(n)f := g; g(x) = [s(n-1)^x]f(x) (n > 1)
[2]関数から関数への写像ss(n)(n > 0)を以下のように定める。
ss(1)f := g; g(x) = s(x)f(x)
ss(n)f := g; g(x) = [ss(n-1)^x]f(x) (n > 1)
[3]ふぃっしゅ関数F_3(x)を以下のように定める。
F_3(x) := [ss(2)^63]f(x); f(x) = x+ 1
[4]ふぃっしゅ数F_3 := (F_3)^63(3)とする。
まずは[1]から評価していきたいと思う。
理由としては、[3]を見るとF_3の中にss(n)変換が入っており、ss(n)変換の中にs(n)変換が入っているからだ。
そんなわけで[1]を見ていく。
[1]関数から関数への写像s(n)(n > 0)(s(n)変換)を以下のように定める。
s(1)f := g; g(x) = f^x(x)
s(n)f := g; g(x) = [s(n-1)^x]f(x) (n > 1)
なにか何処かで見た形に思える。
どこだろう?と思い出すと実はこれ、急増加関数が入っている。具体的には
s(1)f := g; g(x) = f^x(x)
ここだ。これは急増加関数と一致している。
レベルを上げる操作そのものは入ってはいないが、それ以外は急増加関数だ。
つまり g(x) = f^x(x) は急増加関数でいうところのレベルを一つ上げる操作だ。
f_0(x) = x + 1
とすると
f_1(x) = (f_0)^x(x) = 2x
ということは作中でも話した通りだ。
さてレベルを一つだけ上げる操作だというこはもう理解していただけたと思う。
次にその下の部分を見ていきたい。
s(n)f := g; g(x) = [s(n-1)^x]f(x) (n > 1)
これはどういう意味だろうか?
実は g(x) = [s(n-1)^x]f(x) (n > 1) の部分はひとつ前の関数の数え上げである。
簡単にいうと g(x) = f^x(x) を何度もやれということである。
つまりレベルを一つ上げる操作をx回繰り返すことになる。
つまり
s(2)f = s^x(1)f = (f^x(x))^x = ((f_0)^x(x))^x = f_ω(x)
になります。
例えば
s(2)s(1)f = f_(ω + 1)(x)
程度になります。
同様にs(3)も求めていきたいと思います。
s(3)はs(2)の数え上げになります。
s(2)(s(1)^2)f = f_(ω + 2)(x)
s(2)(s(1)^3)f = f_(ω + 3)(x)
s(2)(s(1)^x)f = (s(2)^2)f = f_(ω + ω)(x) = f_(ω*2)(x)
同様に
(s(2)^3)f = f_(ω + ω + ω)(x) = f_(ω*3)(x)
(s(2)^4)f = f_(ω + ω + ω + ω)(x) = f_(ω*4)(x)
つまり s(3) とは
s(3)f = (s(2)^x)f = f_(ω^2)(x)
になります。
s(4)も同じです。
s(3)s(1)f = f_(ω^2 + 1)(x)
s(3)s(2)f = f_(ω^2 + ω)(x)
(s(3)^2)f = f_((ω^2)*2)(x)
(s(3)^3)f = f_((ω^2)*3)(x)
s(4)f = (s(3)^x)f = f_((ω^2)*ω) = f_(ω^3)(x)
ここで
s(2)f = f_ω(x)
s(3)f = f_(ω^2)(x)
s(4)f = f_(ω^3)(x)
という法則性から
s(n) = f^(ω^(ω - 1)) ≒ f^(ω^ω)である。
次に[2]を見ていく。
[2]関数から関数への写像ss(n)(n > 0)を以下のように定める。
ss(1)f := g; g(x) = s(x)f(x)
ss(n)f := g; g(x) = [ss(n-1)^x]f(x) (n > 1)
意味的には[1]とほぼ同じなので詳しい説明は省くが
ss(1)f := g; g(x) = s(x)f(x)
より
ss(1)f = f_(ω^ω)(x)
である。
そして
ss(n)f := g; g(x) = [ss(n-1)^x]f(x) (n > 1)
また
[3]ふぃっしゅ関数F_3(x)を以下のように定める。
F_3(x) := [ss(2)^63]f(x); f(x) = x+ 1
よりss(1)を数え上げればよいことが分かる。
ss(1)f = f_(ω^ω)(x)
(ss(1))^2)f = f_((ω^ω)*2)(x)
(ss(1))^3)f = f_((ω^ω)*3)(x)
ss(2)f = (ss(1))^x)f = f_((ω^ω)*ω)(x)
指数法則により
ss(2)f = (ss(1))^x)f = f_((ω^ω)*ω)(x) = f_((ω^(ω+1)))(x)
になる。
また
[3]ふぃっしゅ関数F_3(x)を以下のように定める。
F_3(x) := [ss(2)^63]f(x); f(x) = x+ 1
より
(ss(2)^63)f(x) = f_((ω^(ω+1))*63)(x)
となる。
最後に
[4]ふぃっしゅ数F_3 := (F_3)^63(3)とする。
より
(f_((ω^(ω+1))*63))^63 (3)
となる。
少し見にくいためスマートにする。
ここで少し、グラハム数の急増加関数の話を思い出していただきたい。
グラハム数Gは
G = (f_ω)^64(4) = f_(ω + 1)(64)
となった。これはふぃっしゅ数ver3にも同じことができる。
つまり
(f_((ω^(ω+1))*63))^63 (3) = f_((ω^(ω+1))*63+1)(63)
である。