1
エンタメ解説
文献あり

巨大関数失格 関数の増大度の相転移

19
0
$$$$

自然数上の関数のうち、増大度の大きいものというと、みなさんは何を思い浮かべるでしょうか?
指数関数や階乗や多重指数関数、巨大数や計算論や数理論理学に詳しい方なら、テトレーションやアッカーマン関数、グッドスタイン関数、tree関数、ビジービーバー関数などを挙げるかもしれません。
ところで、こういった巨大関数の中には、定義にパラメータを仕込むことで、その増大度が急激に変化したりするものが存在します。このような現象を相転移と言います(実際は関数の増大度というより、関数が全域であることの証明可能性が切り替わる現象をそう呼ぶみたいです)。

今回は、増大度の大きい関数を1つ提示し、そこにパラメータを紛れ込ませて、本来の増大度が喪失するかしないかのギリギリを楽しもうと思います。
蟻とかにギリギリ脱出できる量の砂を被せるのって楽しいですよね。

Higmanの補題による巨大関数

離散有限順序上のHigmanの補題

$\Sigma$をアルファベットの有限集合、$\Sigma^*$を$\Sigma$の元のみを文字として使った文字列全体の集合とする。
文字列$X = x_0x_1\cdots x_{m-1} \in \Sigma^*$が文字列$Y = y_0y_1\cdots y_{n-1} \in \Sigma^*$の部分列であるとは、ある写像$\sigma : \{0,\cdots,m-1\} \to \{0,\cdots,n-1\}$が存在して、任意の$i < m$について$x_i = y_{\sigma(i)}$を満たすことである。

このとき、文字列の無限列$\{X_i\}_{i \in \mathbb N}$について、$i < j$かつ$X_i$が$X_j$の部分列となるような$i,j$が存在する。

今回は$\Sigma = \{0,1\}$の場合のみ、すなわちbit列のみを考えることにします。この命題を用いて、以下のような関数を定義できます。

bit関数

$X_1,X_2,\cdots,X_N \in \{0,1\}^*$のうち、以下の2条件を満たすものを考える。

  • 任意の$1 \le i \le N$について、$X_i$の長さは$i+k$以下。
  • 任意の$1 \le i < j \le N$について、$X_i$は$X_j$の部分列ではない。

この2条件を満たす列の長さはHigmanの補題により無限にはならず、更にKőnigの補題を用いると長さに上限が存在するとわかる。この2条件を満たすbit列($\{0,1\}^*$の元)の列の最大長を、$\textrm{bit}(k)$と表す。

列$X_1,X_2,\cdots,X_N$の序盤から終盤にかけて、文字列の長さが徐々に緩和されていき、bit列として色んなものを並べられるようになります。代わりに、終盤ほど既存のbit列が増えてきて、そのどれも部分列に持たないようなbit列を並べるのが難しくなってきます。

この関数$\textrm{bit}$は急増大します。具体的には、以下の事実がわかっています。

bit関数の増大度

自然数上の関数$\textrm{bit}(k)$は、任意の原始再帰関数を支配する。
すなわち、任意の原始再帰関数$f$に対し、ある自然数$N$が存在して、任意の$k > N$について$f(k) < \textrm{bit}(k)$が成り立つ。

例えば、$2^k$や$2^{2^{2^k}}$など、指数関数やそれを繰り返しただけの関数は原始再帰的であり、また入力$k$に応じてその回数だけ指数関数を繰り返す、テトレーションと呼ばれる関数$\underbrace{2^{2^{\cdots^2}}}_k$も原始再帰関数です。
任意の原始再帰関数を支配する、と書きましたが、実際には以下の関数族の全てより増大度が高いことを示せば十分であることがわかっています。

Ackermann関数(Friedmanの流儀)

関数族$\{A_i\}_{i \in \mathbb N}$を以下のように再帰的に定義する。

  • $A_0(x) := 2x$
  • $A_{m+1}(x) := A_m^x(1) = \underbrace{A_m(A_m(\cdots(A_m}_{A_m\textrmがx\textrm個}(1))))$

$x$側が小さいときの重要な性質をいくつか見ておきましょう。

  • $A_{m+1}(0) = A_m^0(1) = 1$
  • $A_{m+1}(1) = A_m(1) = \cdots = A_0(1) = 2$
  • $A_{m+1}(2) = A_m(A_m(1)) = A_m(2) = \cdots = A_0(2) = 4$
  • $A_{m+1}(3) = A_m(A_m(A_m(1))) = A_m(A_m(2)) = A_m(4)$

また、$A_m(x) \le A_{m+1}(x)$などが成り立つので、どんなに大きい添字のAckermann関数でも支配できることを示せば、任意の原始再帰関数を支配することもわかります。例えば、発散するが発散速度が非常に遅い関数$f$を用いて$A_{f(x)}(x)$と表される関数は任意の原始再帰関数を支配します。他にも、$f^{-1}$が原始再帰関数で上から抑えられる程度には発散速度が遅い関数$f$($\log$の反復など)について、$A_{f(x)}(n)\ (n \ge 3)$は任意の原始再帰関数を支配します。

