FANDOM


ペア数列数は、バシク[1]が2014年に考案した巨大数であり、 \(f_{\vartheta(\Omega_\omega)+1}(10)\) 程度の大きさである[2][3][4][5]。このアルゴリズムはペア数列システムと言う。このプログラムは、バシクによる原始数列数のプログラムを拡張したものである。

ペア数列は、(0,0)(1,1)(2,2)(3,3)(3,2) のような非負整数ペアの有限長数列である。ペア数列 P は、自然数 n から自然数 P[n] への関数として働き、 (0,0)(1,1)(2,2)(3,3)(3,2)[n] のように書く。関数 P[n] をハーディー階層によって増加速度を近似した時の順序数を \(\alpha\) としたとき、ペア数列 P そのものが順序数 \(\alpha\) をあらわすものとする。すなわち、\((0,0)(1,1)(2,2)(3,3)(3,2) = \psi(\psi_1(\Omega_2))\) のように表記できる。

ペア数列システムを拡張したバシク行列システムについて、現在検証がされている。ペア数列はプログラムによって定義されたが、バシク行列システムの2行行列によっても、同様に定義される。

BASIC プログラム 編集

for D=0 to 9 から next のループ内で \(C=f_{\vartheta(\Omega_\omega)}(C)\) が計算され、この計算を 10 回繰り返すことで、ペア数列数 \(f_{\vartheta(\Omega_\omega)+1}(10)\) を計算している。

(新バージョン: 作者本人による2016年11月24日の更新、計算の内容はオリジナルバージョンと変わらず)

dim A[∞],B[∞]:C=9
for D=0 to 9
 for E=0 to C
  A[E]=E:B[E]=E
 next
 for F=C to 0 step -1
  C=C*C
  for G=0 to C
   if A[F]=0 | (A[F-G]<A[F] & (B[F]=0 | B[F-G]<B[F])) then H=G:G=C
  next
  if B[F]=0 then I=0 else I=A[F]-A[F-H]
  for J=1 to C*H
   A[F]=A[F-H]+I:B[F]=B[F-H]:F=F+1
  next
 next
next
print C

(オリジナルバージョン: 2014年8月18日に巨大数探索スレッドに投稿されたもの)

dim A(Infinity):dim B(Infinity):C=9
for D=0 to 9
  for E=0 to C
    A(E)=E:B(E)=E
  next
  for F=C to 0 step -1
    C=C*C
    if B(F)=0 then G=1 else G=0
    for H=0 to F*G
      if A(F-H)<A(F) or A(F)=0 then I=H:H=F*G
    next
    for J=1 to C*G*I
      A(F)=A(F-I):B(F)=B(F-I):F=F+1
    next
    G=1-G
    for K=1 to F*G
      if A(F-K)<A(F) and B(F-K)<B(F) then L=A(F)-A(F-K):M=K:K=F*G
    next
    for N=1 to C*G*M
      A(F)=A(F-M)+L:B(F)=B(F-M):F=F+1
    next
  next
next
print C

等価な C のプログラム 編集

このプログラムは Bignum Bakeoff コンテストのルールに則って、文字数を短くすることを目的として作成された。スペースと改行コードを除いて、 278 文字である。

#define A a[f]
#define B b[f]
#define M = malloc(9),
#define W while (

main(f) {
   int *a M *b M c = 9, d = 10, h, i, k;
   W d--) {
      f = h = c + 1;
      W h--) a[h] = b[h] = h;
      W f--) {
         c *= c;
         h = f + 1;
         W h--)
            (a[h] < A && (b[h] < B || !B) || A + B == 0)?
            (k = B ? A - a[h]: 0, i = f - h, h = 0): 0;
         h = f + c * i; a = realloc(a, h); b = realloc(b, h);
         W f < h) A = a[f-i] + k, B = b[f-i], f++;
      }
   }
   return c;
}

検証用のプログラム 編集

ペア数列をより一般化したバシク行列システムを計算するためのバシク行列計算機で、ペア数列の計算過程を表示することができる。また、バシク行列計算機のサイトから、C言語とBASICのプログラムをダウンロードすることが可能である。

以下が、計算例である。ここで、オリジナルのアルゴリズムでは計算のたびに n の値を2乗しているが、ここでは、n の値を n=2 のまま変えないで計算している。

対応する順序数 編集

\(\epsilon_0\) まで 編集

2行目が0の時は、原始数列システムと同じになる。すなわち、

