バードの配列表記

提供: testwiki
ナビゲーションに移動 検索に移動

テンプレート:出典の明記

バードの配列表記(バードのはいれつひょうき)とは、クリス・バード(英:Chris Bird)によって考案された巨大数の表記法である。これはBEAFの拡張配列表記の拡張で、歴史的にも定義的にもBEAFと同族である。[1]

線形配列

線形配列では、バードの配列表記はBEAFと同じである。

Rule 1-1.{a}=a

Rule 1-2.{a,b}=ab

Rule 2.{#,1}={#}

Rule 3.{a,1#}=a

Rule 4.{a,b,1,,1d,c,#}={a,,ad+1,{a,b1,1,,1d,c,#},c1,#}

Rule 5.{a,b,c#}={a,{a,b1,c,#},c1#}

ただし#は配列の変わらない部分を指す。

線形配列では、急増加関数で{a,,aa}fωω(a)と近似される。[2]

多次元配列

多次元配列では、配列の一部を´a<c>b'と表記する。線形配列と同様、BEAFと同じである。

Rule A1.´a<0>b'=´a'

Rule A2.´a<c>1'=´a'

Rule A3.´a<c>b'=´a<c1>b[c]a<c>(b1)'

Rule M1.{a,b}=ab

Rule M2.{#[m]1[n]#}={#[n]#}(m<n)(これは上記のRule 2も含む)

Rule M3.{a,1#}=a

Rule M4.{a,b[m1]1[m2]1[mx]c#}={am1b[m1]am2b[m2]amxb[mx](c1)#}

Rule M5.{a,b[m1]1[m2]1[mx]1,1,,1,1,c#}={am1b[m1]am2b[m2]amxb[mx]a,a,,1,1,c1#}

Rule M6.{a,b,1,,1d,c,#}={a,,ad+1,{a,b1,1,,1d,c,#},c1,#}

Rule M7.{a,b,c#}={a,{a,b1,c,#},c1#}

この配列は[m]を次元セパレータとして用いている。

超次元配列

超次元配列では、括弧が[1,1]のようになる。Rule M1~M7は、[mn][mn#]に置き換えること以外は同じで、Rule A3Rule A5となり、新しいRule A3Rule A4が追加される。

Rule A3.`a<#[A]1[B]#>b<mi fromhbox="1">'</mi>=`<#[B]#>b<mi fromhbox="1">'</mi>(A<B)

Rule A4.`a0[A1]1[A2]1[An]c#b<mi fromhbox="1">'</mi>=`abA11b[A1]bA21b[A2]bAn1b[An]c1#b<mi fromhbox="1">'</mi>

AnとBは配列で、Ai-1 は Ai の最初の引数から1を引いて、残りは等しい配列である。

二つのセパレータの順序付け

Rule A3Rule M2はよく似ているため、どのセパレーターがより高いランクなのか決定する必要がある。最初に、配列が何重にネストされたかを表す関数をLev(A)と表記する。例えば、A={3,3[1[1[2]2]2]2}とすると、Lev(A)=3となる。つまり[2][1[2]2]にネストされていて、それも[1[1[2]2]2]にネストされている。もう一つの関数、Num(H,A)を、配列A中のセパレータ[H]の個数と定義する。例えば、A={3,3[1[2]1[2]1[2]2]2]2} なら、 Num(2,A)=3

[A][B]のどちらが優位なのかを決定する方法は、次のように表現される。

  • Step 1. [A1]=[A],[A2]=[A1],[B1]=[B],[B2]=[B1]とする。
  • Step 2.もしLev(A)>Lev(B)なら、[A]>[B]Lev(A)<Lev(B)なら、[A]<[B]とする。 もしLev(A)=Lev(B)>0なら、Step 3へ、それ以外はStep 6へ。
  • Step 3.[A*][B*]をそれぞれ配列[A2][B2]の最高位のセパレータとする。 もし[A*]>[B*]なら[A]>[B][A*]<[B*]なら[A]<[B]、それ以外は[H]=[A*]=[B*]としStep 4へ。
  • Step 4.もしNum(H,A2)>Num(H,B2)なら、[A]>[B]Num(H,A2)<Num(H,B2)なら、[A]<[B]、それ以外はStep 5へ。
  • Step 5. 文字列A2B2から、[H]のセパレータとその前の引数を削除する。
  • Step 6.これまでのルールで、A2B2[a][b](abは単一の整数)の形になっているはずである。 もし[a]<[b]なら[A]<[B][a]>[b]なら[A]>[B]、 それ以外はStep 7へ。
  • Step 7.A1B1の最後の引数とその前のセパレータをすべて消去する。もしA1B1がどちらも空ならば[A]=[B]、 それ以外はStep 2に戻る。[2]

超ネスト配列

ネストされた超ネスト配列

出典

関連項目