パラメータを加えた巨大関数

任意の原始再帰関数を支配して調子に乗ってる関数$\textrm{bit}$を地の底に落とすために、足枷を加えます。
bit列の長さの緩和スピードを遅くすることで、制限ばかり増えて息苦しくなるようにしましょう。

パラメータ付きbit関数

$X_1,X_2,\cdots,X_N \in \{0,1\}^*$のうち、以下の2条件を満たすものを考える。

  • 任意の$1 \le i \le N$について、$X_i$の長さは$f(i)$$+k$以下。
  • 任意の$1 \le i < j \le N$について、$X_i$は$X_j$の部分列ではない。

この2条件を満たす列の長さはHigmanの補題により無限にはならず、更にKőnigの補題を用いると長さに上限が存在するとわかる。この2条件を満たすbit列($\{0,1\}^*$の元)の列の最大長を、$\textrm{bit}_f(k)$と表す。

$f$が恒等関数であれば、関数$\textrm{bit}_f$は通常の$\textrm{bit}$と等しくなります。一般に、$f$が大きい値を取る関数ほど、bit列長の制限がどんどん緩和されていくので、$X_1,X_2,\cdots,X_N$として使えるものが増え、$\textrm{bit}_f$は大きくなり得ます。
ちなみに、$f$を指数関数や$A_{10000}$などにしても、$\textrm{bit}_f$の増大度は通常の$\textrm{bit}$と対して変わりません。$\textrm{bit}_\textrm{bit}$や$\textrm{bit}_{\textrm{bit}_\textrm{bit}}$にすると明確に増大度が変わるのですが、このように関数をbitのパラメータに代入してより増大度の高い関数を得る操作を何度繰り返しても、おそらく$\{0,1,2\}^*$を用いた同様の関数の方が増大度が高くなります。

$f$に急増大する関数を入れたときの挙動を考えるのも面白いかもしれませんが、今回は$f$を足枷として用いるのでした。つまり、$f$として恒等関数よりも増大度の低い関数を用いれば、それによって$\textrm{bit}_f$が原始再帰関数を支配できなくなるのではないか、というものです。
実際、$f(x) = 0.9\log_2x$などにすると、$\textrm{bit}_f(k) \le 2^{10(k+1)}$となります。$\textrm{bit}_f$の条件を満たすbit列の列$X_1,X_2,\cdots,X_N \in \{0,1\}^*$を考えると、最初の$2^{10(k+1)}$項は$f(x)+k = 0.9\log_22^{10(k+1)}+k = 0.9 \times 10(k+1) +k = 10k+9$なので長さが$10k+9$以下のbit列しか使えません。このようなbit列は高々$2^{10k+10}-1$個しか存在しないので、最初の$2^{10(k+1)}$項のうちどこか2つが等しくなってしまい、2つ目の条件に反してしまいます。
つまり、$\textrm{bit}_f$がある原始再帰関数に支配される「まともな」関数になるか、あるいは全ての原始再帰関数を支配する「巨大な」関数になるかの境目は、パラメータ$f$が$0.9\log_2x$と恒等関数の間のどこかの地点にある、ということになります。

$f(x) = x^\varepsilon\ (\varepsilon > 0)$

足枷が弱すぎた側を見ていきましょう。

長さが有界なbit列の個数

$1$の個数がちょうど$a$個であり、先頭が$1$であり、長さが$b$以下であるようなbit列は、ちょうど${}_bC_a$個である。

$a$についての帰納法

$a = 1$のとき、$1\underbrace{0\cdots0}_{0 \le i < b}$の形の列で全て網羅できているので、条件を満たすbit列は${}_bC_a = b$個である。

$a > 1$の場合は、帰納法の仮定「$1$の個数がちょうど$a-1$個であり、先頭が$1$であり、長さが$b$以下であるようなbit列は、ちょうど${}_{b-1}C_a$個である」を用いて示そう。
$1$の個数がちょうど$a$個であり、先頭が$1$であり、長さが$b$以下であるようなbit列は、ある自然数$i$と、「$1$の個数がちょうど$a-1$個であり、先頭が$1$であるbit列」$S$を用いて、$1\underbrace{0\cdots0}_iS$の形で表せる。このbit列の長さは$b$以下なので、$i \le b-a$であり、$S$の長さは$b-i-1$以下である。
各$i$について、帰納法の仮定により$S$はちょうど${}_{b-i-1}C_{a-1}$通りであるため、$1$の個数がちょうど$a$個であり、先頭が$1$であり、長さが$b$以下であるようなbit列の総数は$\Sigma_{0 \le i \le b-a}\ {}_{b-i-1}C_{a-1} = \Sigma_{a-1 \le i \le b-1}\ {}_iC_{a-1} =\ _bC_a$である。□

bit列とAckermann関数

自然数$k$を固定する。$X_1,X_2,\cdots,X_N \in \{0,1\}^*$のうち、以下の2条件を満たすものを考える。

  • 任意の$1 \le i \le N$について、$X_i$の長さは$i+k$以下。
  • 任意の$1 \le i \le N$について、$X_i$にはちょうど$k$個の$1$が含まれる。
  • 任意の$1 \le i < j \le N$について、$X_i$は$X_j$の部分列ではない。