\begin{array}{ll} (0,0) &=& 1 \\ (0,0)(0,0) &=& 2 \\ (0,0)(0,0)(0,0) &=& 3 \\ (0,0)(1,0) &=& \omega \\ (0,0)(1,0)(0,0)(0,0) &=& \omega+2 \\ (0,0)(1,0)(0,0)(1,0) &=& \omega \cdot 2 \\ (0,0)(1,0)(1,0) &=& \omega^2 \\ (0,0)(1,0)(1,0)(0,0)(1,0) &=& \omega^2+\omega \\ (0,0)(1,0)(2,0) &=& \omega^\omega \\ (0,0)(1,0)(2,0)(3,0) &=& \omega^{\omega^\omega} \\ (0,0)(1,0)(2,0)(3,0)(4,0) &=& \omega^{\omega^{\omega^\omega}} \\ \end{array} (0,0)(1,1) については、次のような基本列が得られる。ここで、\(f(n)=n\)とする。 \begin{array}{ll} (0,0)(1,1)[1] &=& (0,0)(1,0)[1] \\ (0,0)(1,1)[2] &=& (0,0)(1,0)(2,0)[2] \\ (0,0)(1,1)[3] &=& (0,0)(1,0)(2,0)(3,0)[3] \\ (0,0)(1,1)[4] &=& (0,0)(1,0)(2,0)(3,0)(4,0)[4] \\ \end{array} すなわち、\(\{\omega, \omega^\omega, \omega^{\omega^\omega}, \omega^{\omega^{\omega^\omega}}, \ldots\}\) である。したがって、 \begin{array}{ll} (0,0)(1,1) &=& \epsilon_0 \\ \end{array} となる。

\(\epsilon_1\) まで 編集

次に、(0,0)(1,1)(1,0) について考えると、 \[(0,0)(1,1)(1,0)[4] = (0,0)(1,1)(0,0)(1,1)(0,0)(1,1)(0,0)(1,1)(0,0)(1,1)[4]\] となり、次のような基本列が得られる。 \begin{array}{ll} (0,0)(1,1) &=& \epsilon_0 \\ (0,0)(1,1)(0,0)(1,1) &=& \epsilon_0 \cdot 2 \\ (0,0)(1,1)(0,0)(1,1)(0,0)(1,1) &=& \epsilon_0 \cdot 3 \\ (0,0)(1,1)(0,0)(1,1)(0,0)(1,1)(0,0)(1,1) &=& \epsilon_0 \cdot 4 \\ (0,0)(1,1)(0,0)(1,1)(0,0)(1,1)(0,0)(1,1)(0,0)(1,1) &=& \epsilon_0 \cdot 5 \\ \end{array} したがって、 \[(0,0)(1,1)(1,0) = \epsilon_0 \cdot \omega\] となる。次に、(0,0)(1,1)(1,0)(1,0) について考えると、 \[(0,0)(1,1)(1,0)(1,0)[2] = (0,0)(1,1)(1,0)(0,0)(1,1)(1,0)(0,0)(1,1)(1,0)[2]\] となり、次のような基本列が得られる。 \begin{array}{ll} (0,0)(1,1)(1,0) &=& \epsilon_0 \cdot \omega \\ (0,0)(1,1)(1,0)(0,0)(1,1)(1,0) &=& \epsilon_0 \cdot \omega \cdot 2 \\ (0,0)(1,1)(1,0)(0,0)(1,1)(1,0)(0,0)(1,1)(1,0) &=& \epsilon_0 \cdot \omega \cdot 3 \\ \end{array} このことから、 \[(0,0)(1,1)(1,0)(1,0) = \epsilon_0 \cdot \omega^2 \] となる。このように、数列の末尾に(1,0)を加える事で、順序数は\(\omega\)倍される。次に、数列の末尾に(1,0)(2,0)を加えることを考える。 \[(0,0)(1,1)(1,0)(2,0)[4] = (0,0)(1,1)(1,0)(1,0)(1,0)(1,0)(1,0)[4]\] のように、(1,0)が1つずつ追加される基本列ができるため、これは順序数を\(\omega^\omega\)倍することに相当し、 \[(0,0)(1,1)(1,0)(2,0) = \epsilon_0 \cdot \omega^\omega\] となる。

次に、(0,0)(1,1)(1,1) について考えると、 \[(0,0)(1,1)(1,1)[4] = (0,0)(1,1)(1,0)(2,1)(2,0)(3,1)(3,0)(4,1)(4,0)(5,1)[4]\] となり、次のような基本列が得られる。 \begin{array}{ll} (0,0)(1,1) &=& \epsilon_0 \\ (0,0)(1,1)(1,0)(2,1) &=& \epsilon_0^2 \\ (0,0)(1,1)(1,0)(2,1)(2,0)(3,1) &=& \epsilon_0^{\epsilon_0} \\ (0,0)(1,1)(1,0)(2,1)(2,0)(3,1)(3,0)(4,1) &=& \epsilon_0^{\epsilon_0^2} \\ (0,0)(1,1)(1,0)(2,1)(2,0)(3,1)(3,0)(4,1)(4,0)(5,1) &=& \epsilon_0^{\epsilon_0^{\epsilon_0}} \\ \end{array} このことから、 \[(0,0)(1,1)(1,1) = \epsilon_1 = \psi(1) \] となる。

フェファーマン・シュッテの順序数 = \(\Gamma_0\) まで 編集