この3条件を満たす列として、長さ$N = A_k(4)-4$を満たすものが存在する。

具体的構成

まず、ちょうど$k$個の$1$を含む列は、$\underbrace{0\cdots0}_{a_0}1\underbrace{0\cdots0}_{a_1}1\cdots1\underbrace{0\cdots0}_{a_{k-1}}1\underbrace{0\cdots0}_{a_k}$の形で表されるので、$k+1$個の自然数の組$(a_0,a_1,\cdots,a_{k-1},a_k)$と表される。以降はちょうど$k$個の$1$を含むbit列をこの形式で表す。
$(a_0,a_1,\cdots,a_{k-1},a_k)$が$(b_0,b_1,\cdots,b_{k-1},b_k)$の部分列であることと、任意の$i \le k$について$a_i \le b_i$であることが同値であることに注意せよ。特に、$(b_0,b_1,\cdots,b_{k-1},b_k)$が$(a_0,a_1,\cdots,a_{k-1},a_k)$より辞書式順序で小さければ、$(a_0,a_1,\cdots,a_{k-1},a_k)$は$(b_0,b_1,\cdots,b_{k-1},b_k)$の部分列にはならない。

ここで、ちょうど$k$個の$1$を含み少なくとも$1$個の$0$を含むbit列と自然数の組を受け取り、同様にちょうど$k$個の$1$を含むbit列と自然数の組を返す写像$E$を以下のように定める。

  • $a_k > 0$ならば、$E(a_0,\cdots,a_{k-1},a_k)[n] := (a_0,\cdots,a_{k-1},a_k-1)[n+2]$である。
  • $a_k = 0$である場合、$(a_0,\cdots,a_{k-1},a_k)$は少なくとも$1$個の$0$を含むので、$a_i > 0$を満たす$i < k$が存在する。そのような$i$のうち最大のものを$m$としよう。$E(a_0,\cdots,a_k)[n] := (a_0,\cdots,a_{m-1},a_m-1,n+2,a_{m+2},\cdots,a_k)[0]$である。

この写像$E$は、入力も出力も同じ形式なので、bit列側が$(\underbrace{0,\cdots,0}_{k+1})$になるまで反復できる。$n$回反復したものを$E^n$と表すことにしよう。
このとき、$E^{n-1}(1,\underbrace{0,\cdots,0}_k)[0]$のbit列側を$X_n$として定める。$E^{n-1}(1,\underbrace{0,\cdots,0}_k)[0] = (\underbrace{0,\cdots,0}_{k+1})[m]$を満たす$m$が存在するような$n$を$N$とおくことで、bit列の列$X_1,X_2,\cdots,X_N$が定義される。
これが3つの条件を満たすことを確認しよう。
$(a_0,\cdots,a_k)$の長さが$k+\Sigma_{i \le k}a_i$であることに気を付けつつ$E$の定義を観察すると、$E$はbit列長と自然数の和をちょうど$1$増やすことがわかる。$(1,\underbrace{0,\cdots,0}_k)[0]$ではこの値が$k+1$なので、$E^{i-1}(1,\underbrace{0,\cdots,0}_k)[0]$ではこの値が$i+k$となる。特に、任意の$1 \le i \le N$について、$X_i$の長さは$i+k$以下である。
$X_i$がちょうど$k$個の$1$を含むことは自明。
また、$E$はbit列側において、$k+1$個組の自然数による表示を辞書式順序で減少させる。つまり、$X_1,X_2,\cdots,X_N$は辞書式順序による狭義単調減少列であり、任意の$1 \le i < j \le N$について$X_j$は$X_i$より辞書式順序で小さい。従って、$X_i$は$X_j$の部分列ではない。
以上により、$X_1,X_2,\cdots,X_N$が3条件を満たすことが確認された。


最後に、$(1,\underbrace{0,\cdots,0}_k)[0]$に$E$を何回反復すればbit列側が$(\underbrace{0,\cdots,0}_{k+1})$になるかを確認する。
もし、$E^{N-1}(1,\underbrace{0,\cdots,0}_k)[0] = (\underbrace{0,\cdots,0}_{k+1})[m]$と表されるならば、$E$が常にbit列の長さと自然数の和を$1$ずつ増やすことから、$m = N$である。よって、ここでは実際に何回反復するかではなく、bit列側が$(\underbrace{0,\cdots,0}_{k+1})$になった際に組となる自然数がいくつになったかを確認するという手法をとる。
$E$の反復でbit列の$k+1$組表示において最も右にある$0$でない成分を$1$減らしたときに、組となる自然数がどう変化するかを、順番に見ていこう。
便宜的に、ここからは項の番号を右から順に$(a_k,\cdots,a_0)$のように数えていく。

$(a_k,\cdots,a_0+1)[n]$に$E$を適用すると、$(a_k,\cdots,a_0)[n+2]$となる。
$(a_k,\cdots,a_1+1,0)[n]$に$E$を適用すると、$(a_k,\cdots,a_1,n+2)[0]$となり、更に$n+2$回$E$を適用することで$(a_k,\cdots,a_1,0)[2n+4] = (a_k,\cdots,a_1,0)[A_0(n+4)-4]$となる。
以降は帰納法によって示そう。$(a_k,\cdots,a_{i+1}+1,\underbrace{0,\cdots,0}_{i+1})[n]$に$E$を有限回適用するといずれは$(a_k,\cdots,a_{i+1},\underbrace{0,\cdots,0}_{i+1})[A_i(n)]$になると仮定する。$(a_k,\cdots,a_{i+2}+1,\underbrace{0,\cdots,0}_{i+2})[n]$に$E$を$1$回適用すると$(a_k,\cdots,a_{i+2},n+2,\underbrace{0,\cdots,0}_{i+1})[0] = (a_k,\cdots,a_{i+2},n+2,\underbrace{0,\cdots,0}_{i+1})[A_i(A_i(1))-4]$となり、仮定によりここから$E$を有限回適用すれば$(a_k,\cdots,a_{i+2},n+1,\underbrace{0,\cdots,0}_{i+1})[A_i(A_i(A_i(1))-4+4)-4] = (\textrm略)[A_i(A_i(A_i(1)))-4]$となる。同様に$n+1$回仮定を用いると、毎回$A_i$の中と外の$-4$と$+4$が打ち消し合い、$E$の有限回の適用により$(a_k,\cdots,a_{i+2},0,\underbrace{0,\cdots,0}_{i+1})[A_i^{n+4}(1)-4] = (a_k,\cdots,a_{i+2},\underbrace{0,\cdots,0}_{i+2})[A_{i+1}(n+4)-4]$となる。
帰納法により、任意の$i \le k$について、$(a_k,\cdots,a_{i+1}+1,\underbrace{0,\cdots,0}_{i+1})[n]$に$E$を有限回適用するといずれは$(a_k,\cdots,a_{i+1},\underbrace{0,\cdots,0}_{i+1})[A_i(n)]$となる。

$i = k$の場合を用いれば、$(1,\underbrace{0,\cdots,0}_k)[0]$に$E$を有限回適用することで、$(\underbrace{0,\cdots,0}_{k+1})[A_k(4)-4]$となることがわかる。以上により、$N = A_k(4)-4$である。□

ちょっと面倒な補題を2つ用意しましたが、前者が「足枷」を打ち消してくれて、後者で任意の原始再帰関数を支配します。
$x^\varepsilon$と書きましたが、$\varepsilon$が小さいものを示せばそれより大きいものについても示せたことになるので、各正整数$n$についての$\varepsilon = \dfrac1n$の場合を示せば、$\varepsilon$が正実数の場合全てについても示せたことになります。

$\textrm{bit}_{x \mapsto x^\varepsilon}$は巨大関数

任意の自然数$n \ge 1$について、$f(x) = x^{\frac1n}$とおくと、$\textrm{bit}_f(2k + (4(n+1))^{n+1}) \ge A_k(4)$が成り立つ。

具体的な構成

$x \ge (4(n+1))^{n+1}$であるような$x$について考察しよう。
明らかに、$x \ge 2n+1$であり、$\dfrac{(2x+2)(n+1)}{x-n}$は$x > n$で単調減少であることから$\dfrac{(2x+2)(n+1)}{x-n} \le 4(n+1)$である。
また、$2x+2 \ge (4(n+1))^{n+1} \ge (\dfrac{(2x+2)(n+1)}{x-n})^{n+1}$である。両端に注目して整理すると、$(2x+2)^n \le (\dfrac{x-n}{n+1})^{n+1}$となり、更に$\le \ _xC_{n+1}$である。
$(2x+2)^n \le \ _xC_{n+1}$を満たす最小の自然数$x$を$d$とおく。$(4(n+1))^{n+1} \ge d$である。


ここから、実際に$\textrm{bit}_f$の条件を満たす列$X_1,X_2,\cdots,X_N$を構成していくが、そのために、まずは補題4によって示された、$\{Y_i\}_{1 \le i \le A_k(4)-4}$を取る。$Y_i$の長さは$i+k$以下で、ちょうど$k$個の$1$が含まれる。更に、任意の$1 \le i < j \le A_k(4)-4$について、$Y_i$は$Y_j$の部分列にならない。

まず、$1 \le i \le \ _{k+d}C_{n+1}$であるときの$X_i$として、$1$の個数が$2k$個より多いものを並べる。列の長さが$2k+(4(n+1))^{n+1}$以下で、$1$の個数がちょうど$2k + (4(n+1))^{n+1}-(n+1)$個あるものは、$_{2k+(4(n+1))^{n+1}}C_{2k + (4(n+1))^{n+1}-(n+1)} =\ _{2k+(4(n+1))^{n+1}}C_{n+1} \ge\ _{k+d}C_{n+1}$個以上あるので、これらを並べればよい。
以降は$1$の個数がちょうど$2k$個のbit列のみ並べるので、これらの$1$を$2k$個より多くもつbit列は埋め込めない。