同様に計算を進めると、次のようになる。 \begin{array}{ll} (0,0)(1,1)(2,0) &=& \epsilon_{\omega} = \psi(\omega) \\ (0,0)(1,1)(2,0)(2,0) &=& \epsilon_{\omega^2} = \psi(\omega^2) \\ (0,0)(1,1)(2,0)(3,0) &=& \epsilon_{\omega^\omega} = \psi(\omega^\omega) \\ (0,0)(1,1)(2,0)(3,1) &=& \epsilon_{\epsilon_0} = \psi(\psi(0)) \\ (0,0)(1,1)(2,0)(3,1)(4,0)(5,1) &=& \epsilon_{\epsilon_{\epsilon_0}} = \psi(\psi(\psi(0))) \\ (0,0)(1,1)(2,1) &=& \zeta_0 = \phi(2,0) = \psi(\Omega) \\ (0,0)(1,1)(2,1)(3,1) &=& \Gamma_0 = \phi(1,0,0) = \psi(\Omega^\Omega) \\ \end{array}

大ヴェブレン順序数 = \(\psi(\Omega^{\Omega^\Omega})\) まで 編集

同様に計算を進めると、次のようになる。 \begin{array}{ll} (0,0)(1,1)(2,1)(3,1)(4,0) &=& \psi(\Omega^{\Omega \cdot \omega}) \\ (0,0)(1,1)(2,1)(3,1)(4,1) &=& \psi(\Omega^{\Omega \cdot \Omega}) = \psi(\Omega^{\Omega^2}) \\ (0,0)(1,1)(2,1)(3,1)(4,1)(4,0) &=& \psi(\Omega^{\Omega^2 \cdot \omega}) \\ (0,0)(1,1)(2,1)(3,1)(4,1)(4,1) &=& \psi(\Omega^{\Omega^2 \cdot \Omega}) = \psi(\Omega^{\Omega^3}) \\ (0,0)(1,1)(2,1)(3,1)(4,1)(5,0) &=& \psi(\Omega^{\Omega^\omega}) \\ (0,0)(1,1)(2,1)(3,1)(4,1)(5,1) &=& \psi(\Omega^{\Omega^\Omega}) \\ \end{array}

\(\vartheta(\Omega_\omega)\) まで 編集

同様に計算を進めると、次のようになる。 \begin{array}{ll} (0,0)(1,1)(2,1)(3,1)(4,1)(5,1)(6,1) &=& ψ(\Omega^{\Omega^{\Omega^2}}) \\ (0,0)(1,1)(2,1)(3,1)(4,1)(5,1)(6,1)(7,1) &=& ψ(\Omega^{\Omega^{\Omega^\Omega}}) \\ (0,0)(1,1)(2,2) &=& \psi(\epsilon_{\Omega+1}) = \psi(\psi_1(0)) \\ (0,0)(1,1)(2,2)(0,0) &=& \psi(\psi_1(0))+1 \\ (0,0)(1,1)(2,2)(1,0) &=& \psi(\psi_1(0)) \omega \\ (0,0)(1,1)(2,2)(2,0) &=& \psi(\psi_1(0) \omega) \\ (0,0)(1,1)(2,2)(3,0) &=& \psi(\psi_1(\omega)) \\ (0,0)(1,1)(2,2)(3,0)(4,0) &=& \psi(\psi_1(\omega^\omega)) \\ (0,0)(1,1)(2,2)(3,0)(4,1) &=& \psi(\psi_1(\psi(0)))=\psi(\psi_1(\epsilon_0)) \\ (0,0)(1,1)(2,2)(3,1) &=& \psi(\psi_1(\Omega)) \\ (0,0)(1,1)(2,2)(3,2) &=& \psi(\psi_1(\Omega_2)) \\ (0,0)(1,1)(2,2)(3,3) &=& \psi(\psi_1(\psi_2(0))) \\ (0,0)(1,1)(2,2)(3,3)(4,4) &=& \psi(\psi_1(\psi_2(\psi_3(0)))) \\ (0,0)(1,1)(2,2)(3,3)...(9,9) &=& \psi(\psi_1(\psi_2(\psi_3(\psi_4(\psi_5(\psi_6(\psi_7(\psi_8(0))))))))) \\ \end{array}

すなわち、\(Pair(n) = (0,0)(1,1) \ldots (n,n)[n]\) とすると、 \[Pair(n) \approx f_{\vartheta(\Omega_\omega)}(n)\] となる。

出典 編集

  1. 作者のFandomアカウント
  2. 巨大数探索スレッド10: 初版の定義
  3. 巨大数探索スレッド10: 修正版の定義
  4. 巨大数探索スレッド10: 計算
  5. 巨大数論

関連項目 編集

広告ブロッカーが検出されました。


広告収入で運営されている無料サイトWikiaでは、このたび広告ブロッカーをご利用の方向けの変更が加わりました。

広告ブロッカーが改変されている場合、Wikiaにアクセスしていただくことができなくなっています。カスタム広告ブロッカーを解除してご利用ください。

FANDOMでも見てみる

おまかせWiki