任意の$1 \le j \le A_k(4)-4$について、$_{k+d+j-1}C_{n+1} < i \le\ _{k+d+j}C_{n+1}$であるときの$X_i$として、$Y_jB$の形のものを考える。ただし、$B$は長さが$k+d+j$以下であり、$1$がちょうど$k$個含まれており、先頭も$1$であるbit列である。$B$は$_{k+d+j}C_{n+1}$個以上存在し、$B$部分の長さが降順になるように並べれば、$_{k+d+j-1}C_{n+1} < i < i' \le\ _{k+d+j}C_{n+1}$の場合に$X_i$は$X_{i'}$の部分列とならないようにできる。
$X_i$の長さは$Y_j$の長さに$B$の長さを足しているので、$(k+j)+ (k+d+j) \le 2(k+d+j) \le\ (_{k+d+j-1}C_{n+1})^{\dfrac1n}$以下である。

従って、このように構成した列$X_1,\cdots,X_{_{k+d+A_k(4)-4}C_{n+1}}$は、$\textrm{bit}_f(2k+(4(n+1))^{n+1})$の長さの条件を満たす。
あとは$i < i'$のときに$X_i$が$X_{i'}$の部分列とならないことを示せばよい。とはいえ、$i \le\ _{k+d}C_{n+1}$の場合や、ある$1 \le j \le A_k(4)-4$について$_{k+d+j-1}C_{n+1} < i < i' \le\ _{k+d+j}C_{n+1}$である場合は既に確認済みである。
そうでない場合は、ある$1 \le j < j' \le A_k(4)-4$について、$_{k+d+j-1}C_{n+1} < i \le\ _{k+d+j}C_{n+1}$かつ$_{k+d+j'-1}C_{n+1} < i' \le\ _{k+d+j'}C_{n+1}$となる。このとき、$X_i = Y_jB$かつ$X_{i'} = Y_{j'}B'$を満たす、ちょうど$k$個の$1$をもち、先頭が$1$であるようなbit列$B,B'$が存在する。$X_i$が$X_{i'}$の部分列ならば、両者ともに$1$の個数が等しいので、右から($1$から数えて)$k$番目の$1$より左側同士も部分列となる。すなわち$Y_i$は$Y_{i'}$の部分列であるが、これは$\{Y_i\}_{1 \le i \le A_k(4)-4}$が補題4を満たすことに反する。よって、$X_i$は$X_{i'}$の部分列ではない。
以上により、bit列の列$X_1,\cdots,X_{_{k+d+A_k(4)-4}C_{n+1}}$は、$\textrm{bit}_f(2k + (4(n+1))^{n+1})$の部分列の条件を満たす。
この長さは$A_k(4)$以上なので、$\textrm{bit}_f(2k + (4(n+1))^{n+1}) \ge A_k(4)$である。□

このように、足枷$f(x) = x^{\varepsilon}$は、$x^n$をうまく再現すれば無効化できてしまいます。
「入力を$2k+(4(n+1))^{n+1}$にしたらそりゃ勢いよく増大するだろ」と思われるかもしれませんが、もし$\textrm{bit}_f$が原始再帰関数に支配されるなら$k \mapsto \textrm{bit}_f(2k+(4(n+1))^{n+1})$も原始再帰関数に支配されるので、$A_k(4)$が任意の原始再帰関数を支配することに矛盾します。$\textrm{bit}_f$は途中までは小さい値をとる関数かもしれませんが、少なくとも$(4(n+1))^{n+1}$からはAckermann関数の半分の勢いであらゆる原始再帰関数を追い抜いていきます。
調子乗ってやがります。ムカつくので足枷を強めてみましょう。

$f(x) = x^{\dfrac1{F^{-1}(x)}}\ (F\textrm{は原始再帰})$

$x^\varepsilon$よりも遅く増大する関数というと、例えば$\log x$などがあります。$x$を底とする指数関数の形で書くと、$x^{\dfrac{\log\log x}{\log x}}$のようになり、指数部が定数ではなく$0$に漸近することがわかります。
指数の漸近が早すぎると、例えば$x^{\dfrac1{\log x}} = e$のように定数関数になってしまうのですが、ゆっくりと$0$へ漸近させれば、任意の$\varepsilon > 0$における$x^\varepsilon$よりもギリギリ発散が遅い関数を作れます。

なるべくギリギリな関数を作る方法を色々と考えてみると、以下のような方法があることに気づきます。

  • とても速く増大する単調増加関数$F$($e^{e^{e^x}}$など)を用意する。
  • とても遅く発散する関数として、$F$の逆関数$F^{-1}$($\log\log\log x$など)が得られる。
  • この逆数$\dfrac1{F^{-1}(x)}$($\dfrac1{\log\log\log x}$など)は非常に緩やかに$0$に漸近する。
  • これを$x$の指数に乗せた関数$x^{\dfrac1{F^{-1}(x)}}$($x^{\dfrac1{\log\log\log x}}$など)は、任意の$\varepsilon > 0$について$x^\varepsilon$よりも遅く発散し、$F$の増大が速いほど速く増大する。

なお、ここの$F$は別に連続である必要はなく、たとえば$A_{100}(x)$などでもよいです。その場合、$F^{-1}(x)$は$F(y) \ge x$を満たす最小の$y$として定めればよいです。
厳密に言えば$F^{-1}(x) = 0$のときは$\dfrac1{F^{-1}(x)}$が定義できないので、その場合について$f(x)$の値を定義しなければいけません。

さて、足枷$f(x) = x^{\dfrac1{F^{-1}(x)}}$($F$が急増大するほど緩い)をどの程度にすれば$\textrm{bit}_f$は原始再帰に落ちてくるのか?ということを考えたいと思います。実は、かなり緩くても問題ありません。

$\textrm{bit}_{x^{\dfrac1{F^{-1}(x)}}}$はまとも

$F$を自然数上の狭義単調増加な原始再帰関数とし、$F^{-1}(n) := \min\{i \in \mathbb N \mid F(i) \ge n\}$と定める。
自然数上の関数$f$を、$F^{-1}(x) > 0$のときに$f(x) = x^{\dfrac1{F^{-1}(x)}}$を満たす関数とする。($F^{-1}(x) = 0$のときは自由に決めてよい。)
このとき、$\textrm{bit}_f(k)$は原始再帰関数で上から抑えられる。

$X_1,\cdots,X_N$が$\textrm{bit}_f(k)$の条件を満たすと仮定する。$X_1 = x_0\cdots x_{l-1}(x_i \in \{0,1\})$とおく。また、$y_i := 1-x_i$とおく。
$n > 0$のとき、$X_1$を部分列にもたない長さ$n$以下の列について考えよう。このような列は、そもそも$x_0$を部分列にもたないか、ある$0 < i < l$について、$x_0\cdots x_{i-1}$を部分列にもつが$x_0\cdots x_i$を部分列にもたないかのいずれかである。
前者は$y_0y_0\cdots y_0$の形のbit列しかなく、このうち長さ$n$以下のものは$n+1$個しかない。
後者は$y_0\cdots y_0x_0y_1\cdots y_1x_1y_2 \cdots\cdots x_{i-1}y_i\cdots y_i$のような形のbit列になる。このとき、各$x_i$が何文字目であるかの値と、bit列の長さ$+1$は、いずれも$1$以上$n+1$以下でありそれぞれ異なる値を取る。bit列はこの$i+1$個の値で決定されるので、$_{n+1}C_{i+1}$個である。
従って、$X_1$を部分列にもたない長さ$n$以下の列は、$(n+1) + \Sigma_{0< i< l}\ _{n+1}C_{i+1} \le \Sigma_{i\le l}\ _{n+1}C_i \le \Sigma_{i\le l}(n+1)^l = (l+1)(n+1)^l \le 2^l(l+1)n^l$個以下となる。


$X_{f(1)+2},\cdots,X_N$は、明らかにそれぞれ異なる。また、それぞれの長さは$f(N) = N^{\dfrac1{F^{-1}(N)}}$以下である。これらはいずれも$X_1$を部分列にもたないので、高々$2^l(l+1)N^{\dfrac l{F^{-1}(N)}}$以下である。
よって、$N-f(1)-1 \le 2^l(l+1)N^{\dfrac l{F^{-1}(N)}}$である。
$N \ge 2(f(1)+1)$である場合、$N \le 2N-2(f(1)+1) \le 2^{l+1}(l+1)N^{\dfrac l{F^{-1}(N)}}$である。よって、$N^{1-\dfrac l{F^{-1}(N)}} \le 2^{l+1}(l+1)$である。
$N \ge F(2l)$の場合、$F^{-1}(N) \ge 2l$なので$N^{\dfrac12} \le N^{1-\dfrac l{F^{-1}(N)}} \le 2^{l+1}(l+1)$である。つまり、$N \le 2^{l+2}(l+1)^2$である。
以上と$l \le k+f(1)$により、$N \le \max\{2(f(1)+1),F(2l),2^{l+2}(l+1)^2\} \le 2(f(1)+1)+\Sigma_{l \le k + f(1)}(F(2l) + 2^{l+2}(l+1)^2)$である。
この左辺$2(f(1)+1)+\Sigma_{l \le k + f(1)}(F(2l) + 2^{l+2}(l+1)^2)$は、定数、和、積、冪、総和、原始再帰関数の合成も原始再帰となることから、$k$についての原始再帰であるとわかる。以上により、$\textrm{bit}_f(k)$は原始再帰的な上限をもつ。

部分列を禁止されたbit列の個数は長さに対して多項式ペースでしか増えないことが本質的に効いてます。これにより、列が進むごとに扱えるbit列が増えはするものの、途中で指数部の$\dfrac1{F^{-1}(x)}$が多項式の次数を上回り、扱えるbit列が一次関数的にすら増えなくなります。いつしか列の長さが追い付いてしまい、扱えるbit列の個数が足りなくなってしまうのです。憐れですねぇ。

解析学で具体的に扱うような関数に限れば、ほとんど$x^\varepsilon(\varepsilon>0)$と$x^{g(x)}(\lim_{x\to\infty}g(x) = 0)$の間に$\textrm{bit}_f$が落魄れるかどうかの境目があるように見えます。
しかし、今回の証明における$\textrm{bit}_f$の原始再帰的な上限では、$f$の構成に用いた原始再帰的な関数$F$が使われています。この$F$を原始再帰関数よりも強めたらどうなるのでしょうか。

$f(x) = x^{\dfrac1{F^{-1}(x)}}\ (F\textrm{は原始再帰を支配})$

$\textrm{bit}_f$が原始再帰関数に収まらない関数$F$

$F$は任意の原始再帰関数を支配する狭義単調増加な関数とし、$f(x) := x^{\dfrac1{F^{-1}(x)}}$とする。
このとき、$\textrm{bit}_f$は原始再帰関数によって上から抑えられない。

$\textrm{bit}_f$が原始再帰関数によって上から抑えられるとする。すると、$\textrm{bit}_f(2n+(4(n+1))^{n+1})$も原始再帰関数であり、$F(n)$に支配される。すなわち、ある自然数$N$が存在して、任意の$n > N$について、$\textrm{bit}_f(2n+(4(n+1))^{n+1}) < F(n)$が成り立つ。
このとき、任意の$i \le \textrm{bit}_f(2n+(4(n+1))^{n+1})$について$F^{-1}(i) < n$であり、よって$f(i) \ge i^{\dfrac1n}$である。
末尾が空列で、長さが$\textrm{bit}_f(2n+(4(n+1))^{n+1})+1$であるbit列の列$X_1,\cdots,X_{\textrm{bit}_f(2n+(4(n+1))^{n+1})},\epsilon$を任意に取る。これが$\textrm{bit}_{x^{\dfrac1n}}(2n+(4(n+1))^{n+1})$の条件を満たすとき、それは$\textrm{bit}_f(2n+(4(n+1))^{n+1})$の条件を満たしてしまい、最大性に矛盾する。すなわち、末尾が空列で、長さが$\textrm{bit}_f(2n+(4(n+1))^{n+1})+1$であるbit列の列であって、$\textrm{bit}_{x^{\dfrac1n}}(2n+(4(n+1))^{n+1})$の条件を満たすものは存在しない。
特に、ここの空列$\epsilon$を他の列に書き換えた任意のbit列の列$X_1,\cdots,X_{\textrm{bit}_f(2n+(4(n+1))^{n+1})+1}$も$\textrm{bit}_{x^{\dfrac1n}}(2n+(4(n+1))^{n+1})$の条件を満たさないので、$\textrm{bit}_{x^{\dfrac1n}}(2n+(4(n+1))^{n+1}) \le \textrm{bit}_f(2n+(4(n+1))^{n+1})$が成り立つ。
定理5より、$\textrm{bit}_f(2n+(4(n+1))^{n+1}) \ge \textrm{bit}_{x^{\dfrac1n}}(2n+(4(n+1))^{n+1}) \ge A_n(4)$が成り立つ。

しかし、$A_n(4)$は任意の原始再帰的な関数を支配するので、これは$\textrm{bit}_f(2n+(4(n+1))^{n+1})$が原始再帰関数を上限にもつことに反する。
背理法により、$\textrm{bit}_f$には原始再帰的な上限が存在しない。

「任意の原始再帰関数を超える」ことを表す2つの言い回し

関数$g$が原始再帰関数で上から抑えられないことと、任意の原始再帰関数を支配するというのは、微妙に異なります。
「上から抑えられない」というのは、途中から大小で負け続けることはない、ということです。任意の原始再帰関数$h$と、任意の自然数$N$に対して、ある$n > N$が存在して、$h(n) < g(n)$を満たすことを言います。そこからずっと$g$が勝ち続ける場合も、$g(n+1) < h(n+1)$、$h(n+2) < g(n+2)$、...のように逆転を無限に繰り返す場合でもよいです。
しかし、「任意の原始再帰関数を支配する」となると、任意の原始再帰関数$h$に対して、ある自然数$N$に対して、任意の$n > N$について$h(n) < g(n)$を満たすことを言います。$N$以降で$g$は$h$に勝ち続けないといけないのです。逆転は有限回しか許されません。
例えば、捻くれた関数として、$F(0) := 0$とし、$F(n) < 2n$ならば$F(n+1) := A_n(n)$、$F(n) \ge 2n$ならば$F(n+1) := F(n)+1$とすると、$F$は任意の自然数$m$について、$A_m,F$は大小が無限に入れ替わります。
上記の定理では、$F$が「どんな原始再帰関数に対しても、途中から常に勝つ」なら、$\textrm{bit}_f$は「どんな原始再帰関数に対しても、途中から常に勝つか、無限回逆転する」という意味です。

$\textrm{bit}_f$は原始再帰関数の枠には収まらない程度に大きくなりました。更に、任意の原始再帰関数を支配する関数としてある程度自然な、$A_n(4)$などの関数を$F$に用いると、$\textrm{bit}_f$は任意の原始再帰関数を支配するようになります。

$\textrm{bit}_f$が原始再帰関数を支配する関数$F$

$F(x) := A_x(4)$とし、$f(x) := x^{\dfrac1{F^{-1}(x)}}$とする。このとき、$\textrm{bit}_f$は任意の原始再帰関数を支配する。

$\textrm{bit}_f(2n+(4(n+1))^{n+1}) < F(n) = A_n(4)$と仮定する。
bit列の列$X_1,\cdots,X_{\textrm{bit}_f(2n+(4(n+1))^{n+1})+1}$を任意に取る。これが$\textrm{bit}_{x^{\dfrac1n}}(2n+(4(n+1))^{n+1})$の条件を満たすならば、$X_1,\cdots,X_{\textrm{bit}_f(2n+(4(n+1))^{n+1})},\epsilon$も条件を満たす。
任意の$1 \le i \le \textrm{bit}_f(2n+(4(n+1))^{n+1})$について$X_i$の長さが$i^{\dfrac1n} + 2n+(4(n+1))^{n+1}$以下なので、特に$f(i) + 2n+(4(n+1))^{n+1}$以下である。従って、$X_1,\cdots,X_{\textrm{bit}_f(2n+(4(n+1))^{n+1})},\epsilon$が$\textrm{bit}_f(2n+(4(n+1))^{n+1})$の条件を満たしてしまい、最大性に反する。
従って、$\textrm{bit}_f(2n+(4(n+1))^{n+1})$より大きい長さをもち、$\textrm{bit}_{x^{\dfrac1n}}(2n+(4(n+1))^{n+1})$の条件を満たすものは存在しない。特に、$\textrm{bit}_{x^{\dfrac1n}}(2n+(4(n+1))^{n+1}) \le \textrm{bit}_f(2n+(4(n+1))^{n+1})$である。
定理5より、$A_n(4) \le \textrm{bit}_{x^{\dfrac1n}}(2n+(4(n+1))^{n+1}) \le \textrm{bit}_f(2n+(4(n+1))^{n+1})$である。これは仮定に反する。
従って、$\textrm{bit}_f(2n+(4(n+1))^{n+1}) \ge A_n(4)$である。これは任意の原始再帰関数を支配する。□

まとめ

$\textrm{bit}_f$の増大度は$f$によって変わります。

  • $f(x) = x^{\dfrac1{F^{-1}(x)}}$($F$は原始再帰関数に支配される関数)のとき、$\textrm{bit}_f$も原始再帰関数に支配される。
  • $f(x) = x^{\dfrac1{F^{-1}(x)}}$($F$は任意の原始再帰関数を支配する関数)のとき、$\textrm{bit}_f$はどの原始再帰関数にも支配されない。
  • $f(x) = x^{\dfrac1{F^{-1}(x)}}\ (F(x) = A_x(4))$のとき、$\textrm{bit}_f$は任意の原始再帰関数を支配する。
  • $f(x) = x^\varepsilon\ (\varepsilon > 0)$のとき、$\textrm{bit}_f$は任意の原始再帰関数を支配する。

今回は文字の種類が$2$種類の場合で考えましたが、一般に文字の種類が$m \ge 2$である場合、おそらく以下が成り立ちます。

$X_1,X_2,\cdots,X_N \in \{0,\cdots,m-1\}^*$のうち、以下の2条件を満たすものを考える。

  • 任意の$1 \le i \le N$について、$X_i$の長さは$f(i)$$+k$以下。
  • 任意の$1 \le i < j \le N$について、$X_i$は$X_j$の部分列ではない。

この2条件を満たす列の長さはHigmanの補題により無限にはならず、更にKőnigの補題を用いると長さに上限が存在するとわかる。この2条件を満たすbit列($\{0,\cdots,m-1\}^*$の元)の列の最大長を、$\textrm{Hig}_{m,f}(k)$と表す。

このとき、$f(x)$が$(m-1)^xx^{F^{-1}(x)}$($F$は$m-1$重再帰関数)である場合、$\textrm{Hig}_{m,f}$は$m-1$重再帰関数によって上から抑えられる。
また、$f(x)$が$(m-1)^xx^n\ (n \in \mathbb N)$の逆関数である場合や、$(m-1)^xx^{F^{-1}(x)}$($F = \textrm{FGH}_{\omega^{m-1}}$、ただし$\textrm{FGH}$はWainer階層による急増加関数)の逆関数である場合、$\textrm{Hig}_{m,f}$は任意の$m-1$重再帰関数を支配する。

WQO系の定理(Higmanの補題など)を用いた巨大関数は、同じような手法でパラメータ$f$を追加して、$f$がどの程度増大の遅い関数ならば本来の強さが失われるか(相転移)を考えることができ、既に様々なWQOについて研究がなされているようです。もしかしたら上の予想も既に証明されてるかもしれません。

参考文献

投稿日:23時間前
更新日:23時間前
数学の力で現場を変える アルゴリズムエンジニア募集 - Mathlog served by OptHub

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。

投稿者

不見
不見
33
2128
「お前なんでもかんでも否定から入るよね」 「¬¬そうかもしれない...。」

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中